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.

DS90UB964 访问多个DS90ub933 i2c 从设备地址

Other Parts Discussed in Thread: DS90UB964-Q1

TI工程师您好

我们使用一个DS90UB96 连接4路DS90UB933, 目前不知道该如何同时访问这4路933,4路933 i2c地址相同。

我参考ds90ub964-q1文档的41页8.53章节。

WriteI2C(0x58,0x58) # enable pass throu
WriteI2C(0x5c,0x18) # "SER_ALIAS_ID"
WriteI2C(0x5d,0x60) # "SlaveID[0]"
WriteI2C(0x65,0x60) # "SlaveAlias[0]"

我理解SER_ALIAS_ID的0x18是代表soc能访问的933的i2c地址, SlaveAlias[0]的0x60是代表soc能访问sensor的i2c地址。

例如同时访问多路933设备+多路摄像头,应该这样设置

WriteI2C(0x58,0x58) 
WriteI2C(SER_ALIAS_ID0,0x59) 
WriteI2C(SlaveID0,0x48) 
WriteI2C(SlaveAlias0,0x49) 

WriteI2C(SER_ALIAS_ID1,0x60) 
WriteI2C(SlaveID1,0x48) 
WriteI2C(SlaveAlias1,0x50) 

WriteI2C(SER_ALIAS_ID2,0x61) 
WriteI2C(SlaveID2,0x48) 
WriteI2C(SlaveAlias2,0x51) 

WriteI2C(SER_ALIAS_ID3,0x62) 
WriteI2C(SlaveID3,0x48) 
WriteI2C(SlaveAlias3,0x52) 

但是看ds90ub964-q1文档76页的寄存器说明,但是看寄存器说明只有一组SER_ALIAS_ID寄存器。所以我感觉我理解的还是不对。

请帮忙看下,像我这种接法,寄存器该如何配置

  • 您好,可以先通过配置寄存器0X4C,选择需要配置的port,就像8.5.4.1 Code Example to Enable Interrupts这个例子一样,比如配置0x4C为0x01, enable port 0,然后按照您上面的例子配置slave ID和slave Alias ID。 然后再配置0x4C为0x12, enable port 1............直到enable port 4为止。
  • 感谢您的回复。

    就是这个寄存器其实是个复用的,通过0x4c配置完,各路就都是通的了?

  • 我的理解是这样的,如果只enable port 0 ,那么就只能和接port 0的UB933 或remote sensor
    通信。 需要四个port 都使能的话,就像8.5.4.1的example一样,对每个port进行enable并配置。
    因为我这边没有寄存器例子可以参考,您可以配置下,如果有问题,请随时反馈。