2304668_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2304668_zh-CN

2304668_zh-CN

S32K344 悬挂问题

MCU:S32K344
OS:FreeRTOS
S32Design Studio:3.4.3

问题:MCU 因 I2C 写阻塞(无超时)而挂起

嗨,团队、

我们正在使用基于 S32K344 MCU 的定制板。我们面临的问题是,在某些I2C错误状态下,MCU在运行时挂起。

我们有一个通过 I2C 接口连接的 IMU 从属设备。偶尔,当

  • IMU没有供电,或
  • I2C 写入操作失败(例如,没有 ACK /总线卡住),

I2C 写入 API不会返回或进入超时状态。结果,执行 I2C 事务的 FreeRTOS 任务被无限期地卡住,最终导致应用程序挂起。

意见:

  • 当从机没有响应或总线保持在低电平时,就会出现问题。
  • I2C 驱动程序似乎阻塞,等待传输完成。
  • 在 RTOS 或驱动程序级别上不会触发超时或恢复机制。

请求支持:

  1. 如何在 S32K344 上添加或强制执行I2C 事务超时?
  2. 有没有推荐的方法来恢复卡住的 I2C 总线(SDA/SCL 保持在低电平)?
  3. 在 S32K3 设备上的 FreeRTOS 下安全使用 I2C 的最佳做法是什么?
  4. 恩智浦是否有稳健处理这种情况的驱动程序配置或示例?

任何指导或参考将不胜感激。

谢谢& ,
Vinay

Re: S32K344 Hanging issue

嗨,@vinaykl、


你的 RTD 已经很老了。

有什么原因吗?

从 RTD 2.0.0 到当前的 RTD 7.0.0,已经修复了许多错误。


我猜您使用的是 I2C 驱动程序的阻塞 API。

请使用异步传输 API 以及 GetStatus() 和超时。

danielmartynek_0-1770627240529.png


如果从设备一直将 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


此致,

丹尼尔

Tags (1)
No ratings
Version history
Last update:
‎02-10-2026 03:34 AM
Updated by: