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.

[参考译文] CC1352P:对 i2c 时钟运行问题的报复

Guru**** 2454220 points


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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1108448/cc1352p-revenge-of-the-i2c-clock-runt-issue

器件型号:CC1352P
主题中讨论的其他器件:IMETER-BOOSTBOOSTXL-SENSORS

您好、Siri/Others、

几个月前,当我们处理这个时钟运行问题时,我们在一个绷带上打了一个耳光,并一直在移动,但现在这个问题再次抬头,我们无法使用绷带。  它似乎与总线上的电容相关。  我们可以在 i2c 上连接 Beagle i2c 协议分析器时使其更频繁地发生。  和以前一样、时间会丢失、MCU 似乎会移至上一个脉冲中间的下一个时钟脉冲。  我们不使用全脉冲、而是得到一个 runt。

我们认为可以通过增大总线电容来重新创建这一点。  在调查中、我们还注意到另一个奇怪的现象。  当我们向总线(Sensirion SPS30)或 Beagle i2c 协议分析器添加额外的传感器时、时钟频率会减慢(例如、不仅改变边沿的形状、实际上会将脉冲推出、因此我们得到的是99khz、而不是100kHz)。  由于时钟由 MCU 驱动、因此不清楚为什么会发生这种情况。

请您调查这些现象的发生原因并提供一些见解吗?

谢谢、

