C - 来自 GPIO int 处理程序的 I2C 传输在 IMX6SX 皮层 M4 端失败



我遇到了困扰我好几天的事情,所以我正在 IMX6SX Cortex M4 端工作,我有一个传感器连接到其中一个 I2C 总线,传感器设置了 INT1 上准备好的数据,该 INT1 连接到来自 MCU 的其中一个 GPIO。启动后,我配置传感器,使其输出数据就绪中断。请注意,i2c 在中断模式下也可以工作,因此如果我在断言数据就绪行时尝试读取传感器,我必须在 GPIO INT 处理程序中等待,直到 i2c 传输完成才能获得另一个数据就绪 int 等等。

我的问题是我不想在 GPIO INT 处理程序中等待 i2c 传输完成,这就是为什么我也在中断上进行了 i2c,但是如果我不在 GPIO Int 处理程序中等待,i2c 会发生一些事情,因为传感器它没有停止传输,所以我没有得到其他数据就绪的中断。

如果您知道可能出了什么问题,请提供帮助,i2c 总线中断的优先级也高于 GPIO 中断,不幸的是我无法使用调试器进行调试,只能使用老式的方式,控制台中的 printfs

谢谢

您可以使用 INT1 触发优先级较低的软件中断来处理 i2c,然后退出释放中断。

考虑使用 RTOS 为您管理此问题。

最新更新