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.

[参考译文] MSPM0G1106:I2C 在 NACK 后卡滞

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1316144/mspm0g1106-i2c-getting-stuck-after-a-nack

器件型号:MSPM0G1106

大家好、我目前正在创建一个多主 I2C 驱动器。

在控制器模式下发送任何消息后、我将 I2C 切换到目标模式。  

我注意到、它在接收到 NACK 后会卡住。 我想知道处理 NACK 的顺序是什么。 我当前正在按照中断部分中的手册来执行该操作。

然后、我使用 SDK 示例中提供的代码将其切换到目标。

我发现在 NACK 后、它会卡住。 我做错了吗? 驱动器时需要进行哪些初始化。

如果是、您可以提供用于重新初始化的代码还是以任何方式处理 NACK。

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

    您好、Asiel:

    当您说"卡住"时、是指代码停止执行还是 I2C 不再输出?

    了解您在代码中所处的确切位置也会有所帮助。

    接收 NAK 不应阻止您的下一个 I2C 命令执行。 如果中断被启用、它应该只设置 NAK 中断并触发你进入 ISR。

    就 NAK 处理而言、在接收 NAK 时重置 I2C 外设是一个选项、设置标志或打开 LED、 或者再1 - 10次尝试通信以查看器件是否正确响应、这是 发生 NAK 时您可能需要采用的其他选项。 具体操作将取决于您的应用要求。  

    此致、
    布兰登·费舍尔

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

    谢谢! 我深挖,你是对的,这不是 NACK 中断。 我改进了一个更好的处理程序、并看到了它卡住的地方。