工具/软件:
问题:
我们已经尝试将 I2C 通道 4 CLK 连接至 GND、以复制 MCU 和从器件之间 I2C 通信链路中断的场景。 在测试场景后、我们观察到、一旦 CLK 短接至 GND、MCU 控制器就会停止运行、因为它可能进入异常处理程序状态 ( HardFaultHandler )。 我们还实施了 I2C 通信恢复机制、可在运行时失败时启动通信、这在该问题场景中似乎也无法正常工作。
分析:
作为问题分析的一部分、我们尝试了以下步骤:
一旦引起故障情况并使 I2C 通信进入故障状态(通过将 I2C CLK 短接至 GND)、作为恢复机制的一部分、我们已尝试以下方法来分析和解决问题:
- 在执行恢复机制之前、通过使用驱动程序函数调用 ( I2C_CANCEL )。
- 已更换“"</s>“ I2C_TRANSFER “函数调用、带有 “ I2C_transferTimeout “、超时 100ms、以避免 I2C 通道无限期保持
- I2C 通信失败后、向添加了驱动程序调用 禁用、复位和启用 在使用进入恢复序列之前对 I2C 驱动器进行 I2C 驱动
- MAP_SysCtlPeripheralDisable (SYSCTL_PERIPH_I2C4);
- MAP_SysCtlPeripheralReset (SYSCTL_PERIPH_I2C4);
- MAP_SysCtlPeripheralEnable (SYSCTL_PERIPH_I2C4);
- 此外、我们已经尝试重新初始化 I2C 驱动器后恢复序列、然后相应地重新配置 I2C 通道
- 但是、控制器的行为保持不变、因为在上述所有情况下、控制器都进入了异常处理程序、并且软件停止运行/进入 WDG 复位场景。
所需支持:
在这种情况下、需要获得必要的支持、以便了解在上述错误情况下调用驱动程序时控制器为什么会进入硬故障异常处理程序。