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.

[参考译文] MSPM0L1305:如何检测 I2C 目标器件发送的 NACK?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1357401/mspm0l1305-how-to-detect-the-nack-sent-by-an-i2c-target-device

器件型号:MSPM0L1305
主题中讨论的其他器件:BQ76952MSPM0L1306

您好!

背景:

我目前正在开发一个系统、使用一个 MSPM0L1306 (MCU)作为 I2C 控制器、两个 BQ76952 (AFE)作为 I2C 目标。 在初始化阶段、其中一个 AFE 的 I2C 地址将被更改、以便 MCU 可以与同一 I2C 总线上的每个 AFE 单独通信。

问题:

我正在尝试通过实现逻辑来验证两个 AFE 的响应能力、方法是监测它们是否确认(ACK)或不确认(NACK) MCU 的目标地址传输。 这是为了让 MCU 在一个 AFE 因某种原因发生故障(即不再响应)时调整其行为。 在这种情况下、以下哪个选项适合? (我本来希望找到一个专门用于检测目标的 NACK 的版本、例如"DL_I2C_IIDX_CONTROLLER_NACK"、但失败了。) 或者、使用 DriverLib 检测 I2C 目标器件发送的 NACK 的更巧妙的解决方案是什么?

以下摘录自我目前正在开发的"I2C IRQHandler"。 它涉及基于中断的 I2C 通信。

谢谢!

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

    你好,Kyungae,

    在以上示例中、您突出显示了 DL_I2C_IIDX_CONTROLLER_NACK、这正是您应该使用的。  作为控制器、当寻址的目标器件不响应时、您应获得一个 I2C 中断、具体而言就是该索引。

    只需确保启用 Addr/Data NACK 中断。

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

    您好、Dennis、

    感谢您的答复。 使用"DL_I2C_IIDX_CONTROL_NACK"并启用相应的中断解决了问题!

    此致、

    李京宰