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.
我们是否能够找到解决此问题的方法? 使用标准 MCU+ SDK 和 AM263x 控制卡很容易重新创建。
只需访问在不存在的 I2C 器件上执行 rd 或 power、假设7b 地址为0x61、然后在 AM263x 控制卡上地址为0x60的 LED IO 扩展器上执行 vali I2C 事务、您将需要有效访问失败。
你好、Kedar、
我们 已经复制了该问题、并确认它是 SDK I2C 驱动程序上的有效错误。 我们将在即将发布的09.02v 版本中修复此问题。
团队正在进行修复。 我们将在3-4天内共享修复程序。
此致、
阿比谢克- S
你好、Kedar、
根据处于阻塞模式时在 NACK 条件下的当前驱动器、在启动停止之前发布信号量。
在启动停止条件后、中断被禁用;因此不再发生中断。
检查总线是否繁忙是解决问题的一种方法、虽然这是一种相当原始的方法。
一种更好的方法是以不同的方式处理 NACK、以下是这样的一种方式。
- NACK 发生
-对象状态变为 I2C_ERROR
-将中断存储在 intStatusErr 中
-清除并禁用除 STOP 之外的所有中断
-启动停止
-控制器中断由于停止完成而再次触发
-在 I2C_ERROR/I2C_IDLE_STATE 中、检查 NACK 是否来自 intStatusErr
-清除和禁用停止中断
-发布信标
这样、在发布信标时、总线将处于空闲状态。
我已经附加了补丁文件。 您能否尝试将它应用到您的代码中、并让我知道它是否起作用?
此致、
阿比谢克- S
e2e.ti.com/.../8345.i2c_5F00_nak_5F00_interrupt_5F00_fix.patch
谢谢、此操作可解决此问题。
PS、您提供的补丁是"反转"的