MAX30100和MAX30102是常用的测量心率的模块,MAX30100是能够读取心率、血氧的传感器,通信方式是通过IIC进行通信。其工作原理是通过红外led灯照射,能够得到心率的ADC值,通过算法处理相应的AD值得心率。
STM32使用IIC协议访问MAX30100时序如下图,此次使用STM32两个IO口模拟IIC协议,具体IO口见后续程序。
MAX30100内部功能框图如下图,由图可见,RED和IR照射然后使用ADC进行数据采集,采集后的AD值经过数字滤波器进入数据寄存器,然后使用IIC进行数据采集,在转换AD值时,也可以采集温度值(用于校正)。
MAX30100内部全部寄存器如下图,具体每位功能见数据手册(已上传)
MAX30100FIFO最大可存64B的数据,其中存储数据如下图,第一字节存储IR值高八位,第二字节存储IR值的低八位,第三字节存储RED的高八位,第四字节存储RED的第八位,第五字节存储IR的高八位,依次类推。其中,数据始终左对齐。
此次设计采用SPO2模式,即需要采集IR和RED值。以下是MAX30100在SPO2的时序图。第一步,IIC开始,设置模式。第二步,时隔29ms温度数据准备好,置相应的中断位。第三步。。。。(每一步具体描述见下图)
使用IIC访问MAX30100时,MAX30100器件地址为0XAE,写操作R/W=0,读操作R/W=1.具体格式如下图。
STM32通过IIC访问MAX30100时,向MAX30100某个寄存器写数据过程如下图。第一步IIC开始,第二步写从机地址+(R/W=0),第三步等待应答,第四步写寄存器地址,第五步等待应答,第六步写代写数据,第七步等待应答,第八步IIC停止。
STM32通过IIC访问MAX30100时,从MAX30100某个寄存器读数据过程如下图。第一步IIC开始,第二步写从机地址+(R/W=0),第三步等待应答,第四步写寄存器地址,第五步等待应答,第六步重新开始,第七步写从机地址+(R/W=1图中有误),第八步等待应答,第九步从寄存器读数据,第十步发送非应答,第十一步IIC停止。
STM32通过IIC访问MAX30100时,从MAX30100的寄存器连续读多个数据过程如下图。
MAX30100引脚连接:
SCL连接PB6, SDA连接PB7,VIN连接3.3V,共地,其它引脚可以不用连接。
MAX30100和MAX30102是常用的测量心率的模块,MAX30100是能够读取心率、血氧的传感器,通信方式是通过IIC进行通信。其工作原理是通过红外led灯照射,能够得到心率的ADC值,通过算法处理相应的AD值得心率。
STM32使用IIC协议访问MAX30100时序如下图,此次使用STM32两个IO口模拟IIC协议,具体IO口见后续程序。
MAX30100内部功能框图如下图,由图可见,RED和IR照射然后使用ADC进行数据采集,采集后的AD值经过数字滤波器进入数据寄存器,然后使用IIC进行数据采集,在转换AD值时,也可以采集温度值(用于校正)。
MAX30100内部全部寄存器如下图,具体每位功能见数据手册(已上传)
MAX30100FIFO最大可存64B的数据,其中存储数据如下图,第一字节存储IR值高八位,第二字节存储IR值的低八位,第三字节存储RED的高八位,第四字节存储RED的第八位,第五字节存储IR的高八位,依次类推。其中,数据始终左对齐。
此次设计采用SPO2模式,即需要采集IR和RED值。以下是MAX30100在SPO2的时序图。第一步,IIC开始,设置模式。第二步,时隔29ms温度数据准备好,置相应的中断位。第三步。。。。(每一步具体描述见下图)
使用IIC访问MAX30100时,MAX30100器件地址为0XAE,写操作R/W=0,读操作R/W=1.具体格式如下图。
STM32通过IIC访问MAX30100时,向MAX30100某个寄存器写数据过程如下图。第一步IIC开始,第二步写从机地址+(R/W=0),第三步等待应答,第四步写寄存器地址,第五步等待应答,第六步写代写数据,第七步等待应答,第八步IIC停止。
STM32通过IIC访问MAX30100时,从MAX30100某个寄存器读数据过程如下图。第一步IIC开始,第二步写从机地址+(R/W=0),第三步等待应答,第四步写寄存器地址,第五步等待应答,第六步重新开始,第七步写从机地址+(R/W=1图中有误),第八步等待应答,第九步从寄存器读数据,第十步发送非应答,第十一步IIC停止。
STM32通过IIC访问MAX30100时,从MAX30100的寄存器连续读多个数据过程如下图。
MAX30100引脚连接:
SCL连接PB6, SDA连接PB7,VIN连接3.3V,共地,其它引脚可以不用连接。
举报