zoukankan      html  css  js  c++  java
  • 关于MAX30100心率的编程

      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值。

      

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

      

      转载请注明出处。

  • 相关阅读:
    Linux进程相关的一些笔记
    [Project Euler] 来做欧拉项目练习题吧: 题目007
    [Project Euler] 来做欧拉项目练习题吧: 题目015
    [Project Euler] 来做欧拉项目练习题吧: 题目009
    [Project Euler] 来做欧拉项目练习题吧: 题目017
    [Project Euler] 来做欧拉项目练习题吧: 题目014
    [Project Euler] 来做欧拉项目练习题吧: 题目013
    [Project Euler] 来做欧拉项目练习题吧: 题目006
    [Project Euler] 来做欧拉项目练习题吧: 题目008
    [Project Euler] 来做欧拉项目练习题吧: 题目012
  • 原文地址:https://www.cnblogs.com/asam/p/7711336.html
Copyright © 2011-2022 走看看