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.

[参考译文] DS90UB960-Q1:如何更改 UB960+UB953 上的 I2C 速度

Guru**** 2815875 points

Other Parts Discussed in Thread: ALP

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1597501/ds90ub960-q1-how-to-change-i2c-speed-on-ub960-ub953

部件号: DS90UB960-Q1
主题中讨论的其他器件: ALP

尊敬的 TI 团队:  

我们希望提高 I2C 链路的通信速率。 并尝试添加以下 commond:

board.WriteI2C (devAddr、0x02、0x3E)#Enable Proxy

board.WriteI2C (devAddr、0x0A、0x13)
board.WriteI2C (devAddr、0x0B、0x25)
board.WriteI2C (serAlias[i]、0x0B、0x13)
board.WriteI2C (serAlias[i]、0x0C、0x26)

但它似乎影响了沟通的准确性。  

您可以帮助确认并通知我们配置它的正确方法吗?

我们希望使用快速和快速+ I2C 模式、您能为我们提供这两种配置吗?

以下是我们现在使用的配置:


#填写 I2C 地址和别名
devAddr = 0x7A #960 解串器 8 位 I2C 地址
serAddr =[0x30、0x30、0x30]#连接到 960 RX 端口 0、端口 1、端口 2、端口 3 的 953 串行器 8 位 I2C 地址
serAlias =[0x1A、0x2A、0x3A、0x4A]# 8 位 I2C 别名、用于读取/写入连接到 960 RX 端口 0、端口 1、端口 2、端口 3 的串行器
imgAddr =[0x20、0x20、0x20]#成像仪 8 位 I2C 地址连接到 960 RX 端口 0、端口 1、端口 2、端口 3
imgAlias =[0x20、0x22、0x24、0x26]# 8 位 I2C 别名、用于读取/写入连接到 960 RX 端口 0、端口 1、端口 2、端口 3 的成像仪
ispAddr =[0x78、0x78、0x78、0x78]#连接到 960 RX 端口 0、端口 1、端口 2、端口 3 的 ISP 8 位 I2C 地址
ispAlias =[0x40、0x42、0x44、0x46]# 8 位 I2C 别名、用于读取/写入连接到 960 RX 端口 0、端口 1、端口 2、端口 3 的 ISP

导入时间

  board.WriteI2C (devAddr、0x02、0x3E)#Enable Proxy
   
