MAX30100是能够读取心率、血氧的传感器,通信方式是通过IIC进行通信。
其工作原理是通过红外led灯照射,能够得到心率的ADC值。

图为MAX30100的寄存器。
可以分为五类,状态寄存器、FIFO、控制寄存器、温度寄存器、ID寄存器。
温度寄存器是读取芯片的温度值,以矫正因为温度而产生的偏差。
ID寄存器是读取芯片的ID号。
重点在于另外三类寄存器。
STATUS寄存器
其中,STATUS寄存器有两个,一个是中断状态寄存器,一个是中断使能寄存器。

例如,当你使能了心率中断,当心率转换结束时,其状态位就会置1。
FIFO寄存器

数据存储在FIFO_DATA寄存器,我们主要去读取他就可以了。其余三个是溢出次数以及读写指针。
DATA存的数据是每次读到的ADC值。每一次会读四次,依次是IR的高低数据、RED的高低数据。

Configured寄存器

Mode寄存器中 SHDN是低功耗控制位、RESET是复位、TEMP_EN是温度检测使能,MODE是模式选择。
SPO2设置寄存器 主要是设置血氧浓度相关的参数的,以及LED_PW的功率。
LED寄存器是设置两颗灯的脉冲时间。
程序编写
首先要对max30100进行初始化配置。
max30100_write(0x06,0x0B); //设置模式 max30100_write(0x01,0xF0); //开启中断 max30100_write(0x09,0x33); //LED设置 max30100_write(0x07,0x43); max30100_write(0x02,0x00); // set FIFO write Pointer reg = 0x00 for clear it max30100_write(0x03,0x00); // set Over Flow Counter reg = 0x00 for clear it max30100_write(0x04,0x00); // set FIFO Read Pointer reg = 0x00 for clear it
然后在循环里读取max30100的中断状态寄存器,查询心率中断是否置位
init_flag=max30100_read(max_reg_init_stat_add); if(init_flag==0x20) { max30100_buff_read(buf); max30100_write(0x02, 0x00); //set FIFO write Pointer reg = 0x00 for clear it max30100_write(0x03, 0x00); //set Over Flow Counter reg = 0x00 for clear it max30100_write(0x04, 0x00); //set FIFO Read Pointer reg = 0x00 for clear it ir_value=buf[0]*256+buf[1]; red_value=buf[2]*256+buf[3];
}
既可以得到心率的ADC值。

再通过相关算法(如检测其峰值间隔时间)既可以得出心率
到此这篇max30100心率算法(max30100心率算法程序)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/76653.html