Scott

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

    使用 TI 开发套件和空示例项目部署系统非常容易、从而重现问题:

    1. CC1352P1开发套件
    2. IMETER-BOOST 开发套件
    3. SCL 和 GND 之间的150pF 电容器(我使用了十进制电容器盒)
    4. Resource Explorer 空项目:
      https://dev.ti.com/tirex4-desktop/explore/node?compilers=ticlang&devtools=LAUNCHXL-CC1352P1&kernels=tirtos&node=AFB7Qs6fWUCcZe3pPVyxAw__pTTHBmu__LATEST
    5. SimpleLink CC13x2 26x2 SDK
    6. 在 empty.syscfg 中添加 I2C 外设:
      使用默认 SCL (DIO21)和 SDA (DIO5)引脚。
    7. 更改 empty.c 源文件代码(随附):
      e2e.ti.com/.../empty.c

    我的十进制电阻箱的默认电容为50pF。
    默认值为50pF 时、我看不到高速跑道(我在离开办公桌的30分钟时间内只看到了一次活动)。

    但是、在150pF (如上图所示)下、我看到每隔几秒出现一次跳动。

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

    关于频率降低的问题、此处说明了这种情况的发生方式:

    速度–I2C 总线(i2c-bus.org)

    I2C 标准将 CP 限制为400pF 的最大值(端接与电容间的关系–I2C 总线(i2c-bus.org))、因此150pF 的电容不会成为问题。 您是否能够测量电容以验证其是否不超过400pF (我想您所指的150pF 是 连接硬件等已经导致的电容之外的电容。)

    SDA 和 SCL 的上升时间如何、您是否测量过它?

    以下是一些类似情况、不符合规格运行。上升时间会导致您看到的类似行为:

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/711562/tm4c129xnczad-tm4c-i2c-master-generates-short-scl-clock-pulses-glitches

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers---internal/f/arm-based-microcontrollers---internal-forum/1073938/tm4c129encpdt-i2c-clock-line-missing-pulses?tisearch=e2e-sitesearch&keymatch=i2c%20clock%20missed%20pulse#

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

    感谢您的回复 Siri。  您在上面发布的第三个链接已断开。  我是这家聚会的成员。

    参考 您在上面发布的第二个链接。  我们通常使用2.32k 欧姆上拉电阻、但我们已将上拉电阻降低到1k 欧姆、并且仍然观察到运行时钟脉冲。  对于我们目前的设置、我计算出的 SCL 线路电容约为202pF、完全符合规格。

    关于上升时间、因为这是您发布的链接中的一个相当棘手的问题。  我们已经获取了 SCL 行的示波器捕获、其中显示了 runt 以及 runt 之后紧随其后的时钟。  如果我在两条曲线的示波器上使用相同的电压电平和相同的时间窗口、如果上升时间实际上太慢、我会期望 runt 的上升时间比成功的时钟"慢"。  我看到完全相反的情况:

    runt:

    运行后的时钟、请注意、该时钟实际上比运行时间慢一些纳秒(可能是同时、但 运行时间肯定不会以慢得多的速率增加):

    我计算出运行时间大约为1.52us、这很慢、但对于以100kHz 运行的 I2C 总线而言、这似乎是合理的(我可以使这3us 上升时间@ 100kHz、并且我仍然可以在 它们所在的下降时间获得有效的 I2C 数据)。  在 CC1352P1的数据表中找不到上升/下降时间规格、因此我很难满足或测试我看不到的规格。  请在数据表中向我指出此规格、我查看过但找不到该规格、或者它的表述方式不符合我的期望。

    您可以看到、我并不是真的购买较慢的 SCL 上升时间。  如果这样、我想知道我们的任何时钟是如何成功的、因为它们都表现出大致相同的上升和下降特性、包括 runt 本身。  让我清楚一点、我不是说 TI 用于检测缓慢上升时间的内部机制不是触发和复位时钟线、我说上升时间不是太慢、所以如果是、外设不应该在这里进行校正。  同样、如果我知道规格的最短上升时间应该是多少、那么更容易详细地讨论这一点并围绕它进行测试。

    如前所述、我们已经使用1k 欧姆上拉电阻进行了测试、但这并没有解决运行脉冲问题、因此这不是解决方案、因为它是与 Siri 的链接帖子一起使用的。  SCL 线路电容在可接受的限值内、因此电容本身不会成为问题。  我在 MCU 外设的各个点执行我无法控制的操作、从而导致此问题。

    有什么想法?

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

    您好、Siri、

    您可以在 LaunchPad 上分享测试结果吗?  我们上次谈到此问题时、您无法帮助我们、因为您无法重新创建。  我们清楚地展示了如何使用您手头的器件重新创建它、因此请尽快测试并分享结果。

    谢谢、

    Scott

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

    你(们)好  

    星期四之前我不会在办公室工作、但我会在我进来时看到我是否可以运行一些测试。

    最初我在 CC1352 LPSTK 上进行了测试、但我将查看我是否可以找到要使用的 LP 进行测试(不要认为我具有您使用过的相同 BoosterPack、但我将看到我找到的内容。

    在上升时间方面、我们的数据表中未对此进行说明、但它是 I2C 规范的一部分。

    标准模式(100kHz)的最长上升时间为1us:

    规范–I2C 总线(i2c-bus.org)

    不在规格范围内。并不意味着它会一直失败、但不保证它可以正常工作。

     您能否尝试使上升时间处于规格范围内。然后查看您当时是否仍然看到问题?

    Siri

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

    Siri、

    以下是我们产品的 I2C 总线运行情况的截图。

    30%= 0.9V
    70%= 2.3V

    第一个示例显示了未进行任何修改的 SCL 上升时间(上升时间= 180ns)
    第二个示例显示了连接150pF 十进制电容时的上升时间(上升时间= 590ns)。
    这两个都在您询问的1us 时间内。


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

    我的一位同事已经能够在测试时进行设置、并对我们的 LP 进行了一些测量。 完成后、他将使用其结果更新此主题。

    BR

    Siri

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

    您好、Siri、

    谢谢你。  您能否提供有关 MCU 中导致此行为的机制的更多详细信息?  它是间歇性的、当添加总线电容来重新创建它时、引线长度等因素会产生很大的影响。  我们有一个设计展示了这种行为、另一个设计不展示这种行为、因此我们确信、我们的设计中的某些内容会导致 MCU 跳过其时钟状态机、或者至少我们可以在设计中执行一些操作来防止它。  但是、我们不会测量任何 i2c 规范违规行为、因此我们不确定如何通过更改上拉电阻或添加缓冲器来防止这种情况。  如果您的 MCU 团队在可能导致这种情况的原因以及在何处查找或其他防弹建议方面提供任何帮助、我们将不胜感激。

    谢谢、

    Scott

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

    您好!

    这是一个帖子、用于更新我们一方为重现问题所做的努力。  

    我使用的是 CC1352P-2 launchpad。 我们的办公室没有 I 表 BoosterPack、因此我使用了 BOOSTXL-SENSORS (https://www.ti.com/tool/BOOSTXL-SENSORS)附加组件、它采用4个 I2C 传感器来模拟 I2C 总线上的附加电容。 我还在 SCL 和 GND 之间添加了一个外部150pF 电容器、以尽可能接近您所描述的情况。  

    最后,我使用 了完全相同的代码,替换了来自6.10版 Simplelink 13xx 26xx SDK 的空项目的 main()中的代码。

    我将示波器设置为在具有1V 低阈值和2V 高阈值的正负上触发。 在这种情况下、我无法按照您的初始帖子中看到的那样注册任何随机 runt。 我让示波器运行至少2小时。 我试图 对阈值进行摆动、可能会捕捉到更低的跑道、但没有任何东西触发捕获。  

    尝试增加总线上的电容(我尝试470pF 和880pF)会导致上升时间如预期的那样增加。 在这里、我能够使用与上述相同的设置触发示波器上的 runts。 但是、每个时钟边沿都注册为 runt、因为它没有时间到达高电平状态。 这种情况在每个时钟边沿发生、并不像您的情况那样偶尔发生、因此这不是我们尝试重现的问题。  

    供参考的设置图片:

    此致、

    高斯图

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

    另一个问题:在未连接 I-meter BoosterPack 的情况下、您也能看到问题吗?

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

    您好、Fausto、

    我们今天将在不使用升压功能的情况下尝试测试 i2c 流量、并告知您。  您能告诉我您的电容器在图片中的位置吗?  它是否在分线板上?  我们注意到、随着时间的延长、我们的十进制方框以及它们没有扭曲、问题肯定会变得更糟。  不是真正的应用程序、而是帮助我们更频繁地重新创建它、以尝试理解...

    谢谢、

    Scott

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

    您好、Scott、

    是的、我们没有十进制电容箱(只有一个电阻箱)、因此我将不同的分立式电容器焊接到分线板上、以使用额外的电容器测试行为。 我们将考虑购买十进制电容盒、但为了更快地测试场景(并考虑发货预计时间)、我不得不去上述解决方案。

    此致、

    高斯图

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

    您好、Fausto、

    我认为您不需要购买十倍频盒、但可能需要使用更长的引线连接到该分线板、看看这是否允许您看到它的发生。

    Scott

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

    您好、Fausto、

    我正在设置在不使用 I-meter BoosterPack 的情况下重现此问题、并注意到 I-meter 在 SCL 和 SDA 上具有10K 上拉电阻、而传感器板在 SCL 和 SDA 上都具有2K。 这可能是您看不到问题的原因。 此外、我注意到 LAUNCHXL-CC1352P1板在 SDA 上具有3.3K 的上拉电阻、但在 SCL 上没有任何上拉电阻、这是奇怪的、可能用于不同的 Booster 板上的引脚的其他用途?

    我将做更多实验、并告诉您是否能够使用2K 上拉电阻器重现问题。

    谢谢
    达尔顿

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

    您好、Fausto、

    我已确认可以重现 BOOSTXL-SENSORS 板的问题。 我在 SCL 和 GND 之间通过 大约8英寸长的导线连接了一个220pF 电容器。 我将在 EMI 测试单元中运行电路板、使电路板承受80MHz 辐射。 在没有辐射的情况 下、SCL 跳动很少发生或根本没有发生。

    您是否有可用的 EMI 测试单元?

    谢谢

    达尔顿

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

    我刚刚在我们的其中一款产品上捕获了另一个时钟运行、除了示波器探针之外、没有额外的总线电容。 如果没有增加的电容、这种情况很少见、但仍然会发生。 从对之前 SCL 脉冲的测量中可以看出、上升时间符合2.32K 上拉电阻的规格。  您能否提供有关内部电路如何决定"吞咽"时钟脉冲的更多说明? 它是否对噪声敏感?

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

    我们在抓住这些方面变得非常好。  是否有人与 MCU 设计人员接洽?  我们需要知道如何让它停止...

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

    你好、抱歉、我在过去两天离开了。 明天我要回到办公室、如果有的话、我将尝试访问实验中的 EMI 测试单元。

    我将使用结果更新该线程。 不幸的是、我仍然无法重现此问题。  

    此致

    高斯图

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

    您好!

    我尝试遵循您的所有建议、并最终设法在我的办公桌上重复这种行为。 感谢您发表的评论、其中重点介绍了更容易发现跑道的情况、这非常有帮助。 当有一根跳线电缆导致150pF 电容(大于90cm)和另一根从电容到 GND 大约15cm 的跳线电缆时、我可以每隔几秒钟看到一次短距离。

    回到您的初始帖子:您能否在您的设计中为我们提供有关 I2C 总线的更多信息? 在通过长引线将传感器添加到 I2C 总线时、您是否看到了这种行为、或者您是否将其添加到定制 PCB? 此外、如何将协议分析器连接到您的设计?  

    如果您将传感器添加到定制 PCB、则能够检查原理图以查看我们是否能够发现任何异常情况会有所帮助。

    此致、

    高斯图

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

    您好、Fausto、

    您在运行中观察到的上升和/或下降时间是否超出 I2C 规范?  您测得的总线电容是否超出 I2C 规格?

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

    您好、Fausto、

    我们的产品使用两个通过带状电缆互连的定制 PCB。 我们将分析仪或示波器与解码器连接、以测试焊接在我们的 I2C 传感器之一上的测试点。 我们认为、即使未连接分析仪、也会偶尔发生故障。 时钟运行在我们的产品上不经常发生、但由于我们使用的传感器之一不对 I2C 数据使用校验和、因此这种偶尔运行仍会导致问题。 我们连接了分析器以到达此问题的底部、并发现了 runt、这会导致 数据包中剩余的所有数据损坏。 我们已经能够应用软件补丁、但我们希望了解问题的原因、因此我们可以确保它不会以不同的方式使我们对补丁程序产生影响。

    我很乐意与您分享我们的原理图、但我不想在公共论坛中发布这些原理图。

    谢谢

    达尔顿

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

    达尔顿

    为了查看原理图、我们提供了一个流程、您可以联系您的 FAE、我们将从该流程开始。

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

    大家好、  

    在过去的几天里、我一直在尝试在 TI 内部以及通过在线文档研究问题的原因。 我在竞争对手器件的另一个论坛上看到了这篇文章、该论坛似乎与此密切相关。 community.nxp.com/.../251800

    在这篇文章 中、它们将 SCL 线路上的干扰(可能是由于外部 EM 干扰或串扰)链接到 runt、因为干扰可能会诱使 SPI 主器件的状态机提前启动下一个时钟阶段。  

    我已经尝试仔细研究捕获的 SCL runs、并且可以在上升沿截断之前始终看到振荡:

    这将解释当引线更长(更容易受到外部干扰)或位于 EMI 单元内时、观察频率会增加的原因。

    在 两块 PCB 之间使用屏蔽电缆时、您能否尝试测试行为变化。 另一个建议是在 SCL 线路上添加一个缓冲器来滤除高频噪声。  

    此致、

    高斯图

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

    您好、Fausto、

    我们认为串话可能是一种可能性、但问题似乎在数据线的转换附近从未发生、因此我认为可以排除这种可能性。

    您是否能够了解当时钟脉冲中止时处理器内部实际发生了什么?

    谢谢

    达尔顿

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

    您好、Dalton、  

    I2C 外设基于多家制造商正在使用的相当常见的 I2C 设计、因此不同  制造商的多个器件上记录了该行为。 因此、很遗憾、我们无法调查硬件内部发生的情况。 我只能帮助在驱动程序级别进行调试。

    我已经尝试使用长度相同的屏蔽电缆(大约1m、远远超出此类设计的建议值)将电容连接到 SCL 线路、并且不再记录跑道。

    此外、如果事务中易受 EMI 影响的部分是时钟的上升沿、则事务处理更陡(上拉电阻更强/总线电容更低)会降低发生此事件的可能性。  

    由于会导致信号出现 EMI 暴露、因此建议不要在两个不同的 PCB 之间使用长电缆。 您是否计划在未来将传感器应用到单 PCB 设计中? 您是否可以在不需要长互连电缆的单 PCB 设计上测试 I2C 事务的行为?

    此致、

    高斯图

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

    您好、Fausto、

    我在设计中提到的带状电缆是柔性电路、长度为1.5英寸。 我们认为这并不过分、也没有计划将我们的设计更改为单个电路板。 此外、时钟的上升时间完全符合规格。 总线电容在规格范围内。 我们相信一切都符合规格、处理器过于敏感。 该产品最初是使用 MSP432设计的、没有任何问题、但该处理器已过时。 只有在我们使用 CC1352重新设计产品后、我们才会遇到 I2C 问题。

    1m 长的电缆只是一种让您轻松重现问题的方法、它们并不代表我们的设计。

    谢谢

    达尔顿

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

    感谢 Rogerio、我将联系我们的 FAE。

    达尔顿

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

    现在、我将结束该主题、因为讨论已涉及到有关设计审阅的不同渠道。 如果出现任何其他相关问题、我们始终可以重新打开。

    此致、

    高斯图