DS90UB954配合DS90UB913/DS90UB953使用I2C识别不到913

我们现在使用DS90UB954配合DS90UB913/DS90UB953,954要兼容913,953。所以我就使用了RAW 10数据格式。

954已经被识别到,但是i2c访问913寄存器报NACK错误。

GPIO 0,1,2作为输入透传到913。3,4,5,6作为本地输出。相应954寄存器配置如下

Reg[0x00]:0x60 Reg[0x01]:0x00 Reg[0x02]:0x1e Reg[0x03]:0x20 Reg[0x04]:0xd3 Reg[0x05]:0x01 Reg[0x06]:0x00 Reg[0x07]:0xfe Reg[0x08]:0x1e
Reg[0x09]:0x1c Reg[0x0a]:0x78 Reg[0x0b]:0x78 Reg[0x0c]:0x81 Reg[0x0d]:0x09 Reg[0x0e]:0x00 Reg[0x0f]:0x07 Reg[0x10]:0x00
Reg[0x11]:0x00 Reg[0x12]:0x00 Reg[0x13]:0x81 Reg[0x14]:0x13 Reg[0x15]:0x13 Reg[0x16]:0x13 Reg[0x17]:0x00 Reg[0x18]:0x00
Reg[0x19]:0x00 Reg[0x1a]:0x00 Reg[0x1b]:0x00 Reg[0x1c]:0x00 Reg[0x1d]:0x00 Reg[0x1e]:0x04 Reg[0x1f]:0x02 Reg[0x20]:0x30
Reg[0x21]:0x01 Reg[0x22]:0x00 Reg[0x23]:0x00 Reg[0x24]:0x00 Reg[0x25]:0x00 Reg[0x26]:0x00 Reg[0x27]:0x00 Reg[0x28]:0x00
Reg[0x29]:0x00 Reg[0x2a]:0x00 Reg[0x2b]:0x00 Reg[0x2c]:0x00 Reg[0x2d]:0x00 Reg[0x33]:0x00 Reg[0x34]:0x40 Reg[0x35]:0x00
Reg[0x36]:0x00 Reg[0x37]:0x00 Reg[0x39]:0x00 Reg[0x3a]:0x00 Reg[0x41]:0xa7 Reg[0x42]:0x71 Reg[0x43]:0x01 Reg[0x4a]:0x00
Reg[0x4b]:0x12 Reg[0x4c]:0x01 Reg[0x4d]:0x00 Reg[0x4e]:0x02 Reg[0x4f]:0x00 Reg[0x50]:0x00 Reg[0x51]:0x00 Reg[0x52]:0x00
Reg[0x53]:0x00 Reg[0x54]:0x00 Reg[0x55]:0x00 Reg[0x56]:0x00 Reg[0x57]:0x00 Reg[0x58]:0x58 Reg[0x59]:0x00 Reg[0x52]:0x00
Reg[0x53]:0x00 Reg[0x54]:0x00 Reg[0x55]:0x00 Reg[0x56]:0x00 Reg[0x57]:0x00 Reg[0x58]:0x58 Reg[0x59]:0x00 Reg[0x5a]:0x00
Reg[0x5b]:0x00 Reg[0x5c]:0xb0 Reg[0x5d]:0x34 Reg[0x5e]:0x00 Reg[0x5f]:0x00 Reg[0x60]:0x00 Reg[0x61]:0x00 Reg[0x62]:0x00
Reg[0x63]:0x00 Reg[0x64]:0x00 Reg[0x65]:0x34 Reg[0x66]:0x00 Reg[0x67]:0x00 Reg[0x68]:0x00 Reg[0x69]:0x00 Reg[0x6a]:0x00
Reg[0x6b]:0x00 Reg[0x6c]:0x00 Reg[0x6d]:0x7f Reg[0x6e]:0x88 Reg[0x6f]:0x88 Reg[0x70]:0x2b Reg[0x71]:0x2c Reg[0x72]:0xe4
Reg[0x73]:0x00 Reg[0x74]:0x00 Reg[0x75]:0x00 Reg[0x76]:0x00 Reg[0x77]:0xc5 Reg[0x78]:0x00 Reg[0x79]:0x01 Reg[0x7a]:0x00
Reg[0x7b]:0x00 Reg[0x7c]:0x20 Reg[0x7d]:0x00 Reg[0x7e]:0x00 Reg[0x7f]:0x00 Reg[0xa5]:0x18 Reg[0xb0]:0x08 Reg[0xb1]:0x14
Reg[0xb2]:0x3f Reg[0xb3]:0x08 Reg[0xb8]:0x8f Reg[0xb9]:0x33 Reg[0xba]:0x83 Reg[0xbc]:0x80 Reg[0xbe]:0x00 Reg[0xd0]:0x00
Reg[0xd2]:0x94 Reg[0xd3]:0x3f Reg[0xd4]:0x60 Reg[0xd5]:0xf2 Reg[0xd8]:0x00 Reg[0xd9]:0x00 Reg[0xda]:0x00 Reg[0xdb]:0x00
Reg[0xdc]:0x00 Reg[0xdd]:0x00 Reg[0xde]:0x00 Reg[0xdf]:0x00 Reg[0xf0]:0x5f Reg[0xf1]:0x55 Reg[0xf2]:0x42 Reg[0xf3]:0x39
Reg[0xf4]:0x35 Reg[0xf5]:0x34 Reg[0xf8]:0x00 Reg[0xf9]:0x00

  • I2C 识别不到913 的话,主要看两个寄存器,954的0X5B, SER ID, 而913 的Device ID为0X58,那么即为0XB0(0X58<<1).
    其次就是954的0X5C,SER Alias这个寄存器,这个寄存器目的是为了host 与remote SER进行通信,因此SER Alias我们可以分配为0X59, 0X59<<1的话即为0XB2。 修改这两个寄存器看看,是否能识别到913 呢?
  • 应该是DS90UB954与DS90UB913信号电平不兼容的问题。
    DS90UB954 FPD-LINK III输入管脚能够识别的电压范围是:共模电压1.2V,AC信号单端输入时至少40mV,差分输入时至少80mV。而DS90UB913输出信号电压范围是:单端是320mV-412mV,差分时是640mV-824mV。
    DS90UB954与DS90UB913输入输出信号电气特性请在数据手册中电气特性部分查看。
  • 回复 Kailyn Chen:

    是由于提供913电源的GPIO开关没配置导致的。谢谢啦

  • 回复 Amy Luo:

    是由于提供913电源的GPIO开关没配置导致的。谢谢啦
  • 回复 user4400771:

    这两个芯片FPD-LINK III 接口电平不兼容,我想问一下,配合DS90UB913使用时DS90UB954能够正常解串吗
  • 回复 Amy Luo:

    兼容的,都是1.8V,解串我还没调通,954没输出。
  • 回复 user4400771:

    我遇到了你同样的问题,请问你是怎么配置的呢
  • 回复 Kailyn Chen:

    您好,我也遇到了同样的问题,我的SER ID为设备自动获取0xB4,我的SER Alias设置为0xB6,能自动获取到SER ID说明913设备是正常工作的对吧,我的slave ID 0 设置的0x20 , 但是我探测设备没有找到相应地址的设备(0x30是我的954地址),我期望探测到913设备,和摄像头设备该怎么操作呢。
    nvidia@tegra-ubuntu:~/Wl_Work$ sudo i2cdetect -y -r 2
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: 30 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    寄存器配置如下

    nvidia@tegra-ubuntu:~/Wl_Work$ sudo i2cdump -f -y 2 0x30
    No size specified (using byte-data access)
    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00: 60 00 3e 20 d3 01 00 fe 1c 10 7a 7a bf 09 08 7f `.> ??.???zz????
    10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 02 ..............??
    20: 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0?..............
    30: 00 00 00 00 40 00 00 00 00 00 00 01 14 6f 00 40 ....@......??o.@
    40: 00 a7 71 01 00 00 00 00 00 00 00 12 01 17 ed 5e .?q?.......????^
    50: 80 00 00 00 00 ff ff 00 58 00 00 b4 b6 20 00 00 ?.......X..?? ..
    60: 00 00 00 00 00 20 00 00 00 00 00 00 00 7c 88 88 ..... .......|??
    70: 2b 2c e4 00 08 c9 72 c5 00 01 0f ff 20 00 00 00 +,?.??r?.??. ...
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    a0: 02 0f 00 00 08 18 00 00 00 00 00 00 00 00 00 00 ??..??..........
    b0: 08 14 3f 08 25 00 18 00 8c 33 83 74 80 00 00 00 ????%.?.?3?t?...
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    d0: 00 43 94 03 60 f2 00 00 00 00 04 6b 00 00 00 00 .C??`?....?k....
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    f0: 5f 55 42 39 35 34 00 00 00 00 00 00 00 00 00 00 _UB954..........

    我的配置脚本如下:
    #!/bin/bash

    # i2c bus num
    export I2C_BUS_NUM=2

    #
    # ds90ub954 deserializer
    #
    export primary_devaddr_7bit=0x30
    # register
    export FPD3_PORT_SEL_ADDR=0x4c
    export RX_PORT_CTL_ADDR=0x0c
    export BCC_CONFIG=0x58
    export SER_ALIAS_ID_ADDR=0x5C
    export SLAVE_ID0_ADDR=0x5D
    export SLAVE_ALIAS_ID0_ADDR=0x65
    export I2C_DEVICE_ID_REG=0x00
    export I2C_RX0_ID=0xF8
    export I2C_RX1_ID=0xF9

    # 913 i2c addr
    # remote 913 SER slave addr: 7'bit: 0x56
    export REMOTE_SER_ADDR_8BIT=0xB6

    # ar0144
    # ar0144 slave addr: 7'bit: 0x10
    export AR0144_ADDR_8BIT=0x20


    #
    # config 954 deserializer regs
    #
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${FPD3_PORT_SEL_ADDR} 0x1
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${RX_PORT_CTL_ADDR} 0x81
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} 2 0x3e
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${BCC_CONFIG} 0x58
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} 0xc 0xFF
    sleep 1
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${SER_ALIAS_ID_ADDR} ${REMOTE_SER_ADDR_8BIT}


    # ar0144
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${SLAVE_ID0_ADDR} ${AR0144_ADDR_8BIT}
    i2cset -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${SLAVE_ALIAS_ID0_ADDR} ${AR0144_ADDR_8BIT}

    # i2cset -y I2C_BUSS 7'bit_i2c_addr reg val

    #
    # check ds90ub954 deserializer regs
    #
    i2cget -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${SER_ALIAS_ID_ADDR}
    i2cget -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${SLAVE_ID0_ADDR}
    i2cget -y ${I2C_BUS_NUM} ${primary_devaddr_7bit} ${SLAVE_ALIAS_ID0_ADDR}
  • 回复 Amy Luo:

    电平接口不兼容,会影响数据传输吧,有什么解决方法没呢