登录/注册

stm32 的adc外设

更多

STM32 的 ADC(模数转换器)外设 是用于将模拟信号(如电压)转换为数字信号的核心模块,以下是关键知识点总结:


ADC 核心特性

  1. 分辨率

    • 常见 12 位分辨率(如 STM32F1/F4 系列),部分型号支持 16 位(如 STM32H7)。
    • 量化范围:0 ~ 2^N-1(例如 12 位对应 0~4095)。
  2. 输入通道

    • 支持 多路复用模拟输入通道(如 16~24 通道),可配置单端或差分输入(部分型号支持)。
  3. 转换模式

    • 单次模式:单次触发后完成一次转换。
    • 连续模式:自动重复转换,适合实时采样。
    • 扫描模式:自动按顺序转换多通道。
  4. 触发源

    • 支持 软件触发(直接启动)和 硬件触发(如定时器、外部中断)。
  5. 转换速率

    • 依赖 ADC 时钟频率(ADCCLK)采样时间,典型速率在 1Msps~5Msps(如 STM32F4 可达 2.4Msps)。

关键配置步骤

  1. 初始化 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);
  2. 校准

    • 必须执行校准(上电后仅需一次),减少非线性误差:
      HAL_ADCEx_Calibration_Start(&hadc);  // 执行校准
  3. 配置通道与采样时间

    • 设置每个通道的 采样周期(单位:ADC 时钟周期数):
      ADC_ChannelConfTypeDef sConfig;
      sConfig.Channel = ADC_CHANNEL_0;      // 选择通道
      sConfig.Rank = 1;                     // 转换顺序
      sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES;  // 采样时间
      HAL_ADC_ConfigChannel(&hadc, &sConfig);
  4. 触发方式

    • 例如使用定时器触发(需配置 TIM 触发输出):
      hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T2_TRGO;
  5. 启动转换

    • 启动 ADC 并等待数据:
      HAL_ADC_Start(&hadc);                 // 启动转换
      HAL_ADC_PollForConversion(&hadc, 100); // 等待转换完成
      uint16_t adc_value = HAL_ADC_GetValue(&hadc); // 读取结果

高级功能


注意事项

  1. 参考电压(VREF+)

    • 确保 VREF+ 稳定(通常接 3.3V),直接影响精度。
  2. 信号调理

    • 高频噪声场景,在输入端增加 RC 滤波电路。
  3. PCB 布局

    • 模拟信号走线远离数字信号,减少耦合干扰。
  4. 功耗与速度权衡

    • 提高采样速率会增加功耗,需根据需求优化。

典型应用场景

如需特定型号(如 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

STM32失能时钟和复位外设的区别

STM32失能时钟和复位外设的区别

2023-10-17 11:48:30

基于STM32上的5个ADC程序

基于STM32上的5个ADC程序(单兵电源技术需求)-基于STM32上的5个ADC

资料下载 王利祥 2021-09-27 12:37:41

STM32ADC学习历程

STM32的ADC学习历程(电源技术期刊影响因子)- STM32的ADC

资料下载 王越建 2021-09-27 12:32:55

STM32ADC驱动程序

STM32的ADC驱动程序(电源技术被踢出核心)-  STM32的ADC

资料下载 刘满贵 2021-09-23 13:43:22

STM32ADC代码例程

STM32的ADC代码例程(普德新星电源技术有限公司怎么样)- STM32的ADC

资料下载 vinww特烦恼 2021-09-23 09:53:19

STM32F30x禁止ADC已关闭情况下再次关闭ADC

,等等。但是,由于设计的不同,在使用上也有不少不太一样的地方,我们在使用STM32F30x 的ADC 外设的时候,还是要仔细了解一些使用的细节。

资料下载 郝埃连 2021-08-04 18:08:13

如何使用DMA(外设到外设)将数据从ADC直接发送到FMAC?

我正在尝试以循环模式通过 DMA 将数据从 ADC 直接发送到 FMAC 。来自 STM32G4 参考手册 (dm00355726) 第 402 页:“外设

2023-01-06 07:12:11

STM32为什么要先开启外设时钟?

相信很多朋友都曾遇到过这种坑,我最初学习STM32的时候同样也遇到过。下面,我就来说说为什么我们要先开启STM32外设模块时钟,再对其

2022-10-20 14:10:13

如何使用STM32CubeMX配置STM32L431RCT6的ADC外设读取引脚的电压值?

如何使用STM32CubeMX配置STM32L431RCT6的ADC外设

2021-10-13 08:20:30

STM32ADC外设通过DMA通道来传输数据

笔者之前用STM32的ADC外设通过DMA通道来传输数据,通常有两种方法,一个是直接通过DMA通道传输数据,二是通过定时器触发。相较而言,后者在

2021-08-19 09:18:43

如何使用STM32CubeMX配置STM32L431RCT6的ADC外设

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的ADC外

2021-08-13 08:58:02

ADC,DMA,多路,单次/连续转换 (标准外设库)

ADC,DMA,多路,单次/连续转换(标准外设库)

2020-03-04 11:26:34

STM32标准外设库的文件结构解析

STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。

2019-10-17 15:55:20

7天热门专题 换一换
相关标签