登录/注册

stm32 F4 ADC

更多

STM32 F4 系列的 ADC(模数转换器)是一种 12 位精度的外设模块,支持多通道、高速采样和多种工作模式。以下是关于 STM32 F4 ADC 的核心知识点和配置指南:


1. 主要特性


2. 配置步骤(以单通道为例)

(1) 初始化 ADC 时钟和 GPIO

// 使能 ADC 和 GPIO 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

// 配置 ADC 输入引脚(例如 PA1,对应 ADC1 Channel 1)
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;   // 模拟模式
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStruct);

(2) 配置 ADC 参数

ADC_InitTypeDef ADC_InitStruct;
ADC_CommonInitTypeDef ADC_CommonInitStruct;

// 通用配置(所有 ADC 共享)
ADC_CommonInitStruct.ADC_Mode = ADC_Mode_Independent;      // 独立模式
ADC_CommonInitStruct.ADC_Prescaler = ADC_Prescaler_Div4;    // ADC 时钟 = APB2 时钟 /4(确保 ≤ 36 MHz)
ADC_CommonInitStruct.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; // 禁用 DMA
ADC_CommonInitStruct.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInit(&ADC_CommonInitStruct);

// ADC1 专用配置
ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStruct.ADC_ScanConvMode = DISABLE;    // 单通道,禁用扫描模式
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; // 单次转换
ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; // 硬件触发源(可选)
ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;        // 数据右对齐
ADC_InitStruct.ADC_NbrOfConversion = 1;                    // 转换通道数
ADC_Init(ADC1, &ADC_InitStruct);

(3) 配置通道和采样时间

ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_84Cycles); // 通道1,采样时间84周期

(4) 校准 ADC

ADC_Cmd(ADC1, ENABLE);      // 先使能 ADC
ADC_ResetCalibration(ADC1); // 复位校准
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1); // 执行校准
while(ADC_GetCalibrationStatus(ADC1));

(5) 启动转换并读取数据

ADC_SoftwareStartConv(ADC1);                // 软件触发转换
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); // 等待转换完成
uint16_t adc_value = ADC_GetConversionValue(ADC1); // 读取结果

3. 多通道扫描 + DMA 配置要点


4. 注意事项


5. 提高精度的技巧

  1. 在转换期间保持 ADC 电源(VDDA)稳定。
  2. 避免高频数字信号干扰模拟输入(如远离时钟线)。
  3. 使用内部参考电压(VREFINT)校准实际供电电压。
  4. 对于低频信号,可多次采样取平均。

通过合理配置触发源、DMA 和中断,可实现高效的数据采集系统。建议结合 STM32CubeMX 工具生成初始化代码,简化开发流程。

使用STM32F4ADC的时候,发现测量结果不准确,是什么原因导致的?

请教各位大佬一个问题,我在使用STM32F4的ADC的时候,发现测量结果不准确。上网查看教程,发现F1系列有自动校准的函数,但是

2025-03-11 06:29:06

STM32的G4F4有哪些区别?

STM32的G4与F4有哪些区别

2023-09-25 07:38:25

STM32F4如何进行自动ADC校准 ?

API。这个 API 在 F4 机器上可用吗?如果没有,是否有类似直接的 API 或方法来对 F4 机器上的内部 ADC 执行自动校准?

2023-01-31 08:38:31

自制一款兼容STM32F1/F4芯片的飞控板

自己制作的一款兼容STM32F1/F4芯片的飞控板。

资料下载 爱老婆的灰太狼 2024-07-04 14:07:41

STM32 F0、F2、F3、F4和L1系列MCU中使用硬件实时时钟(RTC)

在STM32 F0、F2、F3、

资料下载 康大争 2022-11-21 17:07:00

STM32STM32 F4开发板介绍

的资源图F4开发板图示如下:ALIENTEK 探索者 STM32F4 开发板,资源十分丰富,并把 STM32F407的内部资源发挥到了极致,基本

资料下载 王璐 2021-12-17 18:14:41

STM32F1和F4的区别

STM32F1和F4的区别

资料下载 佚名 2021-12-04 13:51:05

STM32F4 ADC模数转换实验例程

STM32F4 ADC模数转换实验例程(深圳市普德新星电源技术有限公司)-STM32F4

资料下载 佚名 2021-09-16 10:21:50

请问stm32f1与f4的部分函数之间有什么区别?

请问stm32的f1与f4的部分函数之间有什么区别?

2022-02-21 06:44:57

分享STM32 F4系列中断向量表

请问一下STM32 F4系列中断向量有哪些?

2021-09-23 09:08:27

stm32f1和f4的区别究竟是什么

stm32f1和f4的区别大家都不知道很明白,想要知道这个区别究竟是什么的小伙伴们,就让我给大家详细的讲讲,一起来看看这个区别究竟是什么吧,来看看吧。stm3

2021-08-04 06:51:00

stm32f4 ADC基本介绍

Analog-to-Digital Converter一、stm32f4 ADC基本介绍1. stm32F4

2021-08-02 09:31:59

STM32F1和STM32F4 的区别

最多可以提供6个UART串口。u F1可提供2个I2C接口,F4可以提供3个I2C接口。u F1和

2020-11-25 09:42:54

佳能RF 70-200mm f/4L IS USM设计,数字时代最小的720 F4镜头

佳能RF 70-200mm f/4 L IS USM首批照片的曝光,证实了该镜头是为外部缩放设计的,将是数字时代最小的720 F4镜头。 佳能R

2020-11-02 17:04:00

STM32F3与F4系列Cortex M4内核编程手册

STM32F3与F4系列Cortex M4内核编程手册

2020-05-30 11:59:49
7天热门专题 换一换
相关标签