2025年max30100心率算法(max30100心率算法程序)

max30100心率算法(max30100心率算法程序)MAX30100 是能够读取心率 血氧的传感器 通信方式是通过 IIC 进行通信 其工作原理是通过红外 led 灯照射 能够得到心率的 ADC 值 图为 MAX30100 的寄存器 可以分为五类 状态寄存器 FIFO 控制寄存器 温度寄存器 ID 寄存器 温度寄存器是读取芯片的温度值 以矫正因为温度而产生的偏差 ID 寄存器是读取芯片的 ID 号

大家好,我是讯享网,很高兴认识大家。



MAX30100是能够读取心率、血氧的传感器,通信方式是通过IIC进行通信。

  其工作原理是通过红外led灯照射,能够得到心率的ADC值。

 

  

关于MAX30100心率的编程_红外
讯享网

 

   图为MAX30100的寄存器。

 

  可以分为五类,状态寄存器、FIFO、控制寄存器、温度寄存器、ID寄存器。

  温度寄存器是读取芯片的温度值,以矫正因为温度而产生的偏差。

  ID寄存器是读取芯片的ID号。

  

  重点在于另外三类寄存器。

STATUS寄存器

  其中,STATUS寄存器有两个,一个是中断状态寄存器,一个是中断使能寄存器。  

  关于MAX30100心率的编程_初始化_02

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

  

FIFO寄存器

关于MAX30100心率的编程_红外_03

 

  数据存储在FIFO_DATA寄存器,我们主要去读取他就可以了。其余三个是溢出次数以及读写指针。

  DATA存的数据是每次读到的ADC值。每一次会读四次,依次是IR的高低数据、RED的高低数据。

  关于MAX30100心率的编程_寄存器_04

  

 Configured寄存器

  关于MAX30100心率的编程_寄存器_05

 

    Mode寄存器中 SHDN是低功耗控制位、RESET是复位、TEMP_EN是温度检测使能,MODE是模式选择。

    SPO2设置寄存器 主要是设置血氧浓度相关的参数的,以及LED_PW的功率。

    LED寄存器是设置两颗灯的脉冲时间。

 

程序编写 

 

  首先要对max30100进行初始化配置。

 

关于MAX30100心率的编程_寄存器_06
 max30100_write(0x06,0x0B); //设置模式 
讯享网 max30100_write(<span>0x01,<span>0xF0); <span>//<span>开启中断 max30100_write(<span>0x09,<span>0x33); <span>//<span>LED设置 max30100_write(<span>0x07,<span>0x43<span>);      max30100_write(<span>0x02,<span>0x00); <span>//<span> set FIFO write Pointer reg = 0x00 for clear it max30100_write(<span>0x03,<span>0x00); <span>//<span> set Over Flow Counter reg = 0x00 for clear it max30100_write(<span>0x04,<span>0x00); <span>//<span> set FIFO Read Pointer reg = 0x00 for clear it </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre> 
关于MAX30100心率的编程_寄存器_06

讯享网

 

 

  然后在循环里读取max30100的中断状态寄存器,查询心率中断是否置位

 

关于MAX30100心率的编程_寄存器_06
 init_flag=max30100_read(max_reg_init_stat_add); 
讯享网 <span>if(init_flag==<span>0x20<span>) { max30100_buff_read(buf); max30100_write(<span>0x02, <span>0x00); <span>//<span>set FIFO write Pointer reg = 0x00 for clear it max30100_write(<span>0x03, <span>0x00); <span>//<span>set Over Flow Counter reg = 0x00 for clear it max30100_write(<span>0x04, <span>0x00); <span>//<span>set FIFO Read Pointer reg = 0x00 for clear it 
 ir_value=buf[<span>0]*<span>256+buf[<span>1<span>]; red_value=buf[<span>2]*<span>256+buf[<span>3];<br />    }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></pre> 
关于MAX30100心率的编程_寄存器_06

 

 

   既可以得到心率的ADC值。

 

  关于MAX30100心率的编程_初始化_10

 

   再通过相关算法(如检测其峰值间隔时间)既可以得出心率

小讯
上一篇 2025-04-20 09:28
下一篇 2025-06-06 21:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/150305.html