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.

[参考译文] DS90UB953A-Q1:使用 DS90UB953和 DS90UB954的 i2C 处缺少停止位

Guru**** 1693050 points
Other Parts Discussed in Thread: LSF0204, USB2ANY
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1263915/ds90ub953a-q1-missing-stop-bit-at-i2c-with-ds90ub953-and-ds90ub954

器件型号:DS90UB953A-Q1
主题中讨论的其他器件:LSF0204USB2ANY

团队、

我们将在应用中使用 DS90UB953和 DS90UB954。 现在、从 DS90UB954到 DS90UB953的 I2C 上行链路存在问题。

似乎在向上游器件发送消息后、尽管 DS90UB954上有停止位、但 DS90UB953会将 I2C SDA 和 SCL 保持为低电平。 当下一个起始位出现在 DS90UB954时、DS90UB953会释放两个信号并发送一个起始位、但不知何故、通信崩溃、上游器件在错误的寄存器中获取一些错误值。 该问题是否已知?我们如何实现正确的停止位传输?

这个问题是否已经有解决方案?或者我们的初始化是否有问题? 就这个问题打电话是否合理?

您好!

弗兰克

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

    仅此问题的更新:
    此错误仅在成功发送~100个通信数据包后才会发生。 它始终只是串行器之后的 i2c 总线上缺少的停止位。 它仍在那里。  

    您好

    克里斯蒂安

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

    尊敬的 Christian:

    您能否告诉我您正在953上对0x0A 寄存器进行什么编程?

    我们可能需要加快看门狗计时器的速度。 您是否可以将 0x12写入953上的寄存器0x0A?  

    格伦  

    格伦  

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

    您好、Glenn、

    感谢您的快速回答、我们对您的建议设置进行了一些调查、但没有效果。

    下面是953处 I2C 总线的一些图片:



    与954上的数据相比:


    黄色= SCL
    粉色= sda

    我想问题在于前五个数据包在953下之后、剩余的低 SDA 和 SCL、而在954处(按预期)处于高电平。

    SDA 和 SCL 为何保持低电平?

    克里斯蒂安

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

    尊敬的 Christian:  

    我想澄清有关设置的以下细节:  

    1. 使用同步还是非同步模式?
    2. 当 I2C 通信发生该问题时、寄存器0x4D 是否发生变化或953A 和954之间是否失去锁定?  
      1. 可以 在 GPIO 引脚上监控锁定状态、并在您看到 I2C 问题时检查它是否变为低电平。
    3. 当954出现此问题时、您是否能够提供其寄存器转储?  

    此致!

    佐伊

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

    您好、Zoe、

    1.我们使用同步模式

    2.在 FPD 链路锁定引脚上没有状态变化

    3.寄存器转储即将可用

    此致!

    克里斯蒂安

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

    这些是一些文件、其中包含转储的寄存器值

    串行器953 OK:e2e.ti.com/.../serdes_5F00_serializer.txt

    解串器954 OK:e2e.ti.com/.../serdes_5F00_deserializer.txt

    串行器953失败:e2e.ti.com/.../serdes_5F00_serializer.txt

    解串器954故障:e2e.ti.com/.../serdes_5F00_deserializer.txt

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

    这里概述了 i2c 通信、上面的 gaphs 是954的 SCL (绿色)和 sda (紫色)、下面的两个是953的 SCL (红色)和 sda (黄色)。

    我关心的部件 abotu 位于第10个时钟包之后、在该封装中、SCL 和 sda 在954条件下变为高电平、而两个信号在953处都保持低电平。


    这张图片在所描述的位置进一步放大。



    此致!

    克里斯蒂安

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

    这是一张图片,而不是我所期待的。
    显然是一个停止位、然后是下一个发送的数据包的新开始。

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

    我可以在这里找到的不同之处、其中:

    串行器953:
    寄存器   正常              失败
    0x52          0x45           0x47
    0x55          0x00           0xff
    0x56          0x00           0xff

    0x60   0x02  0x00

    解串器954:
    寄存器   正常              失败
    0x37:         0x010      0x00

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

    尊敬的 Christian:  

    在953的正常情况下、不报告反向通道 CRC 错误。 在坏的情况下、这些误差会达到最大。 由于反向通道创建了正向通道、反向通道错误通常会导致在解串器上报告正向通道错误。  

    流中是否有任何其他 I2C 控制的器件或控制器可能发生冲突?  

    此致!

    佐伊  

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

    您好、Zoe、


    事实上、总线上还有更多的设备、但它们不应相互冲突。
    这是我们的应用的方框图。

    CRC 错误也是我所关心的问题、但是它们在不丢失 FPD-link 的情况下会经常出现这种情况、这种情况又会怎样呢?
    而且、为什么我们可以看到唯一的缺少停止位而没有其他数据错误的 I2C 错误呢? 后面是否有正在运行的状态机、如果下一个写入器件的地址与上一个器件的地址相同、该状态机有时会释放此停止位?

    此致!

    克里斯蒂安

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

    尊敬的 Christian:  

    由于 BC CRC 错误不会导致失锁、因此这些错误可能只是在启动期间出现并且没有被正确清除。 这些值将通过读取寄存器0x49来清除。  

    查看示波器屏幕截图、可以清楚地看出、953上的异常交易未创建有效的停止条件。  

    为了找到问题的潜在原因、我有以下问题:  

    1. 这些事务在相同的 I2C 事务之后是否行为异常? 如果是、那么此事务的目标是什么器件?
    2. 发送的是哪种类型的交易? 是否使用 I2C 突发通过?
    3. 您是否能够提供953的示波器截图来向每个目标发送 I2C 事务?  
      1. 这样做的目的是查看问题是否与某个下游器件隔离、因为953可能无法控制 I2C 事务。  

    当 SDA 和 SCL 同时保持低电平时、预计会在 I2C 线路上发送更多数据。 在提供的示波器中、在953 SCL 和 SDA 线上未观察到停止条件。 此时、其他器件上的看门狗计时器可能未被确认以在新的传输之前结束传输。  

    此致!

    佐伊  

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

    您好、Zoe、

    1.我们可以在总线上检测到两个 I2C 错误,因为它们会导致更严重的错误,这些错误都是在与成像仪通信时,这正是您在示波器截图中看到的。 有时该错误会在前5个数据包之后发生、有时在后5个数据包之后发生。

    2.我们不使用突发模式。

    3.由于我们只能在成像仪通信过程中触发此错误,到目前为止,我会向您发送错误的图片与总线上的其他设备,但我会检查它。

    成像仪上的看门狗正是我想到的、但从未检查过它、因为无论是否发生错误、下一个起始位似乎是在前5个数据包之后同时出现的。 那么、为什么成像仪要知道在哪个时间之后必须释放 SDA 和 SCL、因为953想再次发送数据呢? 但我也会检查一下。

    如果您需要任何进一步的信息、请告诉我。

    感谢您的支持、祝您度过一个愉快的周末

    克里斯蒂安

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

    Christian、您好!

    佐伊 是好的,并将在公众假期后,在星期二回来.

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

    尊敬的 Christian:

    感谢您的澄清。 成像仪通信是否仅在总线上通过成像仪进行了测试? 我要关注的是、确定电平转换器是否会影响 I2C 通信总线。  

    此致!

    佐伊

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

    有些发行机构使用其他器件、这也是我在 ICC 通信中看到的:

    黄色-> SCL 头
    粉红色-> SDA 头
    蓝色-> SCL VPU
    绿色-> SDA VPU

    在最后一条命令后、VPU 上有一个停止条件、后跟头部的停止条件。 然后、在 VPU 上存在一个具有寄存器值的启动条件、之后该值也会在头部发送。 但为什么头部在这种情况下会立即回答呢? 它不应该等待另一个寄存器值吗?

    然后通信继续、ICC 发送的寄存器越来越多、VPU 会对它们进行确认。 但在从 ICC 发送最后一个数据包后、HEAD 上的总线保持低电平。 我认为这就是为什么头部的确认没有到达 ICC、并且总线一直被阻塞的原因。
    我在这里预计会有一个 ACK、然后是停止条件、因此 VPU 和头部上的总线是空闲的。

     

    300毫秒后总线再次像这样变为空闲。

    这正是我希望看到的结果。



    没有换平器的测试正在运行。
    目前、我们使用的是 LSF0204。

    此致!

    克里斯蒂安

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

    尊敬的 Christian:  

    感谢您分享其他示波器。 让我看看这些、看看可能会发生什么情况。  

    是否有多个 DS90UB953A 和 DS90UB954 出现此问题? 如果是、有多少设备出现此问题?  

    此致!

    佐伊

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

    您好、Zoe、

    我们的器件中有多个 DS90UB953和 DS90UB954、多个器件中的所有器件都存在该问题。

    此致!
    克里斯蒂安

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

    尊敬的 Christian:  

    您是否能够在这些示波器屏幕截图中提供正在执行的 I2C 事务? 此外、如果您使用逻辑分析仪来测量这些信号、这对于清除在线路上看到的事务非常有帮助。  

    关于方框图、头部指的是什么? 是串行器的头、输出 I2C 线路吗? 根据我的理解、VPU 与处理器和解串器之间的 I2C 总线有关。  如您的回复中所述、如果没有 VPU 提供的其他信息、我不会希望主线继续进行 I2C 事务。  

    此致!

    佐伊

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

    您好、Zoe、

    我会寻找逻辑分析仪、但在此之前、我发送的最新通信原理如下:

    VPU 倾向于 ICC -> ICC 应答、其状态寄存器为

    在每个字节之后、都会有来自 VPU 的确认、该确认被发送到 ICC、由 ACK 触发、以发送其下一个字节。 当 VPU 拥有所有数据时、它会发送一个 NACK 以告诉 ICC 它已发送所有数据、后跟一个停止条件。


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    图1
    标题 0xA3 ACK 0x26 ACK 0x16
    VPU 0xC1 ACK 0x26 ACK 0x16 ACK
    图2
    标题 ACK 0x55 ACK 0x00 ACK 0x00 ACK 0x80
    VPU 0x55 ACK 0x00 ACK 0x00 ACK   0x80 ACK
    图3
    标题 NACK STOP
    VPU 0xFF ACK 0xFF ACK 0xFF ACK 0xFF ACK 0xFF ACK 0xFF ACK 0xFF ACK 0xFF ACK 0xFF ACK
    图3
    标题 0xA3 ACK 0x04 ACK 0x19 ACK 0x55 ACK 0x1D NACK STOP
    VPU 0x04 ACK 0x19 ACK 0x55 ACK 0x1D NACK 停止
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christian:  

    感谢您的分享。 要验证其他器件不发送伪事务、 应取消组装这些器件并逐一填充。

    此外、 在提供的初始寄存器转储中、将串行器的看门狗计时器设置为1秒。 在最新的数据表更新中、我们建议将寄存器0xA 中的值设为0x12、以将 I2C 看门狗计时器减少到50ms。 然后、图2中的 I2C 事务可能缺少目标地址的响应、从而使该线处于低电平、因为需要更多的数据。  

    此致!

    佐伊

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

    您好、Zoe、

    我做了一些更多的调查,我想与你分享。 根据您的建议、我从总线上取出所有器件、并分别与它们进行通信、而不会出现任何问题。 当我再次连接总线上的第一个器件并尝试与之通信(在无限循环中写入和/或读取命令)时、无论我使用的是哪种器件、都会出现一些错误。 始终错过停止条件或 ACK/NACK 位的错误。 这张图片显示了 Abot 300 ms 的通信停顿。


     

    我还可以看到、通信仅在照明调制期间进入错误状态。 I2C 信号本身不受瞬态影响、并且所有电源电压看起来都正常。
    然而、FPD-LINK 通道 I2C 上存在通信错误。

    此致!

    克里斯蒂安

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

    尊敬的 Christian:

    感谢您的更新。 由于系统发现了反向通道错误、您是否能够在954上运行映射工具和 BIST 以检查953的链路裕度? 此外、您能否提供954和953的原理图?

    此致!

    佐伊

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

    您好、Zoe、

    如何在设备上的954上运行地图工具? 否则就很难进行完全相同的设置、BIST 是指什么?


    这是你要求的原理吗?你到底是什么意思?

    此致!

    克里斯蒂安

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

    尊敬的 Christian:  

    如何在设备上的954上运行地图工具?

    MAP 工具可以使用 Analog LaunchPAD GUI 并将 USB2ANY 连接到954的 I2C 输入端来设置。 然后可以在 GUI 中使用映射工具来观察954和953之间的链路质量。 如果可以对 I2C 输入进行这种访问、则无需更改设置。 BIST 是954上的一项用于全速内置自检的功能。 954将向953发送寄存器写入 以配置 BIST 模式。 然后、解串器将监控测试图形并报告所看到的任何错误。 导航到"Scripting -> Run Predefined script"->953_954_BIST 时、GUI 中也可以提供 BIST 脚本。  

    这是您询问的网页吗?

    关于原理图、我当时在 VPU 板上寻找954、在主板上寻找953。  

    此致!

    佐伊