一、教程简介
本教程使用CubeMX配合Keil5编写代码,带你10分钟拿下MAX30102。在官方例程的基础上进行移植和封装,测量数据准确。采用模拟I2C,任意三个引脚均可驱动。
二、MAX30102简介
MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。MAX30102采用一个1.8V电源和一个独立的5.0V用于内部LED的电源,应用于可穿戴设备进行心率和血氧采集检测,佩戴于手指点耳垂和手腕处。标准的I2C兼容的通信接口可以将采集到的数值传输Arduino、KL25Z、STM32、STC51等单片机进行心率和血氧计算。
此外,该芯片还可以通过软件关断模块,待机电流接近为零,实现电源始终维持供电状态。
三、驱动移植
(一)CubeMX生成基础工程
1、选择芯片,这里选择STM32F103c8t6
2. 配置Debug(SW模式)
3. 配置时钟
4.配置MAX30102驱动引脚(可任意选择,只要接线按照自定义的引脚来接就行)
这里选择B7-SCL,B8-SDA,B9-INT。
选择合适的SCL引脚,将其重命名为:MAX30102_SCL
选择合适的SDA引脚,将其重命名为:MAX30102_SDA
选择合适的INT引脚,将其重命名为:MAX30102_INT
5、配置串口,用于输出测量结果
6、生成工程文件
(二)获取驱动源码
1、 请添加威信:able078
2、 发送信息:获取MAX30102驱动
我投入了大量时间与精力开发这款驱动,为了能继续提供更优质的驱动资源,获取驱动文件需要付费。
请相信,免费的未必是最经济的选择,而投资于高质量的资源,往往能带来超乎预期的回报。本驱动有着极高的易用性和兼容性,只需遵循简明教程,几乎可在10分钟内移植成功。可为您节省大量的开发时间。
(三)Keil5编写代码
1、添加驱动文件:打开生成的项目文件夹,分别将两个 .c 文件和两个 .h 文件移入下图所示的文件夹中。
2、 打开工程
3、添加编译文件
4、引用头文件
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usart.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "max30102.h"
/* USER CODE END Includes */
5、定义两个变量,用于存储测量到的心率数据和血氧数据
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
uint8_t Hr_Value = 0; //心率数值
uint8_t Spo2_Value = 0; //血氧数值
/* USER CODE END PM */
6、在main函数中进行MAX30102的初始化
/* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */max30102_init();/* USER CODE END 2 */
7、 在while(1)中循环读取数据
/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){HAL_Delay(1000);Get_Hr_Spo2_Value(&Hr_Value,&Spo2_Value);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}
8、编译、下载
四、电路连接
MAX30102模块 | 单片机 | 说明 | |
VIN | ~> | 5V | 模块的VIN接入5V电源 |
GND | ~> | GND | 模块的任意一个GND接电源地 |
SCL | ~> | MAX30102_SCL | 模块的SCL连接CubeMX中定义的MAX30102_SCL |
SDA | ~> | MAX30102_SDA | 模块的SDA连接CubeMX中定义的MAX30102_SDA |
INT | ~> | MAX30102_INT | 模块的INT 连接CubeMX中定义的MAX30102_INT |
五、效果验证
可以看到下面动图中的心率及血氧浓度在稳定的刷新,且数据波动平稳。