对于 I IN 范围 (0.4):
  如果 I=0:
    board.WriteI2C (devAddr、0x4C、0x01)#选择 RX 端口 0
  Elif i=1:  
    board.WriteI2C (devAddr、0x4C、0x12)#选择 RX 端口 1
  Elif i=2:
    board.WriteI2C (devAddr、0x4C、0x24)#选择 RX 端口 2
  Elif i==3:
    board.WriteI2C (devAddr、0x4C、0x38)#选择 RX 端口 3

  #自动确认设置
  board.WriteI2C (devAddr、0x5B、serAddr[i]+ 1)#设置带有冻结功能的串行器地址
  board.WriteI2C (devAddr、0x5C、serAlias[i]+ 1)#设置 SER 别名和自动确认
  board.WriteI2C (devAddr、0x58、0x7A)#启用具有自动 ACK 的 I2C 直通、BC 速率= 10Mbps

  board.WriteI2C (devAddr、0x0A、0x13)
  board.WriteI2C (devAddr、0x0B、0x25)
  board.WriteI2C (serAlias[i]、0x0B、0x13)
  board.WriteI2C (serAlias[i]、0x0C、0x26)
   
  # 953 配置
  board.WriteI2C (serAlias[i]、0x02、0x73)#连续时钟、4 个通道
  board.WriteI2C (serAlias[i]、0xE、0xF0)#禁用 935 GPIO0 输入并启用输出
  board.WriteI2C (serAlias[i]、0xD、0x10)#在本地 GPIO0 上启用远程 DES GPIO0 数据;下拉 GPIO2(ISP 复位)
  board.WriteI2C (serAlias[i]、0x03、0x12)#模式覆盖异步外部时钟
  board.WriteI2C (serAlias[i]、0x01、0x01)#软复位
  时间睡眠 (0.01)

  # I2C 地址和别名设置
  board.WriteI2C (devAddr、0x58、0x5A)#禁用自动确认
  board.WriteI2C (devAddr、0x5B、serAddr[i])#移除冻结
  board.WriteI2C (devAddr、0x5C、serAlias[i])#禁用自动确认
  board.WriteI2C (devAddr、0x5D、imgAddr[i])#配置成像仪地址
  board.WriteI2C (devAddr、0x65、imgAlias[i])#配置成像仪别名
  board.WriteI2C (devAddr、0x5E、ispAddr[i])#配置 ISP 地址
  board.WriteI2C (devAddr、0x66、ispAlias[i])#配置 ISP 别名

  #960 配置
  board.WriteI2C (devAddr、0x6D、0x7C)# FPD3 CSI-2 输入模式
  board.WriteI2C (devAddr、0x6E、0x8A)#将 Fsync 信号映射到 953 GPIO0 输出
  #board.WriteI2C (devAddr、0x72、0x00)#将 I2C-ID 映射 VC 到 0
  board.WriteI2C (devAddr、0x72、I)#将 I2C-ID 映射 VC 到 I

  #帧同步: 25Hz, 10%/90%占空比
  board.WriteI2C (devAddr、0x19、0x05)# FS_HIGH_TIME_1
  board.WriteI2C (devAddr、0x1A、0x34)# FS_HIGH_TIME_0
  board.WriteI2C (devAddr、0x1B、0x2E)# FS_LOW_TIME_1 25fps
  board.WriteI2C (devAddr、0x1C、0xDF)# FS_LOW_TIME_0 25fps
  board.WriteI2C (devAddr、0x18、0x01)#启用内部生成的帧同步

  #清除错误/状态
  Time.sleep (0.1)
  #board.ReadI2C (devAddr、0x4D)
  #board.ReadI2C (devAddr、0x4E)
  #board.ReadI2C (devAddr、0x55)
  #board.ReadI2C (devAddr、0x56)
  #board.ReadI2C (devAddr、0x7A)
  #board.ReadI2C (devAddr、0x7B)

