MCU:S32K344
OS:FreeRTOS
S32Design Studio:3.4.3
嗨,团队、
我们正在使用基于 S32K344 MCU 的定制板。我们面临的问题是,在某些I2C错误状态下,MCU在运行时挂起。
我们有一个通过 I2C 接口连接的 IMU 从属设备。偶尔,当
I2C 写入 API不会返回或进入超时状态。结果,执行 I2C 事务的 FreeRTOS 任务被无限期地卡住,最终导致应用程序挂起。
任何指导或参考将不胜感激。
谢谢& ,
Vinay
嗨,@vinaykl、
你的 RTD 已经很老了。
有什么原因吗?
从 RTD 2.0.0 到当前的 RTD 7.0.0,已经修复了许多错误。
我猜您使用的是 I2C 驱动程序的阻塞 API。
请使用异步传输 API 以及 GetStatus() 和超时。
如果从设备一直将 SDA 保持在较低水平,则可以将其恢复,请参阅 I2C 用户手册:
第 3.1.16 节总线畅通
https://www.nxp.com/docs/en/user-guide/UM10204.pdf
RTD 驱动程序没有用于恢复的 API。
AN4803 中的一个例子
I2C 恢复功能定义
https://www.nxp.com/docs/en/application-note/AN4803.pdf
此致,
丹尼尔