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心率的编程的更多相关文章

  1. 基于STM32F103的Max30100心率、血氧检测代码(转载)

    MAX30100是能够读取心率.血氧的传感器,通信方式是通过IIC进行通信.其工作原理是通过红外led灯照射,能够得到心率的ADC值.       MAX30100的寄存器可以分为五类,状态寄存器.F ...

  2. 基于uFUN开发板的心率计(三)Qt上位机的实现

    前言 上两周利用周末的时间,分别写了基于uFUN开发板的心率计(一)DMA方式获取传感器数据和基于uFUN开发板的心率计(二)动态阈值算法获取心率值,介绍了AD采集传感器数据和数据的滤波处理获取心率值 ...

  3. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  6. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  7. C#异步编程(一)

    异步编程简介 前言 本人学习.Net两年有余,是第一次写博客,虽然写的很认真,当毕竟是第一次,肯定会有很多不足之处, 希望大家照顾照顾新人,有错误之处可以指出来,我会虚心接受的. 何谓异步 与同步相对 ...

  8. UE4新手之编程指南

    虚幻引擎4为程序员提供了两套工具集,可共同使用来加速开发的工作流程. 新的游戏类.Slate和Canvas用户接口元素以及编辑器功能可以使用C++语言来编写,并且在使用Visual Studio 或 ...

  9. C#与C++的发展历程第三 - C#5.0异步编程巅峰

    系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 3. C#与C++的发展历程第三 - C#5.0异步编程的巅峰 C#5.0 ...

随机推荐

  1. 卡在 构建 gradle 项目信息

    之所以卡死是因为Android Studio在初次构建的时候,会联网进行gradle目录的更新操作.断网之后就不会去主动更新了. 断网. 打开项目. 把 gradle 改成 使用当地. ======= ...

  2. 项目冲刺Second

    Second Sprint 1.各个成员今日完成的任务 蔡振翼:完成管理员界面 谢孟轩:完成用户界面 林凯:完成登录界面 肖志豪:完成主界面 吴文清:创建数据库 刘华强:完成连接数据库,编写查询语句 ...

  3. BZOJ.2440.[中山市选2011]完全平方数(莫比乌斯函数 二分)

    题目链接 总感觉博客园的\(Markdown\)很..\(gouzhi\),可以看这的. 题意即求第\(k\)个无平方因子数. 无平方因子数(Square-Free Number),即分解之后所有质因 ...

  4. 【莫队算法】【权值分块】bzoj3920 Yuuna的礼物

    [算法一] 暴力. 可以通过第0.1号测试点. 预计得分:20分. [算法二] 经典问题:区间众数,数据范围也不是很大,因此我们可以: ①分块,离散化,预处理出: <1>前i块中x出现的次 ...

  5. .net core中的高效动态内存管理方案

    .net core在新增的System.Buffers中引入了一大堆高效内存管理的类,如span和memory.内存池.本文今天这里介绍一个高效动态内存访问方案. ReadOnlySequenceSe ...

  6. SGU 101 Domino (输出欧拉路径)

    101. Domino time limit per test: 0.25 sec. memory limit per test: 4096 KB Dominoes – game played wit ...

  7. ElasticSearch入门 :Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  8. 汽车之家店铺数据抓取 DotnetSpider实战

    一.背景 春节也不能闲着,一直想学一下爬虫怎么玩,网上搜了一大堆,大多都是Python的,大家也比较活跃,文章也比较多,找了一圈,发现园子里面有个大神开发了一个DotNetSpider的开源库,很值得 ...

  9. Linux/CentOS服务器 一个网卡绑定多IP地址(永久设置)

    有时我们在使用 Linux 服务器时需要配置多个IP地址.如果要配置多个IP地址是否需要多块网卡呢?答案是否定的.以 CentOS 系统为例,多个 IP 地址是可以共享一块物理网卡的. 如何永久为单网 ...

  10. 智能指针scoped_ptr

    对应C++11中的unique_ptr #include <iostream> #include <memory> class foo { public: foo() { st ...