# CSI 输出/转发配置
board.WriteI2C (devAddr、0x1F、0x00)#1.472 - 1.664Gbps 串行速率
board.WriteI2C (devAddr、0x32、0x01)#选择 CSI 端口 0
#board.WriteI2C (devAddr、0x34、0x01)
board.WriteI2C (devAddr、0x34、0x31)#启用偏移
board.WriteI2C (devAddr、0x33、0x43)#启用偏移校准、4 个通道、连续时钟、启用 CSI 输出
#board.WriteI2C (devAddr、0x21、0x04)# CSI 端口 0 上的基本同步转发
#board.WriteI2C (devAddr、0x20、0x00)#将所有 RX 端口转发到 CSI 端口 0、启用转发
board.WriteI2C (devAddr、0x21、0x03)# CSI 端口 0 上的基本同步转发
board.WriteI2C (devAddr、0x20、0x00)#将所有 RX 端口转发到 CSI 端口 0、启用转发

 

 

 

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

    您好、张:

    请注意、仅当 I2C 控制器直接连接到 953 时、才应使用 0x02=0x3E 和 960 寄存器 0x0A/0x0B。 0x02=0x3E 将 960 配置为在其本地 I2C 网络上充当 I2C 控制器代理、并 0x0A/0x0B 在本地网络上配置 SCL 高电平/低电平时间。

    我假设 I2C 控制器未直接连接到 953、而是直接连接到 960。 您不应在此设置中配置 960 寄存器 0x02、0x0A 和 0x0B。 相反、您可以配置 953 寄存器 0x0B 和 0x0C 以调整 953 本地 I2C 网络上的 SCL 高电平/低电平时间。 953 将在其本地网络上充当 I2C 控制器代理。

    对于 I2C 快速模式、我建议将以下行添加到脚本的 953 配置部分。

    • board.WriteI2C (serAlias[i]、0x0B、0x13)
    • board.WriteI2C (serAlias[i]、0x0C、0x26)

    您还可以考虑添加以下行来加快 I2C 看门狗计时器的速度。

    • board.WriteI2C (serAlias[i]、0x0A、0x12)

    此外、请注意、直接连接 960 的 I2C 控制器需要支持 I2C 时钟延展、才能与 FPD-Link 器件配合使用。

    此致、

    Lucas

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

    您好、Lucas:

    1.您能否提供  用于标准、快速、快速+模式的 UB960+UB953 I2C 推荐外设电路?

    2.如果我们 针对 UB960 采用的定制 I2C 外设电路(如下所示)、  I2C_CLK 和 I2C_SDA 之间存在不同的上拉电阻、 我们应如何更改 UB960+UB953 的配置以使其与之匹配?

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

    您好、张:

    我对您的原理图有点困惑。 我看到 U38 器件是 1:2 多路复用器。 多路复用器每一侧的 I2C 信号是否被隔离? 还是多路复用器直接连接两侧的信号?

    我担心、如果多路复用器直接连接信号、SDA 和 SCL 可能会在 2 处上拉。 我也很惊讶地看到、SDA 上填充了 47k 上拉电阻器、而不是 SCL 上填充的。 SDA 和 SCL 应具有相同的上拉电阻。 对于整个 I2C 总线、在 SDA 和 SCL 上只应组装一个上拉电阻器。 47k 对于 I2C 网络来说可能太大、通常 I2C 上拉电阻的范围为 2k-5k。

    有关使用哪种上拉电阻的建议、请参阅以下应用手册。

    e2e.ti.com/.../8461.I2C-Bus-Pullup-Resistor-Calculation.pdf

    此致、

    Lucas

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

    您好、Lucas:

    感谢您的解释!

    不过、该原理图是我们客户自己设计的、已经使用过。

    在不更改电路设计的情况下、我们如何通过修改配置来消除 I2C 通信不稳定的影响?

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

    您好、张:

    让我再深入研究一下、并在今晚晚些时候再回来与您联系。

    此致、

    Lucas

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

    您好、张:

    我建议移除 R151-154 并仅将 SDA/SCL 与 R29 和 R35 上拉。 您可以使用上拉电阻计算应用手册来确定此应用的理想电阻值。 通常、I2C 上拉电阻在 2k-5k 范围内。

    此致、

    Lucas

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

    您好、Lucas:

    好的、我们正在尝试您的建议。

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

    您好、张:

    听起来不错、如果这样可以解决问题、或者您需要进一步的支持、请告诉我。

    此致、

    Lucas

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

    您好、Lucas:

    我们发现了一个问题、在配置 ISP 时、有时 UB960 之后的 I2C ACK 会丢失、 但可以 从 ISP 到 UB953 进行测量。 那么、您对这个问题有什么想法吗?

    注意:SCL 上有 1.5K 上拉电阻器、UB953 上有 SDA 至 1.8V 上  拉电阻器、 SCL 上有 4.7K 上拉电阻器、UB960 上有 SDA 至 1.8V。

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

    您好、张:

    您是否可以在配置 ISP 时捕获 I2C 日志?

    在配置 ISP 之前和之后、您是否可以读取 960 个寄存器 0x4D、0x4E、0x55 和 0x56?

    这些数据点将帮助我了解可能出现的问题。

    此致、

    Lucas

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

    您好、Lucas:

    下面是我们的 I2C 波形、在写入数据 0xDF 时、UB960 没有将其传输到 UB953。

    以下是使用 954+953 波形、没错:

    以下是配置 ISP 之前和之后的寄存器转储:

    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4d R1
    0xdb
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4d R1
    0xcb
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4d R1
    0xcb
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4e R1
    0x0C
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4e R1
    0x0C
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x55 R1
    0x00
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x55 R1
    0x00
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x56 R1
    0x00
    NV@NV-desktop:~$
    nv@nV-desktop:~$sudo insmod ap1302_ar0234.ko
    NV 的[sudo]密码:
    NV@NV-desktop:~$
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4d R1
    0xcb
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4d R1
    0xcb
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4e R1
    0x4d
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4e R1
    0x0C
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x4e R1
    0x0C
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x55 R1
    0x00
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x55 R1
    0x00
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x56 R1
    0x00
    NV@NV-desktop:~$ i2ctransfer -y -f 30 W1@0x30 0x56 R1
    0x00
    NV@NV-desktop:~$

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

    您好、Lucas:

    添加注释:

    I2C 总线在发生故障时的保持时间由 960 配置 :BCC_WATCHDOG_TIMER 确定。

    当我们配置寄存器 0x07 val 0x78 时、总线释放时间变为 120ms

    启用 BCC_EN_ENH_ERROR 后、发生错误后读取 BCC_*_ERR 状态 (0x47)

    答:在大多数情况下,没有错误

     位 7:保留= 0

     位 6:保留= 0

     位 5:BCC_SEQ_ERROR = 0

     位 4:BCC_MASTER_ERR = 0

     位 3:BCC_MASTER_TO = 0

     位 2:BCC_SLAVE_ERR = 0

     位 1:BCC_SLAVE_TO = 0

     位 0:BCC_RESP_ERR = 0

    b.有时、将 BCC 从器件设置为 1

    位 7:保留= 0

     位 6:保留= 0

     位 5:BCC_SEQ_ERROR = 0

     位 4:BCC_MASTER_ERR = 0

     位 3:BCC_MASTER_TO = 0

     位 2:BCC_SLAVE_ERR = 0

      位 1:BCC_SLAVE_TO = 1

     位 0:BCC_RESP_ERR = 0

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

    您好:

    由于  在美国的公共假期、团队即将离开。 响应将延迟 到星期一。

    感谢您的耐心

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

    您好、张:

    感谢您的详细答复。

    在寄存器读取中、我看到 0x4D=0xCB、这表明标记了双向控制通道错误。 我在寄存器 0x47 中看到、这是 BCC 从器件超时标志。 我看到 0x4E=0x0C 这表明接收到的 CSI 线路计数已更改、但我认为这无关紧要、因为 ISP 配置未完成。

    我在 960 I2C 波形中看到、在收到 ACK 响应之前、SCL 在字节事务之间保持低电平。 这是 I2C 时钟延展、是链路上远程 I2C 事务的预期行为。 960 充当从代理、并在事务通过链路发送到 953 时保持 SCL 为低电平、953 充当主代理并将事务转发到 ISP。 960 收到 ACK 响应后、便会释放 SCL 并将 ACK 响应发送回 SoC。

    在 953 I2C 波形中、在接收到 ACK 响应后、在字节事务之间、SCL 和 SDA 都保持低电平。 这与 I2C 时钟延展不同、并不是正常的 I2C 行为。 我有几个问题可以尝试理解 SDA/SCL 保持低电平的原因。

    • 您提到 SDA/SCL 通过摄像头模块上的 1.5k 电阻器上拉至 1.8V。 953 IDX 引脚是否正确配置为 1.8V I2C 电压?

    • ISP 是否将 I2C 总线保持在低电平? 我记得您提到过、某些摄像头模块不会安装 ISP。 这些模块初始化是否没有任何问题?
    • 您是否可以再共享一次配置代码、所以我确定我拥有最新版本? 我想查看是否存在任何软件问题、导致 953 将总线保持在低电平。

    此致、

    Lucas

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

    您好、Lucas:  

    我们通过将反向通道速率从 10Mbps 修改为 50Mbps 来解决了 I2C 传输不稳定的问题。

    下面是我们现在使用的配置(我以路由 1 为例):  

      //{0x30、0x02、0x3E}、//启用代理
      {0x30、0xB3、0x00}、// BIST 配置 0
      {0x30、0x4C0x01}、//选择 RX 端口 0
      //自动确认设置
      {0x30、0x5B、0x31}、//将串行器地址设置为冻结状态
      {0x30、0x5C0x1B}、//设置 SER 别名和自动确认
      {0x30、0x58、0x5E}、//启用具有自动 ACK 的 I2C 直通、BC 速率= 50Mbps
      {UB9XX_DELAY、0x00、50}、//延迟 50ms
      // 953 配置
      //{0x0D、0x01、0x03}、//reset UB953
      //{UB9XX_DELAY、0x00、20}、//延迟 20ms
    #if USE_I2C_FAST_MODE
      {0x0D0x0B0x13}、//400kHz I2C 速度
      {0x0D0x0C0x26}、
      {0x0D0x0A0x12}、//WD 50ms
    #endif
      //{0x30、0x0A、0x20}、
      //{0x30、0x0B、0x31}、
      //{0x0D、0x0A、0x12}、//加快 I2C 总线看门狗计时器
      {0x0D0x02、0x73}、//连续时钟、4 个通道
      {0x0D、0x0E0xF0}、//禁用 935 GPIO0 输入并启用输出
      {0x0D0x0D0x10}、//在本地 GPIO0 上启用远程 DES GPIO0 数据;下拉 GPIO2(ISP 复位)
      {UB9XX_DELAY、0x00、50}、//延迟 10ms
      {0x0D0x0D0x14}、//RESET AP1302
      //{0x0D、0x03、0x12}、//模式覆盖异步外部时钟
      {0x0D0x01、0x01}、//软复位
      {UB9XX_DELAY、0x00、50}、//延迟 10ms
      // I2C 地址和别名设置
      {0x30、0x58、0x5E}、//禁用自动确认
      {0x30、0x5B、0x30}、//移除冻结
      {0x30、0x5C0x1A}、//禁用自动 ACK
      {0x30、0x5D0xAC}、//配置 EEPROM 地址
      {0x30、0x65、0xA2}、//配置 EEPROM 别名
      {0x30、0x5E0x78}、//配置 ISP 地址
      {0x30、0x66、0x40}、//配置 ISP 别名
      // 960 配置
      {0x30、0x6D0x7C}、// FPD3 CSI-2 输入模式
      {0x30、0x6E、0x8A}、//将 Fsync 信号映射到 953 GPIO0 输出
      {0x30、0x72、0}、//将 VC ID 映射到 0
      //帧同步:25Hz、10%/90%占空比
      //{0x30、0x19、0x05}、// FS_HIGH_TIME_1
      //{0x30、0x1A、0x34}、// FS_HIGH_TIME_0
      //{0x30、0x1B、0x2E}、// FS_LOW_TIME_1 25fps
      //{0x30、0x1C、0xDF}、// FS_LOW_TIME_0 25fps
      {0x30、0x19、0x1A}、// FS_HIGH_TIME_1
      {0x30、0x1A0x04}、// FS_HIGH_TIME_0
      {0x30、0x1B0xEA}、// FS_LOW_TIME_1 25fps
      {0x30、0x1C0x5B}、// FS_LOW_TIME_0 25fps
      {0x30、0x18、0x01}、//启用内部生成的帧同步
      {UB9XX_DELAY、0x00,100}、
      // CSI 输出/转发配置
      {0x30、0x1F0x00}、// 1.472 - 1.664Gbps 串行速率
      {0x30、0x32、0x01}、//选择 CSI 端口 0
      {0x30、0x34、0x31}、//启用偏斜
      {0x30、0x33、0x43}、//启用偏斜校准、4 个通道、连续时钟、启用 CSI 输出
      {0x30、0x21、0x03}、// CSI 端口 0 上的基本同步转发
      {0x30、0x20、0x00}、//将所有 RX 端口转发到 CSI 端口 0、启用转发
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    由于节假日、团队即将离开。 答复将从 12 月 24 日推迟到 1 月 2 日。

    感谢您的耐心

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

    您好、张:

    很高兴听到通过修改反向通道速率解决了该问题。 请注意、10Mbps 反向通道速率通常与异步时钟模式一起使用、50Mbps 反向通道速率通常与同步时钟模式一起使用。 如果还有其他问题、请告诉我。

    此致、

    Lucas

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

    您好、Lucas:

    我们在 UB960 上是否有任何寄存器来刷新数据路径、 从而消除最初的几个错误帧。

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

    您好、张:

    我假设第一个视频帧不好、因为在成像仪开始流式传输后启用了解串器输出? 您可以尝试在“CSI Output/Forwarding Config“部分之后移动成像仪配置吗?

    此致、

    Lucas

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

    您好、Lucas:

    是的、我们怀疑摄像头的前几个帧可能存在一些问题。

    我已经在配置 960+953 之后放置了传感器起始流、 但有时在  开始  捕获图像时会出现错误、因此、我想在捕获之前尝试刷新 UB960 的数据路径。

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

    您好、张:

    没有 用于刷新 960 数据路径的函数。

    SoC 报告哪种类型的错误? 初始化后是否可以重复读取以下寄存器、以便更好地了解 960 和 953 报告了哪些错误?

    • 960:0x4d、0x4e、0x55、0x56、0x73-0x76、 0x7A、0x7B、0x90-0x97
    • 953:0x52、0x55、0x56、0x5c-0x64

    此致、

    Lucas

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

    您好、Lucas:

    我们通过启用和禁用 RX 端口转发来解决了该问题。 报告中没有错误。

    先前的问题可能是由我们使用的介质要求从帧头开始捕获数据这一事实引起的。因此、重新启用 RX 端口的转发可以解决这个问题。

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

    您好、张:

    很高兴听到问题得到解决、感谢您分享您的解决方案。 您可以在成像仪配置完成后移动寄存器写入以启用转发、因此您不必禁用/重新启用转发。

    此致、

    Lucas

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

    您好、Lucas:

    在我的项目开发过程中、我发现某个特定模块在 I2C 通信方面存在一些问题。 我想使用 UB960 + UB953 来确定问题的原因、  

    在比较寄存器的值时、我发现有些寄存器存在差异、但未在我的数据表中列出。 您能为我解释一下这些寄存器吗?  对于 UB953、地址范围为 0x9A 至 0xA4。

    此外、您能帮助通过寄存器转储确认 I2C 有什么问题吗?

    寄存器值如下:

    UB953:

    0x00:0x30 0x00 0x73 0x58 0x00 0x03 0x41 0x28 0xFE 0x1E 0x10 0x1c 0x1c 0x14 0xf0 0x00
    0x10:0x00 0x00 0x00 0x00 0x00 0x00 0x20 0x18 0x3c 0x80 0x62 0x62 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x20:0x00 0x00 0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x67 0x33 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x30:0x00 0x20 0x09 0x04 0x00 0x10 0x00 0x60 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x40:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x50:0x20 0xc0 0x45 0x00 0x00 0x00 0x00 0x00 0x07 0x07 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x60:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x88 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x70:0x00 0x00 0x25 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xe4 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x80:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x90 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x06 0x00 0x00 0x00 0x00
    0x90:0x32 0xe3 0x64 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x26 0x22 0x07 0x05 0x03 0x10
    0xA0:0x00 0x0F 0x0d 0x0c 0x10 0x42 0x10 0x10 0x10 0x03 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xb0:0x04 0x4a 0x3f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xc0:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xd0:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xe0:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xf0:0x5f 0x55 0x42 0x39 0x35 0x33 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    UB960:

    0x00:0x60 0x00 0x1E 0x40 0xd0 0x01 0x00 0xFE 0x1c 0x10 0x7A 0x7A 0x0F 0x09 0xff
    0x10:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x1a 0x04 0xEA 0x5b 0x00 0x04 0x00
    0x20:0xf0 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x30:0x00 0x00 0x00 0x01 0x43 0x31 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x40:0x00 0xa9 0x71 0x01 0x00 0x00 0x60 0x02 0x00 0x00 0x00 0x00 0x12 0x01 0x03 0x04 0x64
    0x50:0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x5e 0x00 0x30 0x10 0x20 0x78 0x00
    0x60:0x00 0x00 0x00 0x00 0x00 0x00 0x20 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x7c 0x8a 0x88
    0x70:0x2b 0x2C 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xc5 0x00 0x01 0x00 0x00 0x00 0x20 0x00 0x00 0x00 0x00
    0x80:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0x90:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xA0:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x1c 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xb0:0x1c 0x3A 0x14 0x08 0x25 0x00 0x18 0x00 0x8c 0x33 0x83 0x74 0x80 0x00 0x00 0x00
    0xc0:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xd0:0x00 0x43 0x94 0x06 0x60 0xf2 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xe0:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    0xf0:0x5f 0x55 0x42 0x39 0x36 0x30 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

    这是 I2C 波形

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

    您好、张:

    回顾您的代码、我相信这是写入摄像头模块上 ISP 的 I2C。 我看到 0x40 是分配给连接到 RX 端口 0 的 ISP 的 I2C 别名。

    我看到 I2C 控制器和 960 之间的通信是正常的。 0x40 字节正常发送、然后 960 将 SCL 保持在低电平(时钟延展)、同时等待来自 953 的 ACK/NACK 响应。 953 接收来自 960 的 I2C 事务、并在 SCL 停止切换且 SDA 无限期保持低电平时开始发送到 ISP。 我最初的想法是、这要么是 I2C 线路上的电信号问题、要么是 953 内的 I2C 状态机问题。

    953 寄存器 0x9A-0xA4 是因芯片而异的修整寄存器。 它们与 I2C 或这个问题无关。 我检查了寄存器转储中的错误/状态寄存器、我看到的唯一标记错误是 960 寄存器 0x47[1]中的 BCC 目标超时错误。 这是 I2C 卡在摄像头模块上的症状、因此在看门狗计时器到期并发生超时之前、960 从不会收到来自 953 的 ACK/NACK。

    我有几个问题/建议来调试此问题。

    • 我看到您提到此问题仅在一个摄像头模块上发生。 是否每次向 ISP 或成像仪发送 I2C 事务时都会发生? 还是只偶尔发生?
    • 回顾您的 I2C 设计、我相信摄像头模块在 I2C 总线上使用了 1.5k 上拉至 1.8V 的电阻器。 您是否已验证该摄像头模块上的上拉电阻器或电源轨 (I2C、953、ISP) 没有任何故障?
    • 如果您可以在问题发生时再捕获几个波形、将会很有帮助。 我想看看问题的表现是否与多次不同。
    • 您是否可以在初始化期间写入 953 寄存器 0x1E=0x7E 来尝试启用反向通道警报? 问题再次发生后、您能否共享 953 和 960 的寄存器转储? 我想检查是否标记了任何反向通道警报条件。

    此致、

    Lucas

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

    您好、Lucas:

     

    这不是每次都会发生、但当 I I2C 传输失败时、它始终会失败。我提到的超时只是一种情况。

    此外、还有另一种没有 ACK 的更常见现象、如下所示:

    我已经确认模块在 I2C 总线上使用连接至 1.8V 的 1.5K 上拉电阻器。

    我将在下周进行更多测试。

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

    您好、张:

    我知道这个问题不会在每个远程 I2C 事务中发生、但一旦发生、I2C 总线在没有下电上电的情况下无法恢复?

    我在这种情况下看到、ISP 没有 在接收到地址字节 0x78 之后将 SDA 拉至低电平、因此会产生 NACK 响应。

    我期待查看您的进一步测试结果、以便更好地了解此处发生的情况。

    此致、

    Lucas

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

    您好、Lucas:

    前面提到的两个波形都是故障波形。

    我们已经发现 I2C 信号上的杂散导线也可能影响通信。 目前、我们正在尝试通过硬件焊接来确定问题。也许本模块中的一些芯片未完全焊接。

    如果有任何进一步的发展或其他情况、我将与您联系。

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

    您好、张:

    感谢您的更新。 如果问题是通过焊接解决的、还是需要进一步的调试支持、请告诉我。

    此致、

    Lucas

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

    您好、Lucas:

    我们正在进行 UB960/UB953 链路裕度测试、询问您一些问题。

    我使用 Analog LaunchPAD、结果如下所示、  

    但当我尝试测试它我自己,方法和结果如下:

    为什么结果更糟? 这是因为寄存器操作不正确吗?  

    您能否提供有关工具使用的操作?

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

    您好、张:

    您正在运行什么脚本进行保证金分析?  ALP 文件中有一个脚本 (C:\Program Files (x86)\Analog LaunchPAD\Analog Texas Instruments v1.57.0010\PreDefScripts\DS90UB960\ub960_MARGIN_ANalysis_script)。 屏幕截图中的 I2C 写入/读取似乎与该脚本不匹配。

    此外、您使用的驻留时间是多少? 不同的停留时间可能会导致不同的结果。

    此致、

    Lucas

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

    您好、Lucas:

    是的、我们根据您的建议找到了该脚本、现在已经使用过。

    我们是否需要根据裕度的测试结果修改配置、使芯片能够以更好的模式运行、使 UB960 和 UB953 之间的通道更加稳定、恢复速度更快?

    如果是、我们应该如何更改寄存器?

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

    您好、Zhang、

    当 Lucas 不在办公室时、我将支持此问题。 现在、未决问题位于 MAP 工具上。 上电时、UB960 RX 端口会循环切换一系列 EQ 和选通设置、最终稳定可能会锁定到传入串行器信号的值。

    MAP 脚本会手动设置 RX 端口上的 EQ 和选通设置、并在 x 停留时间内循环使用所有可能的选项。 如果在此停留时间内链路上出现任何错误、MAP 工具会将特定 EQ/选通设置标记为“Fail"(“(失败(失败)。 为了获得更准确的结果、停留时间通常应更长、从而有更多的时间在特定 EQ/选通设置下捕获错误。

    通常、为了实现超稳健的运行、我们建议不要修改 UB960 器件中的任何 EQ/选通寄存器。

    地图的一般通行证数字是一个连续的正方形,由 2 个 EQ 等级宽 4 个选通位置长的通行证结果组成,如我们的应用手册所示。 通常还应该有 3 行通过 EQ 结果的指令。

    https://www.ti.com/lit/ug/snlu243/snlu243.pdf

    [引述 userid=“669514" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1597501/ds90ub960-q1-how-to-change-i2c-speed-on-ub960-ub953/6254116

    为什么结果更糟? 这是因为寄存器操作不正确吗?  

    您能否提供有关工具使用的操作?

    [/报价]
    1. 仔细检查一下、这些是您最新的地图结果吗?
      1. 似乎您有 2 个通过 EQ 等级、但没有 3 个。
    2. 您是直接运行 TI 提供的 MAP Python 脚本、还是进行了任何修改?
      1. 如果您愿意、您可以提供运行的脚本、我们可以仔细检查它。
    3. 如果脚本没有问题、则没有扩展链路裕量的软件方法。 这主要与硬件相关。 下一个调试步骤是评估串行器/解串器器件之间的插入损耗和回波损耗是否在 TI 定义的限制范围内。

    此致、

    Justin Phan

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

    尊敬的 Justin:

    感谢您的信息!

    我们更改了脚本并获得了与“Analog LaunchPAD“相同的结果。  

    现在、我们可以获得 通过结果  、并会根据您的建议、不要修改 EQ/选通寄存器。

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

    您好、Zhang、

    好的。 在这种情况下、似乎所有未决问题都已得到解决。 我现在将关闭此工单。 如果有其他问题、请随时再次联系。

    此致、

    Justin Phan