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.

[参考译文] AM625:使用 MCU+SDK 进行 I2C 通信有时会失败

Guru**** 2448780 points
Other Parts Discussed in Thread: SK-AM62B-P1

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1534335/am625-i2c-communication-sometimes-fails-with-mcu-sdk

器件型号:AM625
主题中讨论的其他器件:SK-AM62B-P1

工具/软件:

使用 MCU+SDK 10.01.33 时、I2C 通信有时会失败。
有两种症状。
① I2C_Open 失败。
② 连续传输时出现错误。

对于 ①、返回值为 NULL、并且作为参数传递的句柄信息中的 isOpen 保持 false。
即使更改了不相关的代码、发生概率也会发生变化、我怀疑这取决于内存布局和时序。
导致故障的原因是什么?

② μ s 时、在 1ms 周期内执行两个 1 字节读取时发生了这种情况。
返回 I2C_STS_ERR 或 I2C_STS_ERR_TIMEOUT。
由于它在 400kHz 下运行、因此 1ms 应该足以结束通信
是否有任何使用注意事项?

此致。

(c12efc99-2e63-4d04-a337-3737dc82fab4)

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

    您好、

    失败的原因是什么?

    如何将二进制文件加载到目标环境? 再次加载示例之前是否执行了 CPU 复位?

    是否有使用注意事项?

    系统中是否正在运行除 I2C 以外的任何其他任务?

    此致、

    Tushar

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

    嗨、Tushar

    >如何将二进制文件加载到目标环境中? 再次加载示例之前是否执行了 CPU 复位?

    此环境是 R5 内核。 因此、将其写入闪存后、我只使用调试器加载符号。

    >除 I2C 外、系统中是否正在运行其它任务?

    还有其他任务正在运行、但它们是空进程、因此我认为它不会对处理负载产生任何影响。

    此致。

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

    您好、

    因此、将其写入闪存后、我只使用调试器加载符号。

    我不希望相同的代码行为有所不同。 您能告诉我们您做了什么修改吗?

    正在运行其他任务、但它们是空进程、因此我认为它不会对处理负载产生任何影响。

    请尝试 对其他进程进行注释、只运行 I2C 任务并检查是否仍有超时情况。

    此致、

    Tushar

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

    >我不希望同一代码的行为有所不同。 您能告诉我们您做了什么修改吗?

    唯一改变的是在任务启动后的一段时间调用 I2C_Open、但参数等没有改变。 在什么情况下会发生错误响应?

    >请尝试 对其他进程进行注释、只运行 I2C 任务并检查是否仍处于超时状态。

    我会尝试一下、但我也想知道发生错误的条件。

    此致、

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

    你(们)好

    在什么情况下会发生错误响应?

    您可以查看 I2C_OPEN () API 以了解此详细信息。 存在一个检查无效 I2C 参数的条件、如果执行了这些条件中的任何一个、则返回失败。

    您可以在 API 中放置一个断点并逐步对其进行调试、以了解最终失败的原因

    我会尝试一下、但我也想知道发生错误的情况。

    您通过哪个 API 调用获得 I2C_STS_ERR 或 I2C_STS_ERR_TIMEOUT 响应?

    此致、

    Tushar

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

    你(们)好

    >您可以检查 I2C_OPEN() API 以获取此详细信息。 存在一个检查无效 I2C 参数的条件、如果执行了这些条件中的任何一个、则返回失败。

    同一软件会根据时序给出错误响应。
    是否会因硬件因素而出现开路故障? 调试就很难检测到。

    >从哪个 API 调用获得 I2C_STS_ERR 或 I2C_STS_ERR_TIMEOUT 响应?

    I2C_TRANSFER 返回 I2C_STS_ERR 或 I2C_STS_ERR_TIMEOUT。

    此致、

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

    您好、

    同一软件会根据时间安排给出错误响应。
    是否会因硬件因素而出现开路故障? 调试很难检测到。

    您能否在 I2C_TRANSFER API 应返回状态值的位置永远放置一个循环? 发生故障时、您可以直接停止 CPU 并检查参数值是否不一致。

    您可以按如下方式修改驱动程序代码。

    在驱动程序代码中进行更改后、重新构建库和应用。

    以上内容将帮助您缩小问题的根本原因。

    此致、

    Tushar

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

    您好:

    除了共享上述问题 2 所要求的测试 Tushar 的结果外、请共享问题 1 的链接器和存储器映射文件。

    此致、
    Krithika.

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

    尊敬的 Krithika

    我通过 TI Drive 共享 Linker.cmd 和存储器映射。 您能检查这些文件并向他们提供反馈吗?

    -在 2ms 内启动系统 80%后 I2C 通信失败。

    -但在 20 毫秒内启动系统后没有发生错误。

    -取消选中“ 启用中断的阻塞模式“时、不会发生故障。

     发生超时时时、I2C 驱动程序似乎为堆栈。 这意味着在通信超时发生后、object->state 在 i2c_v0_lld.c 中不会变为空闲状态。

    请尽快调查此行为。

    此致、

    ITO

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

    尊敬的 Ito:

    i 通过 TI Drive 共享 Linker.cmd 和存储器映射。 您能检查这些文件并向他们提供反馈吗?

    也请将链接分享给我。

    您是否进行了上述建议的实验来缩小问题范围?

    此致、

    Tushar

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

    尊敬的 Tushar:

    我通过电子邮件将链接器 cmd 文件和存储器映射发送给您

    您能对此进行研究吗?

    此致

    ITO

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

    您好 Jun、

    我没有收到任何来自你的邮件。 您能检查一次吗?

    我  也给你发了邮件。

    此致、

    Tushar

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

    尊敬的 Tushar:

    似乎我向您发送了电子邮件、但似乎发生了错误。 我将文件附加到了 Webex Chat。 您能检查一下吗?

    此致、

    ITO

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

    您好 Jun、

    我已经通过 Webex Chat 收到了文件。 请等待一段时间恢复。

    此致、

    Tushar

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

    您好 Jun、

    linker.cmd 文件看起来正常。 请提供先前答复中建议的实验结果以缩小问题范围吗?

    此致、

    Tushar

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

    尊敬的 Tushar:

    SDK 11.0 似乎不会出现此问题。 我请求 Krithika 调查为什么这个问题不会发生。 客户需要原因。

    此致、

    ITO

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

    您好 Jun、

    感谢您的更新。 我将检查上述详细信息并尽快恢复。

    此致、

    Tushar

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

    尊敬的 Tushar:

    客户可以在 TI EVM 上的 SDK 10.2 上重现问题。 请尝试使用 SDK 10.2 上的随附文件重现问题。

    e2e.ti.com/.../I2C_5F00_test2.zip

    我想在重现问题后、您可以了解根本原因以及 SDK 11.0 不会出现此问题的原因。

    请对此进行调查?

    此致、

    ITO

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

    尊敬的 Ito:

    我们还没有在我们这边重现这个问题。 同时、我已经检查了 I2C 驱动器的 SDK 版本之间的差异、只有一个主要变化。

    ISR 例程内部 I2C_LLD_controllerIsr API、  驱动程序 正在调用 I2C_LLD_COMPURECurrTransfer 停止条件之前的 API。

    在 SDK v11.0 中  I2C_LLD_COMPURECurrTransfer 在停止条件后调用 API、并检查错误状态。

    请参阅下图。

    您可以在 SDK v10.1 中尝试这些更改、并告知我们其是否有效。

    此致、

    Tushar

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

    尊敬的 Tushar:

    非常感谢您的帮助和使用客户共享的源代码重现问题的努力。

    我想测试、但现在带宽不足。 我会问他们重现问题的技巧。

    非常感谢。

    此致、

    ITO  

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

    尊敬的 Ito:

    感谢您的更新。 我们将等待结果。

    此致、

    Tushar

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

    尊敬的 Tusha:

    您是否使用了它们创建的附加源代码 (I2C_test2.zip)?

    他们表示、使用 SDK 10、可以很容易地在 SK-AM62B-P1 上报告问题。

     

    此应用程序会将数据连续写入 E2PROM。

    - SDK 11 : 应用程序将数据连续写入 E2PROM 而不会出错。

    - SDK 10 :第一次发生通信错误。

    可以尝试重现此问题吗?

    我想在收到 EVM 之后重现这个问题。

    >我们还没有在我们这边重现这个问题。  

    >

    是 SDK 10.1 吗?

     I2C 通信是否连续工作?

    此致、

    ITO

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

    尊敬的 Ito:

    我还没有试过他们的代码 我会试着让你知道。

    此致、

    Tushar

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

    尊敬的 Tushar:

    非常感谢您的支持。

    请尝试重现问题并进行调查。  

    此致、

    ITO

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

    尊敬的 Tushar:

    请尝试使用 Pioneer 提供的示例报告问题。

    此致、

    ITO

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

    尊敬的 Tushar:

    您能给我提供更新吗?

    此致、

    ITO

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

    该线程移至  AM620-Q1:有时 MCU+SDK 会导致 I2C 通信失败