K_A12_030 基于STM32驱动Pulse sensor心率模块 上位机与OLED0.96双显示

实物参考链接 直戳跳转

一、资源说明

二、基本参数

参数

LED峰值波长:515nm(绿光)
供电电压:3.3-5V
检测信号类型:光反射信号(PPG)
输出信号:模拟信号
信号放大倍数:330倍
输出信号范围:0-VCC
电流大小:4ma左右(5V)
分辨率:1bpm
采样率:500HZ(程序设定)

引脚说明

三、驱动说明

STM32 ADC采集:

/**

@brief ADC GPIO 初始化

@param 无

@retval 无
*/
static void ADCx_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; // 打开 ADC IO端口时钟
ADC_GPIO_APBxClock_FUN ( ADC_GPIO_CLK, ENABLE ); // 配置 ADC IO 引脚模式
// 必须为模拟输入
GPIO_InitStructure.GPIO_Pin = ADC_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; // 初始化 ADC IO
GPIO_Init(ADC_PORT, &GPIO_InitStructure);
}

/**

@brief 配置ADC工作模式

@param 无

@retval 无
*/
static void ADCx_Mode_Config(void)
{
ADC_InitTypeDef ADC_InitStructure; // 打开ADC时钟
ADC_APBxClock_FUN ( ADC_CLK, ENABLE ); // ADC 模式配置
// 只使用一个ADC,属于独立模式
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // 禁止扫描模式,多通道才要,单通道不需要
ADC_InitStructure.ADC_ScanConvMode = DISABLE ; // 连续转换模式
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // 不用外部触发转换,软件开启即可
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 转换结果右对齐
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // 转换通道1个
ADC_InitStructure.ADC_NbrOfChannel = 1; // 初始化ADC
ADC_Init(ADCx, &ADC_InitStructure); // 配置ADC时钟为PCLK2的8分频,即9MHz
RCC_ADCCLKConfig(RCC_PCLK2_Div8); // 配置 ADC 通道转换顺序和采样时间
ADC_RegularChannelConfig(ADCx, ADC_CHANNEL, 1,
ADC_SampleTime_55Cycles5);

// // ADC 转换结束产生中断,在中断服务程序中读取转换值
// ADC_ITConfig(ADCx, ADC_IT_EOC, ENABLE);

// 开启ADC ,并开始转换
ADC_Cmd(ADCx, ENABLE);

// 初始化ADC 校准寄存器  
ADC_ResetCalibration(ADCx);
// 等待校准寄存器初始化完成
while(ADC_GetResetCalibrationStatus(ADCx));

// ADC开始校准
ADC_StartCalibration(ADCx);
// 等待校准完成
while(ADC_GetCalibrationStatus(ADCx));

// 由于没有采用外部触发,所以使用软件触发ADC转换 
ADC_SoftwareStartConvCmd(ADCx, ENABLE);

}

四、部分代码说明

接线引脚定义

需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

STM32F103C8T6+Pulse sensor心率模块

//Pulse sensor心率模块引脚定义
#define    ADC_GPIO_APBxClock_FUN        RCC_APB2PeriphClockCmd
#define    ADC_GPIO_CLK                  RCC_APB2Periph_GPIOA  
#define    ADC_PORT                      GPIOA
#define    ADC_PIN                       GPIO_Pin_0
//OLED0.96模块引脚定义					
#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_8)//SCL
#define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_8)

#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_9)//SDA
#define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pin_9)

五、基础知识学习

STC89C52RC程序下载 直戳跳转

STM32F103C8T6程序下载

1、串口下载  直戳跳转

2、ST-LINK下载  直戳跳转

3、J-LINK下载  直戳跳转

4、DAP-LINK下载  直戳跳转

OLED0.96程序说明 直戳跳转

串口助手下载与使用
1、安信可调试助手使用 直戳跳转
2、 sscom33串口调试助手使用 直戳跳转
3、STC-ISP串口调试助手使用 直戳跳转

六、视频效果展示与程序资料获取

演示视频连接 直戳跳转
资料获取 直戳跳转

实物参考链接 直戳跳转

七、注意事项

1、VCC GND请勿接反,接反易烧
2、OLED显示异常时,排除接线接触不良

八、接线说明

可参考程序main.c最上面接线说明



深圳市咱们电子科技有限公司