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.

TPS65987D: Address 0x38 does not work for I2C2

Part Number: TPS65987D
Other Parts Discussed in Thread: TPS65987, TPS65988

Hi Team,

One of our customer using TPS65987DDH in their design. Having some issues and need some help. Can you please provide some insight on the following:

1. We use I2C port 2 (I2C2).  We can only communicate using address 0x20 which contradicts the datasheet.  Address 0x38 does not work for us on port 2.

2. In "Hardware Design Guideline for TPS65987" (slva888c) table 1-1 indicates that port I2C1 should be connected to a microcontroller rather than port I2C2.  Would you recommend I change the design to I2C1?  What are the implications of using I2C2?  Is this related to the address issue?

3. What is the best way to determine that the PD controller has fully booted?  We run into a start up issue where the MCU tries to communicate with the TPS65987 before it is ready when booting off of the internal battery.

4. Attached is the schematic and pjt file. We are using application tool v6.1.1 Can you help to check if there is any wrong settings that might be related to the I2C2 address issue we observed?

Look forward to your feedback. Thanks in advance.

TPS65987DDH_sink_highest_power_v4.pjt

Thanks and regards,

Don

  • Hi,

    1. Check your configuration in the GUI. Here is an excerpt from the host interface technical reference manual.

    For I2C1, Port1 and Port2 addresses are determined by the voltage sensed at the ADCIN2 terminal. The voltage at ADCIN2 is generated by a resistor divider from LDO_3V3 to ground. By changing the divider ratio, four pairs of slave addresses are possible. Each pair of slave addresses corresponds to Port 1 and Port 2 slave addresses. By default, I2C2 Port1 and Port2 addresses are unique but fixed. Refer to the TPS65988 Datasheet for further details. If TBTControllerType is set to 11b in the 0x27 Global System Configuration Register, then I2C2 Port1 and Port2 addresses are set to the same values as the I2C1 Port1 and Port2 addresses

    So the I2C2 address is fixed to the value shown in the datasheet. If you are reading 0x20, then you have the TBT controller set in the GUI to ICL

    2. No you should be fine using I2C2. Using I2C1 allows you the flexibility of different I2C addresses but you can have full functionality using I2C2

    3. Use the I2C IRQ events alongside specific register reads to determine when the PD controller is up and running. Registers 0x14 - 0x19 are the interrupt registers that can be programmed, read, and cleared to determine what is occurring during run time. There is a specific IRQ event called PatchLoaded. This indicates that the configuration has been loaded into the PD controller. Can then verify that the device has entered into APP mode in register 0x03

     4. I do not see an external EEPROM. How are you loading the configuration onto the PD controller?

  • Hi Adam,

    Thanks for the quick reply. Let me share with your comments with our customer and verify the TBTControllerType settings to ensure it using the 'default' for 0x38 addressing.

    Customer initially consider using the EP to load the patch (for cost saving reason), but later found it is too slow in getting ready for every power cycling. They decided to use the external EEPROM in the end.

    Thanks and regards,

    Don