STM32 CubeMX ADC采集(HAL库)

STM32 CubeMX ADC采集(HAL库)


STM32 CubeMX


ADC介绍

12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部

信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右

对齐方式存储在16位数据寄存器中。

模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。

ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。

ADC主要特征

● 12位分辨率(最小识别电压)

● 转换结束、注入转换结束和发生模拟看门狗事件时产生中断

● 单次和连续转换模式

● 从通道0到通道n的自动扫描模式

● 自校准

● 带内嵌数据一致性的数据对齐

● 采样间隔可以按通道分别编程

● 规则转换和注入转换均有外部触发选项

● 间断模式

● 双重模式(带2个或以上ADC的器件)

● ADC转换时间:

─ STM32F103xx增强型产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)

─ STM32F101xx基本型产品:时钟为28MHz时为1μs(时钟为36MHz为1.55μs)

─ STM32F102xxUSB型产品:时钟为48MHz时为1.2μs

─ STM32F105xx和STM32F107xx产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)

● ADC供电要求:2.4V到3.6V

● ADC输入范围:VREF- ≤ VIN ≤ VREF+

● 规则通道转换期间有DMA请求产生。


最小识别电压值:2.4/4096≈0.6mv(不考虑误差)

ADC参考电压2.4V

一、STM32 CubeMX设置

开启连续扫描使能,1.5采样周期

我们设置 PCLK2=72M,经过 ADC 预分频器能分频到最大的时钟只能是 12M,采样周期设置为 1.5 个周期,算出最短的转换时间为 1.17us,

二、代码部分

c 复制代码
HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);
c 复制代码
  HAL_ADCEx_Calibration_Start(&hadc1);    //AD校准
  HAL_ADC_Start_IT(&hadc1); //开启ADC中断转换
  ADC_Value =HAL_ADC_GetValue(&hadc1);


三,单通道轮询采样速度

测试方法:
{(adc转换时间+io反转时间)-io反转时间} =adc转换速度



理论值:上面我们设置ADC时钟12Mhz,采样一次最短时间位1.17us

注释:

c 复制代码
可编程的通道采样时间:TCONV = 采样时间+ 12.5个周期
**例如**:
当ADCCLK=14MHz,采样时间为1.5周期
 TCONV = 1.5 + 12.5 = 14周期 = **1μs**
 我们设置 PCLK2=72M,经过 ADC 预分频器能分频到最大的时钟只能是 12M,采样周期设置为 1.5 个周期,算出最短的转换时间为 1.17us,

测得实际转换时间:3us-0.3us=2.7.us

四、内部温度传感器



c 复制代码
	HAL_ADC_Start(&hadc1);	//启动ADC转换
	HAL_ADC_PollForConversion(&hadc1,10);	//等待转换完成,10ms表示超时时间
 AD_Value = HAL_ADC_GetValue(&hadc1);	//读取ADC转换数据(12位数据)
 
//		HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_8);
		Vol_Value = AD_Value*(3.3/4096);	//AD值乘以分辨率即为电压值
	printf("ADC1_IN16 VOL value: %.2fV\r\n",Vol_Value);
	Temperature = (1.43 - Vol_Value)/0.0043 + 25;	//根据公式算出温度值
	printf("MCU Internal Temperature: %.2f\r\n",Temperature);

总结

以上就是今天要讲的内容,本文仅仅简单介绍了ADC的使用,而ADC提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
无人装备硬件开发爱好者23 分钟前
深度解析:STM32 MDK 工程 HEX 文件转 BIN 文件 —— 原理、方法、优缺点与实战指南(中)
stm32·嵌入式软件·hex2bin
阿拉斯攀登35 分钟前
嵌入式-硬件基础:了解三极管
单片机·嵌入式硬件·三极管
逐步前行40 分钟前
C51_74HC165并口转串口
单片机·51单片机
HarrySunCn1 小时前
如何使用VSCode开发Arduino项目
ide·vscode·单片机·编辑器
嵌入式的飞鱼2 小时前
SD NAND 焊接避坑指南:LGA-8 封装手工焊接技巧与常见错误
人工智能·stm32·单片机·嵌入式硬件·tf卡
三佛科技-134163842122 小时前
LN8K05A/B/C_5V非隔离AC-DC电源芯片 典型应用场景、典型电路、与阻容降压的对比分析
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
ACP广源盛139246256732 小时前
GSV6155@ACP#6155产品规格详解及产品应用分享
嵌入式硬件·计算机外设·音视频
大唐荣华3 小时前
灵巧手 - 绳驱(钢丝/绳索驱动)、连杆(Linkage)和直驱(Direct Drive)的技术对比
嵌入式硬件·机械·灵巧手
阿拉斯攀登3 小时前
51单片机:点灯程序的底层拆解
单片机·嵌入式硬件·51单片机
网易独家音乐人Mike Zhou3 小时前
【嵌入式模块芯片开发】LP87524电源PMIC芯片配置流程,给雷达供电的延时上电时序及API函数
c语言·stm32·单片机·51单片机·嵌入式·电源·毫米波雷达