f28022 I2C 问题。
我遵循了中的提示
http://processors.wiki.ti.com/index.php/I2C_Tips
我在示例代码中看到、作者通过清除 ICMDR_IRS 不时地重置 I2C 模块。
主要是为了清除 nacks、但有一次他在传输开始时将模块复位。
我的应用有两个只连接到 Piccolo 的从器件、而 UP 是唯一的主器件。
有时、总线似乎会挂起、因为我会发送一个停止、然后等待停止在 MDR 中消失、但它从未停止。 没有总线时钟、BB 被置位。
很明显、这是一个这样的缺陷、我仍在跟踪它、但是...
我应该等待一段时间、然后在一段时间后、重置模块并重新启动、或者是否有其他方法可以清除这种情况?
本文讨论了如何将引脚置于 GPIO 模式并多次切换时钟、以清除从器件之一的卡滞 ACK。 我理解这一理论、但实际上、这种情况发生的频率如何?
文献 SPRUFZ9D Piccolo I2C 模块第5.4节指出、我应该在设置 ICMDR_IRS 之后等待一段时间、以便 BB 标志与实际总线相匹配。
由于我是唯一的主器件、是否需要等待?
任何想法都很有帮助。
谢谢、
标记。