STM32L051电阻分压ADC电量采集
更新时间:2024-01-23 20:03:01 阅读量: 教育文库 文档下载
- stm32l051电路推荐度:
- 相关推荐
电阻分压ADC电量采集
STM32的ADC特点:
※STM32L051单片机具有12位ADC(逐次逼近型ADC); ※ADC具有四中工作模式:单次、连续、扫描、不连续;
※ADC采集的结果具有左对齐和右对齐两种方式的16位寄存器;
※ADC模拟看门狗功能允许开发人员监测ADC的电压输入是否超过设置上下门限; ※一个高效的低功耗模式允许ADC采集在极低的功耗下运行;
※ADC具有多点连续采集模式,该模式通过硬件完成多点采集减少了CPU的占用率提高采样效率;
STM32的ADC功能描述:
ADC具有内部独立的电压调节器,调节器必须在使用ADC前使能并且等待调节器稳定后才能使用ADC;调节器的稳定时间由硬件自己决定,开发人员无需关注;
校准:ADC具有自动校准功能,开发人员在校准ADC之后才能使用ADC,校准能够消除芯片和芯片之间的差异以及其他硬件偏移;
ADC时钟:ADC具有双时钟模式,ADC有一个独立的内部时钟源; 1 初始化:
Linki2u产品的ADC采集通过STM32的ADC单次采样模式进行;电量检测通过电阻分压的方式进行,ADC的初始化配置:
AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV4; //初始化ADC的时钟,这个参数只能在ADC停止工作的时候更改 **** AdcHandle.Init.Resolution = ADC_RESOLUTION12b; //初始化ADC的分辨率 ****
AdcHandle.Init.ScanDirection = ADC_SCAN_DIRECTION_UPWARD; //采样方向
AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIG_EDGE_NONE; //触发方式
AdcHandle.Init.EOCSelection = EOC_SINGLE_CONV;
//采样完成EOC标志位置位
AdcHandle.Init.DMAContinuousRequests = DISABLE; //DMA连续模式关闭
AdcHandle.Init.DiscontinuousConvMode = DISABLE; //非连续模式关闭
AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT; //右对齐
AdcHandle.Init.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; //采样周期设置
AdcHandle.Init.OversamplingMode = DISABLE; //过量采集模式禁止
AdcHandle.Init.LowPowerAutoOff = ENABLE; //使能单次采集模式
AdcHandle.Init.LowPowerFrequencyMode = DISABLE; //
AdcHandle.Init.LowPowerAutoWait = DISABLE; //
AdcHandle.Init.ContinuousConvMode = DISABLE; // HAL_ADC_Init(&AdcHandle); //初始化ADC参数 2ADC校准 HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED); //开启ADC校准 3设置ADC通道 sConfig.Channel = ADC_CHANNEL_7; //ADC采样通道 HAL_ADC_ConfigChannel(&AdcHandle, &sConfig); //设置ADC采样通道 4使能ADC功能 HAL_ADC_Start(&AdcHandle);
单次采集流程:
电池电量通过电阻分压ADC采样的方式获取; 1) 程序中定义了一个电池电量的结构体:
typedef uint16_t (* ARRAYAVRAGE ) (uint16_t buf[],uint8_t len); typedef uint16_t (* PARAMEMPTYFUN) (void); typedef struct Tag_Framet_Battery {
uint8_t lnvalue; //电池电量的线性系数 uint8_t adcnt; //电池电量ADC采样次数 uint8_t delay_cnt; //延时次数 uint16_t *ptr; //电池电量采样指针 uint16_t ADCValue[10]; //电池电量采样数据数组 float bat_value; //电池电量
ARRAYAVRAGE AvgFun; //电池电量数据处理函数 PARAMEMPTYFUN ValueFun; //电池电量采样函数 }Framet_Battery;
2 初始化电池电量采集的参数
void BatTest_funInit(Framet_Battery *bat) {
bat->lnvalue=0; bat->adcnt=0; bat->delay_cnt=0; bat->bat_value=0; bat->ValueFun=(PARAMEMPTYFUN)Get_singleADCValue;//单次采样模式 bat->ptr=bat->ADCValue; bat->AvgFun=(ARRAYAVRAGE) StrBubble_Sort; //数据求均值 }
3 ADC采集
主循环中进行数据采集;
#define FILTERCOUNTER 10 //?¨ò?êy?Y??2¨??êy
#define VDD_ADCREF (3.3) #define MAX_ADCSAMPLE (4096.0)
#define ADCRESOLUTION (VDD_ADCREF/MAX_ADCSAMPLE)
#define RES_UP (133000.0) #define RES_DOWN (100000.0)
#define RES_SUM (RES_UP+RES_DOWN)
#define BAT_MAXVALUE (4.1)//?aá??ú×???μ?3?ì?D???é??T??D? #define BAT_MINVALUE (3.0)
#define BAT_ABSOLUTE (BAT_MAXVALUE-BAT_MINVALUE)
#define PERCENTAGE (100.0)
uint16_t Get_singleADCValue() { uint16_t ADCvalue; ADC1->CR |= ADC_CR_ADSTART;
HAL_ADC_PollForConversion(&AdcHandle,5000); ADCvalue=HAL_ADC_GetValue(&AdcHandle); return ADCvalue; }
void Get_BatLinValue(Framet_Battery *bat) {
bat->delay_cnt++; if(bat->delay_cnt==100) { bat->delay_cnt=0; bat->ADCValue[bat->adcnt++]=bat->ValueFun(); if(bat->adcnt==10) { bat->adcnt=0; bat->bat_value=
bat->AvgFun(bat->ptr,FILTERCOUNTER)*ADCRESOLUTION*RES_SUM/RES_DOWN;
bat->lnvalue=(uint8_t)((bat->bat_value-BAT_MINVALUE)*PERCENTAGE/BAT_ABSOLUTE); if(bat->lnvalue>100) bat->lnvalue=100; } } }
正在阅读:
STM32L051电阻分压ADC电量采集01-23
《鲁肃过蒙屯下》原文及翻译02-08
大学英语中高级课程-跨文化交际教案09-29
做不可替代的员工读后感04-24
妇女儿童之家工作交流发言稿 海子社区001-12
web应用中文件的存放方式06-01
中西方思维方式差异实证研究的评述06-09
2014年度山东省人文社会科学课题指南- 山东省金融学会10-15
基于单片机的光电计数器06-27
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 电量
- 电阻
- 采集
- STM32L051
- ADC
- 行政事业单位会计制度讲解
- 汇编语言平时练习(判断题)
- 八年级下册数学好题难题精选 - 图文
- 淮阴师范学院五四红旗团支部名单(个)
- 促进青年员工成长推动企业健康发展
- 2017一建机电实务案例背诵310问有整理
- 新部编人教版初中语文七年级下册12 卖油翁导学案
- 第三章 一元一次方程全章导学案
- ecshop计算各种价格函数
- 东莞教育事业发展十三五规划
- 幼儿教育学考试复习资料
- 最新北师大版 四年级数学上册第三单元 乘法教学设计与教学反思 - 图文
- 2008年中考物理试题分类汇编—平衡力
- 武夷山一中2013-2014学年高二(下)期末考试文科数学试卷与答案
- 家长学校教师教案(20)
- 新课标高中物理选修3-2课后习题答案免去财富值
- 七年级语文下学期期末检测卷新人教版
- Chapter11 - 6e
- 仁爱版七年级英语(上)第4单元全部知识点
- 欧洲古代史 思考题