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.

[参考译文] TMS320F280039:I2C SCL 线路卡在低电平且未触发停止条件

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1652860/tms320f280039-i2c-scl-line-stuck-low-and-stop-condition-not-triggering

器件型号: TMS320F280039

您好:

我已经根据 i2c_ex2_eeprom.c 编写了 I2C 驱动程序、但我遇到了 SCL 线路一直处于低电平的问题。 这是一个间歇性问题、在某种程度上是随机发生的。  

发生这种情况时、我会注意到在错误之前的最后一条消息是正确的(使用逻辑分析仪)、但不会出现停止条件。

我认为这与此处的问题类似: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1447879/tms320f280048c-q1-i2c-not-able-to-generate-stop-condition

我已经注意到、当 SYSCLK 为 120MHz 时、不会出现此问题。 不过、我遇到的是 72MHz 的 SYSCLK。


此问题是否曾在内部解决过? 提前感谢您。

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

    您好、  

    该专家目前已离职、请在下周返回办公室时收到回复。

    此致、
    Aj Favela.  

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

    尊敬的 AJ:

    感谢您发送邮件。 我期待收到他们的答复。 他们又回到星期一上了吗?

    此致、

    Ardavan

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

    您好 Ardavan、

    谢谢你的耐心,当我离开办公室.  我明天就回来找你、谢谢。

    此致、

    Aishwarya

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

    您好 Aishwarya、

    好的、谢谢。 我只想注意的是、当 SYSCLK 为 120MHz 时、不会出现这个问题。 我仅在将 SYSCLK 降低到 72MHz 时才会看到这个问题发生。 我也会将其添加到主帖子中。 谢谢。

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

    Ardan、

    好的、让我来看看这一点。

    此致、

    Aishwarya

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

    Ardan、

    我仍在调查这个问题。  您是否有一个示波器镜头可以更清楚地显示上升、设置、保持、下降等时间。  您能否确认 I2C FSM 时钟、波特率和相关的时钟配置? @时钟应在 7 –12MHz 范围内以正确满足时序要求、并且使用时钟分频器可以做到、FSM 时钟值@120MHz 比 Δ V 72MHz 更精确。 I2C_initController () 函数还假定一个标称 FSM 时钟频率= 10MHz。

    此外、请确保将任何 CPU 周期超时循环(即,对于循环)替换为 I2C 状态检查(例如 while (I2C_getStopConditionStatus (myI2C0_BASE)))、因为这也会导致变化。  

    此致、

    Aishwarya

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

    您好 Aishwarya、

    感谢您的详细答复。 我假设您是指 I2C 模块时钟、是这样吗? 我已经检查了、使用 72MHz 时钟时、模块时钟在 7 –12MHz 以内(根据参考手册)。

    此外、我已经尝试了无限轮询 I2C 停止条件状态(就像您在这里添加的那样)、但它无法完全解决问题。 您是否能够 使用 72MHz 在您的端运行 i2c_ex2_eeprom.c?

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

    Ardavan、

    根据上述要求、您能否向我发送您的确切时钟配置、并通过示波器屏幕截图确认是否满足时序要求? 您能否尝试使用精确的 FSM 时钟?因此 PSC = 8 并尝试计算结果?

    另外、我尝试了无限轮询 I2C 停止条件状态(就像您在此处添加的那样)、但这并不能完全解决问题。

    您能否详细说明“它无法完全解决问题“的含义? 是否仍在使用任何 device_delay_us() 或循环计数器?

    很遗憾、我现在无法在我这边运行示例。  

    此致、

    Aishwarya