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.

UCD3138CC64EVM-030: Can't read anything. Only reads 255

Part Number: UCD3138CC64EVM-030

Hello. I am trying to communicate with this evaluation board but whenever I try to read something I can only read 255. I am using I2C to communicate. Thanks in advance. By the way there is no problem when I use TI's USB adapter.

  • I suspect that you are not following the PMBus read protocol.  It's also an I2C read protocol, of course, but the I2C supports a simple read that is just:

    - Send Address byte with read/write bit set.

    - Get data from slave.

    The PMBus needs to send a command along with the address, so it sends this:

     - Send address byte with read/write bit cleared - so its a write message

    - Send command byte

    - Send repeated start - this isn't a byte, but rather another start signal on the PMBus

     - Send address byte with read/write bit set.  

    - Get data from slave.

    This message format is also supported by the I2C spec, it is called the combined format.

    If you're already using the correct format, and it's not working, it would be helpful to see a scope shot, and we can go from there.  

  • I follow the PMBus read protocol according to version 1.2. I wrote slave and master library for PMBus and both worked in my trials. But here is my oscilloscope shot with UCD

    First I saw this which is a big question for me.And the following shots below. My slave address is 89d and command is 0x21h. The data I should have seen is 0x38D1.

  • It looks like your clock edges are very very close to the edges on your data.  If the data and clock edges are very close, the UCD may interpret that as a start or a stop.  If you have a firmware I2C interface on the master, you may want to put more delay between the data edge and the rising clock edge, and between the falling clock edge and the data edge.  Generally when you get all FFs back from the UCD, it means that it has gotten a start or a stop indication, and stopped transmitting data.  

  • I tried to change the duty cycle of my clock but it didn't work. Also I checked my clock and data lines closer but it looked normal to me. But I added 30us delay after sending slave address it worked.

  • OK, I'll try to close the thread then.