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

 

  

 

   再通過相關算法(如檢測其峰值間隔時間)既可以得出心率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM