我目前正在尝试开发脉搏血氧仪。为此,我使用了 MAX30102 传感器和 NXP LPC1768 微控制器。
通信通过 I2C 完成。
我已将 MAX30102 传感器配置为在 FIFO 满时立即生成中断。
一旦我以调试模式启动程序,就会产生一个中断(调试跳转到中断服务程序,逻辑分析器显示中断线变低)。
当我尝试在第一次中断时读取 MAX30102 的中断状态寄存器时,得到的值为 0x00。 也没有其他中断产生。我怀疑这是因为I2C读取中断状态寄存器没有正常工作,因此MAX30102上的中断没有复位。
但是,如果我读取 FIFO 数据寄存器,则会连续产生中断,因为读取该寄存器会重置 MAX30102 上的中断。
但现在到了异想天开的部分。
如果我用相同的I2C读取功能读取MAX30102的其他寄存器,我得到值。例如我之前写过的FIFO_CONFIG 寄存器。我通过读取写入寄存器的相同值来获得。
但是为什么同样功能的中断状态寄存器的读取不起作用呢?
我跟踪 I2C_Read_Func
tion 以使用逻辑分析仪读取两个寄存器,这对两个寄存器都是正确的。
你们有没有人对这个问题可能是什么以及我可以尝试什么有任何一般性的想法, 因为我对这个项目感到绝望?!我已经尝试了很多,所以我很感激我还没有追求的任何解决方案。
附上我的代码文件。 我试着把它切到重要的部分,但我不能再缩小范围了。