stm32 的adc外设
STM32 的 ADC(模数转换器)外设 是用于将模拟信号(如电压)转换为数字信号的核心模块,以下是关键知识点总结:
ADC 核心特性
-
分辨率
- 常见 12 位分辨率(如 STM32F1/F4 系列),部分型号支持 16 位(如 STM32H7)。
- 量化范围:0 ~ 2^N-1(例如 12 位对应 0~4095)。
-
输入通道
- 支持 多路复用模拟输入通道(如 16~24 通道),可配置单端或差分输入(部分型号支持)。
-
转换模式
- 单次模式:单次触发后完成一次转换。
- 连续模式:自动重复转换,适合实时采样。
- 扫描模式:自动按顺序转换多通道。
-
触发源
- 支持 软件触发(直接启动)和 硬件触发(如定时器、外部中断)。
-
转换速率
- 依赖 ADC 时钟频率(ADCCLK) 和 采样时间,典型速率在 1Msps~5Msps(如 STM32F4 可达 2.4Msps)。
关键配置步骤
-
初始化 ADC
- 选择分辨率(
ADC_RESOLUTION_12B)、对齐方式(左对齐/右对齐)、扫描/连续模式等。hadc.Instance = ADC1; hadc.Init.Resolution = ADC_RESOLUTION_12B; hadc.Init.ScanConvMode = ENABLE; // 扫描模式 hadc.Init.ContinuousConvMode = ENABLE; // 连续转换 HAL_ADC_Init(&hadc);
- 选择分辨率(
-
校准
- 必须执行校准(上电后仅需一次),减少非线性误差:
HAL_ADCEx_Calibration_Start(&hadc); // 执行校准
- 必须执行校准(上电后仅需一次),减少非线性误差:
-
配置通道与采样时间
- 设置每个通道的 采样周期(单位:ADC 时钟周期数):
ADC_ChannelConfTypeDef sConfig; sConfig.Channel = ADC_CHANNEL_0; // 选择通道 sConfig.Rank = 1; // 转换顺序 sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES; // 采样时间 HAL_ADC_ConfigChannel(&hadc, &sConfig);
- 设置每个通道的 采样周期(单位:ADC 时钟周期数):
-
触发方式
- 例如使用定时器触发(需配置 TIM 触发输出):
hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T2_TRGO;
- 例如使用定时器触发(需配置 TIM 触发输出):
-
启动转换
- 启动 ADC 并等待数据:
HAL_ADC_Start(&hadc); // 启动转换 HAL_ADC_PollForConversion(&hadc, 100); // 等待转换完成 uint16_t adc_value = HAL_ADC_GetValue(&hadc); // 读取结果
- 启动 ADC 并等待数据:
高级功能
-
DMA 传输
多通道或高速采样时,使用 DMA 自动搬运数据,避免 CPU 频繁中断:HAL_ADC_Start_DMA(&hadc, (uint32_t*)adc_buffer, buffer_size); -
中断
启用转换完成中断,实现异步处理:HAL_ADC_Start_IT(&hadc); // 启动中断模式 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { // 转换完成回调函数 } -
模拟看门狗(Analog Watchdog)
设置阈值范围,当输入电压超出时触发中断。
注意事项
-
参考电压(VREF+)
- 确保 VREF+ 稳定(通常接 3.3V),直接影响精度。
-
信号调理
- 高频噪声场景,在输入端增加 RC 滤波电路。
-
PCB 布局
- 模拟信号走线远离数字信号,减少耦合干扰。
-
功耗与速度权衡
- 提高采样速率会增加功耗,需根据需求优化。
典型应用场景
- 传感器信号采集(温度、压力、光强等)
- 电池电压监测
- 音频信号数字化
- 电机控制中的电流检测
如需特定型号(如 STM32F103、F407)的代码示例或深入某个功能,可进一步说明!
一个小项目看懂 STM32 全部外设
很多刚接触STM32的同学,常常被它庞杂的外设列表劝退。GPIO、USART、ADC、TIM、DMA、SPI、I2C……光看手册目录就已经头晕。
2026-01-09 19:04:02
STM32 5 个容易踩坑的外设使用技巧
STM32是嵌入式开发领域的热门MCU,功能丰富到几乎可以完成所有常见控制任务:GPIO、ADC、UART、定时器、DMA……应有尽有。但是,正因为功能强大,开发中踩坑的机会也随之增多。很多初学者
2025-11-24 19:04:22
STM32F30x禁止ADC已关闭情况下再次关闭ADC
,等等。但是,由于设计的不同,在使用上也有不少不太一样的地方,我们在使用STM32F30x 的ADC 外设的时候,还是要仔细了解一些使用的细节。
资料下载
郝埃连
2021-08-04 18:08:13
如何使用DMA(外设到外设)将数据从ADC直接发送到FMAC?
我正在尝试以循环模式通过 DMA 将数据从 ADC 直接发送到 FMAC 。来自 STM32G4 参考手册 (dm00355726) 第 402 页:“外设
STM32为什么要先开启外设时钟?
相信很多朋友都曾遇到过这种坑,我最初学习STM32的时候同样也遇到过。下面,我就来说说为什么我们要先开启STM32外设模块时钟,再对其
2022-10-20 14:10:13
如何使用STM32CubeMX配置STM32L431RCT6的ADC外设读取引脚的电压值?
如何使用STM32CubeMX配置STM32L431RCT6的ADC外设
STM32的ADC外设通过DMA通道来传输数据
笔者之前用STM32的ADC外设通过DMA通道来传输数据,通常有两种方法,一个是直接通过DMA通道传输数据,二是通过定时器触发。相较而言,后者在
如何使用STM32CubeMX配置STM32L431RCT6的ADC外设
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外
STM32标准外设库的文件结构解析
STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
2019-10-17 15:55:20
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览