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.

[参考译文] Linux/DS90UB954-Q1:DS90UB95{4、3}-Q1

Guru**** 2470720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/648928/linux-ds90ub954-q1-ds90ub95-4-3--q1

器件型号:DS90UB954-Q1

工具/软件:Linux

您好!

我目前正在提出一个使用 DS90UB954/3和 IMX219摄像头传感器的设计。 我能够通过 i2c 总线在串行器端看到摄像头。 我还能够读取和写入串行器和解串器上的寄存器。  

我正在使用的软件驱动程序可以检测摄像机、但我已经能够在两个端点之间获取任何传感器数据。  我已经尝试过 BIST (正如培训视频 training.ti.com/ds90ub953954-system-design-operation 中建议 的那样、串行器和解串器似乎正常。  当摄像头直接连接到处理器(不带 DS90UB954/3)时、会检测到摄像头并通过传感器数据(因此软件驱动程序可与传感器配合使用)。

但是、这些芯片有很多设置、因此我想获得一些帮助来查看我的当前配置。 我意识到有许多不同的参数、完全取决于硬件设计、但我希望有人可以确认这些设置至少是一致的。 是否缺少基于解串器设置的串行器设置(反之亦然)?

感谢你的帮助。

解串器(DS90UB954)设置

         ("FPD3_PORT_SEL"、0x4C、0b00000011、"启用端口1&0"上的写入)、\
     ("I2C_CONTRAL_1"、0x08、0b10011100、"启用 LOCAL_WRITE_DISABLE")、\
     ("RX_PORT_CTL" 、0x0C、0b10000001、"Disable Port1_EN")、\
     ("IO_CTL"      、0x0D、0b10111001、"3.3V I/O 电源、3.3V 电源模式")、\
     ("CSI_CTL"     、0x33、0b00100001、"CSI_RAIN_COUNT=2、CSI_ENABLE")、\
     ("FPD3_ENC_CTL"、0xBA、0b00000011、"启用 FPD-Link III CRC")、\
     ("FPD3_CAP"    、0x4A、0b00010000、 "启用 CRC 错误标志")、\
     ("BCC_config"  、0x58、0b10011110、"启用 i2c 直通")、\
     ("dataath_CTL1"、0x59、0b10000011、"禁用数据路径寄存器、4个 GPIO)、\
     ("port_config" 、0x6D、0b10111100、"请参阅说明")、\
     ("BC_GPIO_CTL0"、0x6E、0b00010000、 "启用 GPIO")、\
     ("BC_GPIO_CTL1"、0x6f、0b00110010、 "启用 GPIO")、\

串行器(DS90UB953)设置:
     ("BCC_config"  、0x32、0b10001001、"i2c 直通")、\
     ("General_CFG" 、0x02、0b00010010、 "2通道配置")、\
     ("GPIO_INPT_CTL"、0x0E、0b11111111、"启用所有 GPIO 输出")、\

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    寄存器0x0E 不应为0xFF、而应为0xF0以将所有 GPIO 启用为输出。 快速浏览一下、您的其他设置似乎应该正常。

    您是否曾尝试在954上使用模式生成来评估954与处理器之间的链路? 有关这方面的详细信息、请参阅954数据表的第7.5.11节。

    您能否提供有关如何初始化传感器的更多详细信息? 是否在953上使用 GPIO?

    如果您希望953上的 GPIO 用作输出(图像传感器的输入)并通过954 GPIO0和 GPIO1控制953 GPIO、建议使用以下设置:

    954:

    根据您的配置、0x6E = 0b00010000和0x6f = 0b00110010

    0x59配置后、它会将954 GPIO 设置为由953 GPIO 控制。 如果您尝试使用954 GPIO 作为输入、则0x59应等于0x00。

    0x0F[1:0]= 11、以启用 GPIO0和 GPIO1作为输入(默认情况下为真)

    953:

    寄存器0x0E = 0xF0 953 GPIO 配置为输出。 请注意、953 GPIO 不应同时配置为输出和输入。

    寄存器0x0D = 0xF0远程启用953 GPIO (默认为真)

    请读取以下寄存器:

    953:0x61 (数据包标头数据)、0x62 (数据包标头字计数0)、0x63 (数据包标头字计数1)  

    954:0x73 (线路数高)、0x74 (线路数低)、0x75 (线路长度1)、0x76 (线路长度2)、0x5D (传感器 ID)、0x65 (传感器别名)

    此致、

    佐伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    佐伊

    感谢你的答复。 我们修复了 GPIO 问题、但它未解决我们的问题。

    我们确定了 i2c 总线的范围、并发现软件驱动程序正在向地址0x00 (常规调用)发送 i2c 读取。 发送该读取时、解串器 i2c 时钟线(SCL)被驱动为低电平的时间超过250ms。 我们不知道为什么会发生这种情况。  时钟线路的这一长降导致软件驱动程序出现故障。 不幸的是、我们没有驱动程序的源代码、因此我无法仅注释掉此0x0读取。

    似乎解串器正在尝试执行某种时钟拉伸(?)、但时间太长。

    我们可以通过 python 发送读取命令来复制此问题:

    $ python

    >导入 smbus

    >总线= smbus.SMBus (0)

    > BUS.READ_BYTE_DATA (0x0、0x0)

    当我们运行此命令时、解串器上的时钟线会如之前所述下降、这可能是观察我们所看到的情况的一种简单方法。

    我们已验证所有别名寄存器是否均已禁用。 我们还确认、我们可以看到其他 i2c 读取和写入(对0x00以外的地址)成功通过串行器和解串器之间的连接。

    您能想到0x00地址导致解串器问题的原因吗?


    感谢你的帮助。

     

     

     

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    我不确定具体原因、但一般来说、解串器在通过 I2C 与953通信时使用时钟扩展。

    您看到的250ms 听起来与 BCC 看门狗计时器类似(默认值0x7F 为254ms)。 您可以通过减少看门狗计时器来解决您的问题、这可以通过954寄存器0x07来实现。

    此致、
    佐伊