Thread 中讨论的其他器件:MSPM0G3507
工具/软件:
您好:
我尝试熟悉 DriverLib 中的 I2C 外设。 我正在使用以下示例程序来帮助我: I2C_CONTROLLER_RW_multibyte_fifo_poll_LP_MSPM0G3507_nortos_gcc
该示例看起来很简单、不太复杂、难以理解、但我对出现故障时的代码行为提出了一些问题。
在 测试代码时、我忘记为与我连接的器件设置正确的 I2C 从器件地址。 因此、我注意到软件卡在 for 循环中、它等待 RX FIFO 填充从节点预期的数据(请参阅下图)。

这对于我的用例来说是个问题,因为这在技术上现在是一个无限循环,会使程序的其余部分饿死 — 不好。 这似乎可以通过在继续读取数据之前检查目标从动器件的 ACK 状态来缓解。
话虽如此、
- 是否有办法检查传感器在读取事务的写入部分期间是否 NACK? 这样您就可以安全地防止软件尝试从那里没有的东西读取。 我浏览了 DriverLib 文档、没有找到任何内容。
- DriverLib 似乎不提供有关每个事务状态的任何反馈。 是否可以调用任何函数来获取此信息?
另一方面、示例程序使用此 while 循环来确保 I2C 外设不会繁忙、然后再执行下一步。 在什么情况下软件会陷入困境、以及有哪些解决方案可以解决此问题。

最后、从传感器读取时、写入和读取事务之间是否应该发生一定的延迟?
感谢您的帮助! 非常感谢。
