MAX30100血氧心率模块(二)寄存器 – 中断
MAX30100的I2C接口最大速度400kHz。我是用STM32单片机的硬件I2C,因此能保证在高速通信的顺利运作并且不干扰其他子程序。该模块I2C地址是0xAE,请务必设对!I2C通信的SDA因为是开漏所以使用上拉电阻上拉到1.8V。
MAX30100 寄存器一 中断状态和中断设置
通过图可看到该器件分为两大部分,第一部分是发光电路,第二部分是光传感器ADC电路。
MAX30100中断在数据读取判断用处非常大,一旦某个功能完成后将会出发中断置高,如果设定了外部中断后外部中断变成低电平从而通知单片机处理相应的中断事件。MAX30100寄存器0x00是用作中断触发功能,一旦某个功能完成后相应的中断位置高电平,读取中断寄存器后中断全部清除。例如:SpO2转换完成,则读取FIFO数据寄存器或者读取中断寄存器会清除中断引脚(回到高电平状态),并且将中断寄存器清除为0。
- Bit 7:先入先出满(A_FULL)
- 在动脉血氧饱和度和心率模式中,这个中断触发器当FIFO写入指针跟FIFO读取指针一样减少一个的时候,意味着FIFO仅仅只有一个未记录的空间剩余,如果FIFO在下个转换时间内没有读取的话,FIFO会变满和数据丢失。
- Bit 6:温度准备好( TEMP_RDY )
- 当芯片内部温度转换完成的时候触发中断,使单片机读取温度数据的寄存器。
- Bit 5:心率数据准备好( HR_RDY )
- 在心率模式模式下,每采集一个样本就会触发一次中断。心率数据由一个IR数据组成,当读取FIFO数据寄存器后该位被清零。
- Bit 4:血氧数据准备好( SPO2_RDY)
- 在血氧模式下,每采集一个样本就会触发一次中断。心率数据由一个IR数据和RED数据组成,当读取FIFO数据寄存器后该位被清零。
- Bit 3-Bit 1 (未使用)
- Bit 0:电源就绪( PWR_RDY )
当器件电源电压VDD从UVLO(低电压锁定)电压下转到UVLO电压上的时候会触发电源中断,表示IC通电并且准备好采集数据。
MAX30100 寄存器二 硬件中断设置
这是硬件中断设置,可以设置哪个中断触发到中断引脚上,并且标注在中断寄存器。例如ENB_TEP_RDY设置为0,当触发中断后中断寄存器的TEMP_RDY设置为0而且INT引脚不会被拉低。如果ENB_TEP_RDY设置为1,INT引脚会被拉低。
四个标志位B3-B0没有用到,正常使用应该设置为0(禁用)。
注意:在硬件中断的每个源,除了电源就绪以外都可以在MAX30100的集成电路内的软件寄存器禁用。电源就绪中断不能被禁用,因为MAX30100的数字状态是建立在掉电条件(低电源电压)复位,默认所有的中断被禁止。为系统知道已发生掉电条件,以及装置内的数据被重置,因此,它是非常重要的。