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.

DS90UB933-Q1: I cannot access DS90UB933 registers via its I2C Bus

Part Number: DS90UB933-Q1
Other Parts Discussed in Thread: TCA9406

Hi, I use a fpga to connect to DS90UB933-Q1. The system works well before, and I never access the registers of DS90UB933 via I2C Bus, I use the default configuration. Now I want to config the device via I2C, but it does not ack!

According to the datasheet, the device address is 0x58 (In my system, the ID[x] pin is attached to ground), and I confirm my I2C program is well because there's another slave on the bus, and I can access that slave normally. When I send address command, I didn't receive one ack signal on I2C_SDA, as if the DS90UB933 cannot identify the command, but I really send a 0x58 address.

Someone can help me? I has been confused about this problem long time. I will be gratefull if you can help me resolve this.

  • Hello,

    Is there any chance that your software wants to use the 7 bit address instead of the 8 bit address? Can you try 0x2C?

    Best Regards,

    Casey 

  • Hello,

    Thank you for replying this! The 7-bit address is 0x58, corresponding to 0xb0 for 8-bit address. Displaying in I2C Bus behavior, the read command is:

    start_bit, 7-bit address(7'b1011000, as 0x58), wr_or_rd bit (1'b0)

    That should be correct bus behavior.

    If I try address 0x2c, corresponding to 0x58 for 8-bit address, the bus behavior is as following:

    start_bit, 7-bit address(7'b0101100, as 0x2c), wr_or_rd bit (1'b0)

    And this will be different from description in datasheet.

    I have try 0x2c, it stills not works. I also observe i2c_sda and i2c_scl these two pins wave using oscilloscope, and finding the host(fpga) controlling in the two pins is correct. Except for I2C access, the DS90UB933 works well in other aspect. So I'm so confused.

    Could you help me review this problem? Thank you!

    BTW, the phenomenon is that DS90UB933-Q1 doesn't ack after the host send address command.

    Best Regards!

  • Hello,

    Are you communicating directly to the 933 device via local I2C? Or is this via the deserilalizer device through the back channel?

    Best Regards,

    Casey 

  • Hi,

    I do communicate directly to the DS90UB933 via local I2C, not using deserializer device. Is this not allowed?

    Best Regards!

  • Hello,

    No it is allowed, I was just checking because I have not seen a situation like yours before where local I2C does not work. Can you please send a schematic for your device so I can review?

    Best Regards,

    Casey 

  • Hi Casey,

    I attach my 933 schematic here. Thank you for helping me review this!

    Best Regards!DS90UB933_schematic.pdf

  • Hello,

    There are two separate I2C level shifters connected to the same bus; I'm not sure why but I believe this is the cause of the issue. Both TCA9406 and SGM4553 should not be used on the same bus as I think they will cause contention. 

    Best Regards,

    Casey 

  • Hi Casey,

    I export the PDF of the schematic yesterday and didn't review the content, so I didn't find that. It is strange why two I2C level shifters appear at the same time. In fact, there's only one level shifter on my circuit. Two slaves mount on the I2C bus, one is DS90UB933 and another is light sensor, their relationship is as following:

    I can access lignt sendor via I2C bus successfully. I now attach the new schematic here, with only one I2C bus level shifter, In accordance with the actual situation.

    SCHEMATIC1 _ DS90UB933.pdf

    I am grateful that you have been spending time on this. Thank you sincerely!

    Best Regards!

  • Hello,

    The only thing I can think is that it has something to do with the level shifter but I'm not sure why. Other than that I can not think of any other reason that you would be having this problem. Just for test, can you try removing the level shifter?

    Best Regards,

    Casey 

  • Hello,

    Were you able to test removing the level shifter?

    Thanks,

    Casey 

  • Hi Casey,

    It's just as you think, the level shifter affects the I2C bus accessing. I take out the level shifter, and can access 933 sucessfully. I will check how level shifter causes the problem.

    You help me resolve this confusing problem. Thank you very much!

    Best Regards!