平台 - ARM9
我有一个通过 I2C 连接到 ARM9 的第三方设备。我的问题是 I2C 读/写发生了变化。看起来 IRQ 线已被断言,但在有数据要读取时从未被取消断言。由于第三方设备对地址包进行 NACK,读取失败。所以任何后续的写入都会失败。
我想知道我的中断处理是否正常。在为 IRQ 提供服务的 ISR 中,我禁用中断,取消注册中断处理程序,然后向任务发出信号以从 I2C 总线读取。最后,我重新启用中断。
当任务为上面发布的信号提供服务时,我尝试从 I2C 总线读取数据,但这失败了。最后,我总是在读取尝试后重新注册 ISR。在处理读取信号期间不会发生中断禁用/启用。
我的问题是读取/写入 I2C 总线时是否需要禁用中断?
选择的编程语言是使用专有 RTOS 的 c。