spo2数据集_自己翻译的Max30100寄存器中文资料(血氧心率传感器IC)

Max30100 可穿戴光电式的血氧心率传感器IC

总体描述:

Max30100是一款集成的脉搏血氧和心率检测传感器。它使用了两个LED灯,一个用来优化光学的光电探测器,和低噪声模拟信号处理器,用来检测脉搏的血氧和心率信号。

Max30100的运行电压在1.8V到3.3V之间,并且可以通过软件来控制,待机电流极小,可以忽略不计,这样可以使电源在如何时候都能保持连接状态。

应用:可穿戴设备;

健身设备;

医疗监控设备;、

Benefts和功能完整的脉搏血氧计和心率传感器解决方案简化了设计。

集成的LED,照片传感器和高性能模拟面前端小x 2.8毫米2.8毫米5.6毫米14-Pin光学增强System-in-Package超低功耗操作增加电池寿命,可穿戴设备可编程采样率和当前电力储蓄超低关闭当前(0.7,typ)

先进的功能提高了测量性能的高SNR提供了健壮的运动工件弹性集成环境光消除高采样率能力快速数据输出能力

0a5f04c2340eaf8c0fbecc3bf0b13a56.png

20aa373ab5241ca994ea6ff1a53ab2fb.png

e96cd9f13886e2aa2e077957e43a44c4.png

15afd634fd154a322fda44b6853bf9a1.png

Table1  寄存器图表及其描述

cf2eaaf285c0fb1676629e40b752c740.png

详细描述:

1、中断状态寄存器(基地址0x00)

826597ef332d8709eb77d56c07f12523.png

总共有5个中断状态,每个中断状态控制都是一样的:高电平的相关中断使能,直到中断被清除,中断才停止。

无论什么时候,只要中断寄存器被读或者中断寄存器被触发,中断都会被清除。例如:如果SpO2传感器被触发当转换完成,读到FI

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是代码示例,使用I2C接口与MAX30100通讯: #include <Wire.h> #define MAX30100_ADDRESS 0x57 //MAX30100芯片I2C地址 #define MAX30100_MODE_CONF 0x09 //模式配置寄存器 #define MAX30100_MODE_HRONLY 0x03 //Heart Rate Only操作模式 #define MAX30100_FIFO_CONF 0x08 //FIFO配置寄存器 #define MAX30100_FIFO_ROLLOVER 0x40 //FIFO读写方式,先进先出 #define MAX30100_FIFO_RD_PTR 0x04 //读指针寄存器 #define MAX30100_FIFO_WR_PTR 0x02 //写指针寄存器 #define MAX30100_FIFO_DATA 0x07 //数据寄存器 byte readRegister(byte address); //读寄存器值函数 void writeRegister(byte address, byte data); //写寄存器值函数 void setup() { Serial.begin(9600); Wire.begin(); writeRegister(MAX30100_MODE_CONF, MAX30100_MODE_HRONLY); //设置模式为Heart Rate Only模式 writeRegister(MAX30100_FIFO_CONF, MAX30100_FIFO_ROLLOVER); //设置FIFO读写方式为先进先出 delay(100); } void loop() { int16_t red, ir; byte readPointer, writePointer, numberOfSamples; readPointer = readRegister(MAX30100_FIFO_RD_PTR); //读取读指针位置 writePointer = readRegister(MAX30100_FIFO_WR_PTR); //读取写指针位置 numberOfSamples = writePointer - readPointer; //计算FIFO中样本数量 if (numberOfSamples < 0) { numberOfSamples += 32; //处理溢出情况 } if (numberOfSamples >= 4) { //如果FIFO中样本数量大于等于4,则读取最后4个样本 byte temp[6] = {0}; //定义数据缓存数组 readRegister(MAX30100_FIFO_DATA, temp, 6); //读取最后4个样本 red = (int16_t)(temp[0] << 8 | temp[1]); //将两个字节合并成一个16位有符号整数 ir = (int16_t)(temp[3] << 8 | temp[4]); float redAC = (float)(red - ir); //计算红光AC值 float irAC = (float)(ir); //计算红外光AC值 float ratio = redAC / irAC; //计算红外/红光比值 float spo2 = 110 - 25 * ratio; //计算血氧饱和度 Serial.println(spo2); //将结果打印到串口 } delay(1000); //每隔1秒进行一次测量 } byte readRegister(byte address) { byte result = 0; Wire.beginTransmission(MAX30100_ADDRESS); //发送I2C START信号 Wire.write(address); //发送寄存器地址 Wire.endTransmission(false); //保持总线占用,继续发起I2C通讯 Wire.requestFrom(MAX30100_ADDRESS, 1); //请求读取1字节数据 if (Wire.available()) { result = Wire.read(); //读取数据 } return result; } void writeRegister(byte address, byte data) { Wire.beginTransmission(MAX30100_ADDRESS); //发送I2C START信号 Wire.write(address); //发送寄存器地址 Wire.write(data); //发送寄存器数据 Wire.endTransmission(); //发送I2C STOP信号 } 注意:以上代码仅供参考,实际使用时需要根据实际情况作出适当修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值