c - 来自 gpio int 处理程序的 i2c 传输在 imx6sx cortex m4 侧失败

标签 c interrupt i2c interrupt-handling cortex-m

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

我的问题是我不想在 GPIO INT 处理程序中等待直到 i2c 传输完成,这就是为什么我也让 i2c 中断,但如果我不在 GPIO Int 处理程序中等待,有些事情发生在 i2c 上,因为传感器不确认传输,所以我没有收到其他数据就绪中断。

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

谢谢

最佳答案

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

考虑使用 RTOS 为您管理它。

关于c - 来自 gpio int 处理程序的 i2c 传输在 imx6sx cortex m4 侧失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923277/

相关文章:

c++ - ESP8266 I2C从站不应答数据

c - 这种在 C 标准中标记指针的方法是否符合标准?

java - main 函数不返回任何内容。为什么?

operating-system - 在中断处理期间禁用中断

ios - iOS 应用程序在后台录制时音频中断

python - 为什么在我的 Beaglebone Black 上运行此 i2c 示例代码时会出现 IOError?

c++ - 软 I²C ping 功能

c - 了解一些源代码

将结构复制到动态分配的结构数组中

linux - 设置中断标志 (sti) 使 linux 内核崩溃