This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPS6521905: Issue with changing the I2C Default address

Part Number: TPS6521905
Other Parts Discussed in Thread: TPS65219, , USB2ANY

Tool/software:

Hello,

I am using TPS65219 EVM-SKT, and I am using the standalone TPS65219 Gui for windows.  Below are the steps I go thru, but the new address does not get saved.

When Gui connects to EVM-SKT, I press the EN_PB , and I2C address is 0x30 ( Addr 0x26 , 0x30 ).  On the Register Map of the Gui, I select "Deferred Write", and for addr 0x26 I input 31, and for addr 0x34 I input (Custom Program CMD in the drop down ) 0x0A.  Then I click on Write All Registers.    The Gui loses connection to EVM-SKT.  After recycling power, the gui connects but the address is 0x30.

Or I do the same above process from initialized state with the same results.

Please provide step by step instructions for changing the I2C address as I am planning to use two TPS6521905 devices.

Thank You.

  • Hi Ahmad,

    Apologies for the delay, we were closed Monday for US national holiday. We'll work to reply today. 

    Regards,

    Katie

  • Hi Ahmad,

    Please confirm you are using TPS6521905 device when you tried this.

    Please refer to the below document page23 for NVM re-programming. Please follow the steps outlined in the programming tab for the new NVM setting to take effect.

    https://www.ti.com/lit/ug/slvucm5/slvucm5.pdf?ts=1737482456232&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTPS6521905

    Sathish

  • Hello Sathish,

    Thank you for your reply.  

    I have been following the TPS65219 programming guide, and I verified that inside the EVM-SKT board there is TPS6521905 PMIC.

    1. The programming guide does not specify what state PMIC should be in  to change the I2C address

    2. I have tried in Initialized , and ON States

    3. I assume I have to select " Deferred Write" in the upper right corner on the Register Map tab, If not, the Gui loses connection to the board, and I am not able to write 0x0A in Register 0x34. TPS6521905_I2C_ADDR_CHANGE.docx

    In the attached doc, you would see three images, initial I2C address/content, the new address , and finally after writing the two resisters to NVM.

    Again, below are the steps I take:

    1. Power the board, Press the PB to put the PMIC in On state.  Read all registers.

    2. In the upper right corner of the register map tab, change Immediate Write to Deferred Write

    3. Write 0x31 as the new I2C address, and see the 0x26 register is updated to 0xB1, ( was 0xB0 before the change)

    4. Click on address 0x34, and in field View for USER_NVM_CMD[3:0] , from the drop down Select CUST_PROG_CMD

    5. On the Register Map tab, click on Write all registers, or go to NVM Programming Tab, and click on "NVM Programming".  Gui loses connection to the board.  Can not establish connection by in the gui by clicking the lower left Connect/disconnection icon.

    6. Recycle power , and Gui connects , read all registers, and I2C address reverts back to 30.

    Are you able to see any issues with the above detail steps?  

    My other question is:  If I have two PMIC's with different I2C addresses, how can I direct the Gui to communicate to each device while both devices are powered up and have different I2C addresses?

    I am waiting for your reply to solve this problem.

    Thank You.

  • Hi Ahmad,

    Thank you for the detailed notes. I think i know the problem what is happening here.

    According to the Register 0x26 description, whenever you write to this register to change the device address it has immediate reaction, meaning all subsequent read/writes will use the new device address for communication.

    So, i suggest not to deferred write and write to all the registers changes that needs to be done and write to 0x26 with immediate write and perform NVM programming.

    Power cycle the device and check if the device starts communicating with new device address.

    Regarding 2 PMIC communication, the communication always starts with device address so you can only communicate to 1 device at a time even though multiple device are on the same bus.

    Sathish 

  • Ahmad,

    I noticed you were doing this from the register map tab.

    To make it easy i would ask you to follow the steps in the NVM programming tab, this would make the process seamless.

    Sathish

  • Hello Sathish,

    To define my current setup:  I only have one EVM-SKT powered by USB, no load on any output.  Our plan is to use two PMIC's on our card, and connect our micro to the I2C bus of the two PMIC , each PMIC having a different address.  But for this test, I am only using EVM-SKT with one TPS6521905 in it.  

    Per your suggestion of using immediate write, I wrote immediate a new address (0x31) to register 0x26 [6:0] in the register Map Tab of the Gui, and it immediately loses connection to the EVM-SKT.  ( Same behavior with TPS65215EVM).  After power recycle, the content is 0x30.

    For your other suggestion of using NVM Programming Tab of the Gui, I have to set the Write as Deferred ( if not the Gui loses connection) , change the address in the register Map tab, then navigate to NVM Programming tab, Recycle Power , close/reopen the Gui, Gui connects on the default address of 0x30.

    Please grab an EVM board and try it yourself, or we can set up a Teams Call and I share my screen with you. ( I think our local TI FAE is going to arrange this call).

    But once I can successfully assign a new address to one of the PMICs, I plan to use the TPS65219 Gui , and connect two EVM-SKT boards to 2 USB ports of the PC.  Does the Gui have the ability to communicate to one device at a time to the EVM-SKT and PMIC?  Where in the Gui do you change or direct the Gui to talk to one EVM-SKT or the other?

    Thank you. 

  • Ahmad,

    I actually tried it my self and i was able to change the device address from 0x30 to 0x31.

    As explained before based on the register 0x26 description, the GUI has to be in deferred write mode (other wise it will loose communication as expected).

    After power up in active state, go to NVM programming tab, click on step 1 followed by step 2 then go to register map tab and change register 0x26 from 0x30 to 0x31 then go back to NVM programming tab and click on step 4 (NVM programming). Do not try to read and register after you change the register 0x26 contents.

    Power cycle and now you can communicate to the device using address 0x31.

    Try this before our 1pm meeting and let me know if you are able to successfully program the device.

    Sathish

  • Hello Sathish,

    Yesterday, you said the Write has to be  "Immediate" .

    I tried your today's suggestions.  Still, can not save the new address .

    You said you actually tried it, did you close the Gui, turn the board off, restart the Gui, bring up the board in active state, and read the I2C address register?  I get 0xB0 again.

    Thanks,

    Ahmad

  • Ahmad,

    I am currently investigating the problem. As I mentioned during the call the GUI has no I2C address change option and it is written to communicate with a fixed address of 0x30, because of that we are not able to program a different address using NVM burn.

    Regarding other question of 2 PMICs with different I2C address on the same bus, when there is a option to change I2C address in the GUI, you can change it to either 0x30 or 0x31 and communicate with different PMIC.

    Sathish

  • Stathish,

    Will you make update to the Gui so user will be able to change the I2C address from the standalone Gui?

    Thanks,

  • Ahmad,

    Sure and i already started working with our s/w team for the needed update. We are testing it before releasing it to the public and it could take up to a week for the release. But, i assure that the NVM burn to change I2C address works and i verified using USB2ANY explorer. I am not sure if you want to try that and if you have access to download that executable, let me know.

    Or, if you have a way to communicate with the device using I2C you can put the device into Active state and follow the I2C commands on NVM programming tab to burn new I2C address.

    Sathish

  • Hi Sathish,

    I messaged Javier today that the GUI 2.0 update that came in today actually broke setting new voltages in NVM.  I had to revert back to version 1.0.1..

    While you and your team updating the NVM burn process for I2C address, I want to point to another sticky item, and that is setting the PMIC to Multi_PMIC mode.   On couple of the boards, I managed to change it right after getting to active state.  Please let me know if you can try that, you need to monitor the GPIO test point on DVM or scope.  I had to to try many times to get it in the multi-PMIC mode.

    As far as the fix for I2C address and new executable, I wait until the official release.  

    Thanks, 

  • Hi Ahmad,

    Sorry for all the trouble but i confirmed with our s/w team that Version2.0 is in wip (shouldn't have been on TI.com) as they are making the necessary changes.

    Regarding Multi_PMIC, as described in the datasheet it needs to be done in Initialize state (click on step 1 on NVM programming page).

    Sathish

  • Hi Ahmad,

    Thank you for the wait while we made the necessary changes to the GUI for programming different I2C address of the device.

    As i mentioned during our call, the GUI was missing a filed for I2C address hence the issue. Now, we fixed it and please download the latest GUI version from the below location.

    https://dev.ti.com/gallery/view/PMIC/TPS65219_GUI/ver/1.0.2/

    Here are the steps for NVM programming of the I2C address.

    1. Power up the device and go to Active state

    2. Set the register write on Register map page to immediate write (default option)

    3. Go to NVM programming tab and follow steps #1 and #2

    4. For step#3, go to Configuration - NVM fields tab and under PMIC status, change Register Map I2C Addr to a new value using drop down (for ex: 0x31)

    5. After above step GUI will loose communication and it is expected behavior.

    6. Next, under the top row menu Options -> Device I2C Address, change it to the new device address set in above step 4 (0x31)

    7. This will make GUI communication established.

    8. As the final step go to NC< programming tab and click on NVM PROGRAMMING button. This will burn the new value into the device.

    9. Power cycle the device

    10. Once the hardware connection to GUI is established, go to top row menu Options -> Device I2C Address and change it to new value (0x31) to start communicating to the device using new address.

    Please try it out and let me know if you if the burn process is successful or encountered any issues.

    Sathish

  • Hello,

    Using TPS65219_Gui_1.0.2 , the manual process outlined above works.   In production, How would the I2C address change work when all registers are loaded by .CSV or .JSON file?

  • Hi Ahmad,

    Please note that writing to I2C address register has an immediate effect.

    So, i would suggest to write to all the desired NVM registers and final write to the I2C address register to a new value and then change the device address to the new address and complete the NVM programming process.

    Sathish