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.

UCD9090A: What formatting is needed when sending raw I2C commands?

Part Number: UCD9090A
Other Parts Discussed in Thread: UCD90910, UCD90160, UCD9090

I’ve looked at the User’s Guide/Command Reference and the TI PMBus spec and cannot find how the command is supposed to be formatted.  I want to be able to read and set the GPIO pins on the device.  To my understanding from looking at the documentation I need the GPIO_SELECT and GPIO_CONFIG commands to first select the channel I want to read/set (GPIO_SELECT) then perform the actual read and set (GPIO CONFIG).  I know the GPIO_SELECT command is (0xFA) and the GPIO_CONFIG command is (0xFB).  So in order to select a specific pin ID for GPIO_SELECT do I send the command first then another hex number with what I want the pin ID to be and for GPIO_CONFIG do I send the command and then a new hex number to replace just the OUT_ENABLE

  • Hello

    UCD9090A follows SMBus protocol, which is defined at section 5.5 of http://smbus.org/specs/smbus20.pdf . Please refer table 3 of http://www.ti.com/lit/ug/slvu352g/slvu352g.pdf to see the protocol of each individual command.

    Both GPIO_SELECT and GPIO_CONFIG are write/read byte command.

    0xFA command is to select the target IO, the payload is the Pin ID defined in the Table 14 of the above document.

    0xFB command is to read the IO status.

    For example the GPIO8, the pin is 3

    The SW shall write 0xFA command with 3 as payload, then issue 0xFB command to read the GPIO5 status.

    If you want to change the output of the given pin, you need change the out_value. OUT_ENABLE is to set the pin as input or output.

    Regards

    Yihe

  • Yihe,

    This is very helpful thank you!  A few follow up questions:

    If GPIO8 is pin 3 and pinID 3 is used as the payload for the GPIO_SELCT command then GPIO_CONFIG is used to read the GPIO's status why does that give me the status of GPIO5?  Does the Pin Number come into play somehow?

    Table 14 in the above user's guide is for UCD9012x, UCD90160, and UCD90910 but I am using a UCD9090A.  Table 15 says it's for UCD9090 should I use table 14 or 15 to gab the pinIDs?

    Let me know, appreciate the help!

    Thank you for your time,

    Erik Thysse

  • Hello

    PID ID has nothing to do with the pin number listed in the data sheet. GPIO8 has Pin ID 3. it shall not relate to GPIO5. How do you know it is from GPIO5?

    UCD9090A shall use Table 15.

    Regards

    Yihe

  • Yihe,

    Maybe I misunderstood, from what you said in your initial response below it sounded like if I sent a payload of 3 (PinID 3, GPIO8) then used the GPIO_CONFIG command, I would then be reading the status of GPIO5.  To my understanding now if I do the below I should get the status of GPIO8.  Thank you for clearing this up.

    "

    For example the GPIO8, the pin is 3

    The SW shall write 0xFA command with 3 as payload, then issue 0xFB command to read the GPIO5 status.

    "

    I appreciate the help!

    Thank you for your time,

    Erik Thysse