登录/注册

stm32采集adc

更多

在STM32微控制器上采集ADC数据通常涉及以下步骤,这里以HAL库为例进行说明:


1. 硬件配置


2. 软件配置步骤

(1) 初始化ADC

// 启用ADC时钟
__HAL_RCC_ADC1_CLK_ENABLE();

// 配置ADC句柄
ADC_HandleTypeDef hadc1;
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;  // ADC时钟分频
hadc1.Init.Resolution = ADC_RESOLUTION_12B;            // 12位分辨率
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;           // 数据右对齐
hadc1.Init.ScanConvMode = DISABLE;                    // 单通道模式
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;        // 转换结束标志
HAL_ADC_Init(&hadc1);

(2) 配置ADC通道

ADC_ChannelConfTypeDef sConfig = {0};
sConfig.Channel = ADC_CHANNEL_0;       // 通道0(对应PA0)
sConfig.Rank = ADC_REGULAR_RANK_1;     // 规则组第1个转换
sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES;  // 采样时间
HAL_ADC_ConfigChannel(&hadc1, &sConfig);

(3) 校准ADC

HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);  // 单端校准

3. 数据采集

(1) 启动转换并读取

HAL_ADC_Start(&hadc1);                   // 启动ADC
if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK) {
  uint16_t adc_value = HAL_ADC_GetValue(&hadc1);  // 获取12位数据
}
HAL_ADC_Stop(&hadc1);                    // 停止ADC

(2) 转换为电压值

float voltage = (adc_value * 3.3) / 4095;  // 12bit满量程=4095

4. 多通道/DMA采集(示例)

// 启用扫描模式和连续转换
hadc1.Init.ScanConvMode = ENABLE;
hadc1.Init.ContinuousConvMode = ENABLE;

// 配置DMA
__HAL_RCC_DMA2_CLK_ENABLE();
hdma_adc1.Instance = DMA2_Stream0;
hdma_adc1.Init.Channel = DMA_CHANNEL_0;
hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
HAL_DMA_Init(&hdma_adc1);
__HAL_LINKDMA(&hadc1, DMA_Handle, hdma_adc1);

// 启动DMA传输
uint16_t adc_buffer[2];
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, 2);

关键注意事项

  1. 采样时间需根据信号源阻抗调整(高频信号缩短采样时间)
  2. 避免输入电压超过VREF+,否则可能损坏芯片
  3. 多通道时需配置ScanConvModeDiscontinuousConvMode
  4. 校准操作必须在上电后执行一次
  5. 使用DMA可显著提高采集效率

通过CubeMX工具可快速生成初始化代码,建议结合具体型号的参考手册(如STM32xxx Reference Manual)调整参数。

第12章-ADC采集电压和显示 基于STM32ADC—电压采集(详细讲解+HAL库)

第12章-ADC采集电压和显示 基于STM32的ADC—电压

2024-08-21 16:31:34

STM32G0开发笔记:使用ADC进行NTC温度采集

使用Platformio平台的libopencm3开发框架来开发STM32G0,以下使用ADC进行NTC温度采集。

2023-01-16 15:12:42

采用STM32F103硬件ADC功能进行光照强度采集

光照强度采集ADC方式采集,STM32F103本身自带有硬件

2022-05-31 11:32:52

stm32g030多路adc DMA采集程序

stm32g030_多路adc_DMA采集程序

资料下载 过往5 2023-06-19 09:43:09

ADC基于stm32的电压电流采集

ADC基于stm32的电压电流采集原理与源程序。

资料下载 jinyi7016 2022-03-22 12:14:55

STM32 HAL库 CubeMX教程(七)ADC电压采集串口输出

STM32 HAL库 CubeMX教程(七)ADC电压采集ADC简介Cu

资料下载 张辉 2022-01-12 20:24:01

STM32 HAL库 CUBEMX配置 ADC采集

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录STM32 HAL库 CUBEMX配置 ADC采集软硬件型号1.单通道不

资料下载 佚名 2021-12-27 18:57:09

STM32单片机ADC采集

STM32单片机ADC采集

资料下载 佚名 2021-11-18 20:36:05

STM32F103双重ADC同步规则模式采集实验

  双重 ADC 同步规则模式采集实验与多路LCD 波形示波器制作显示,本文展示了STM32 AD 双重

2022-02-24 10:47:31

STM32L0之ADC采集

STM32L0系列之ADC采集前言使用芯片:STM32L051C8T6软

2021-08-11 07:55:53

STM32 HAL库 CUBEMX配置 ADC采集 精选资料分享

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录STM32 HAL库 CUBEMX配置 ADC采集软硬件型号1.单通道不

2021-08-11 07:46:45

STM32_ ADC单通道单次采集

STM32_ADC单通道单次采集

2020-04-08 09:57:09

STM32F0xx_ ADC采集电压配置详细过程

STM32F0xx_ADC采集电压配置详细过程

2020-04-08 09:01:16

STM32ADC1采集多条通道 可以不使用DMA功能吗?

STM32的ADC1采集多条通道,可以不使用DMA功能吗?

2020-03-14 14:46:08

学习STM32,在ADC转换采集这一章,双adc采集与单adc采集相同通道速度是一样的吗?

学习STM32,在ADC转换采集这一章,双adc

2019-09-23 09:25:59
7天热门专题 换一换
相关标签