max30102使用(max30102使用方法)

max30102使用(max30102使用方法)几个关键寄配置如下 Interrupt Enable 就是一些中断的使能 这里我们只使能 A FULL FIFO Almost Full Flag 这个中断 也就是当 FIFO 要满的时候产生中断 INT 引脚拉低 注 FIFO 深度 32 FIFO 要满的标准可以设定 通过 FIFO Configuratio 设置 比如 20



几个关键寄配置如下

Interrupt Enable

就是一些中断的使能,这里我们只使能A_FULL: FIFO Almost Full Flag这个中断,也就是当FIFO要满的时候产生中断(INT引脚拉低),(注:FIFO深度32,FIFO要满的标准可以设定(通过FIFO Configuration设置),比如20,当FIFO中有20个数据时,产生中断,这时候去读FIFO中的数据)。

在这里插入图片描述

FIFO Configuration

其中B7-B5设置采样均值(多个采样点求均值输出一个值),B4表示FIFO满之后是否继续写入,B3-B0就是设置Almost Full 的,比如0x00就是FIFO中有32个样本时产生INT中断。
在这里插入图片描述
在这里插入图片描述

Mode Configuration

模式设置(B2-B0), 0x02表示HR模式,0x03表示SpO2模式。
在这里插入图片描述

SpO2 Configuration

这里主要配置采样率,0x17为1000Hz,还得注意对照数据手册,HR和SpO2模式,LED脉宽,都对采样率有限制,具体参考数据手册。
在这里插入图片描述

使用MAX30102采集数据时,设置SpO2模式,FIFO Almost Full = 20(也用过32),采样率1000,每次中断读一次FIFO(读完),实际采样时,两次INT时间间隔大于20ms,采6000个样本时间大于6s,大概在8s左右,与预想不符合。猜想在FIFO读的时候,未向FIFO写数据,有数据丢失。

配置

 

问题描述

使用MAX30102的"FIFO Almost Full Flag"中断来读数据,在HR Mode下,当FIFO快满时产生INT中断,然后一次性读出FIFO数据,按照预想,两次中断时间间隔应该等于采样周期*FIFO快满的个数。例如:FIFO快满设置为20,采样率1000,则两个中断之间时间间隔为20ms,但是实际情况不是这样。
实际运行中,两个INT时间间隔为23ms,而从FIFO被读出开始计算,则刚好20ms,如图,难道在FIFO读取期间,没有数据写入FIFO ?
在这里插入图片描述

配置

 

而采用SPO_2模式就没有出现这种问题,如下图,在采样率1000,FIFO ALMOST FULL为32时,INT间隔恰好为32ms。
在这里插入图片描述

因为前期调试一直使用HR模式,然后数据手册中的关于FIFO的描述,HR Mode 和 SpO2 Mode,在使用FIFO的描述上,不知道为什么会出现这种情况,看数据手册,两个模式INT和应该是一样的呀。先这样吧呜呜呜。另外,附上部分代码。

使用FreeRTOS,在INT中断服务函数给采集任务抛出事件,任务开始采集

INT中断服务函数

 

采集任务


                    
编程小号
上一篇 2025-01-25 10:30
下一篇 2025-01-24 20:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/49333.html