登录/注册

STM32 ADC单通道采样

更多

在STM32中配置ADC单通道采样的步骤如下:

1. 使能时钟

// 使能ADC和GPIO时钟(以ADC1和PA5为例)
__HAL_RCC_ADC1_CLK_ENABLE();        // 使能ADC1时钟
__HAL_RCC_GPIOA_CLK_ENABLE();       // 使能GPIOA时钟

2. 配置GPIO为模拟输入

GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5;           // 例如PA5对应ADC1通道5
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;     // 模拟输入模式
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

3. 初始化ADC参数

ADC_HandleTypeDef hadc1;
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV6;  // 时钟分频(确保≤14MHz)
hadc1.Init.Resolution = ADC_RESOLUTION_12B;            // 12位分辨率
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;            // 数据右对齐
hadc1.Init.ScanConvMode = DISABLE;                     // 禁用扫描模式(单通道)
hadc1.Init.ContinuousConvMode = DISABLE;               // 单次转换模式
hadc1.Init.DiscontinuousConvMode = DISABLE;            // 禁用间断模式
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;       // 软件触发
HAL_ADC_Init(&hadc1);

4. 配置通道和采样时间

ADC_ChannelConfTypeDef sConfig = {0};
sConfig.Channel = ADC_CHANNEL_5;            // 选择通道5(PA5)
sConfig.Rank = ADC_REGULAR_RANK_1;          // 规则组第1个转换
sConfig.SamplingTime = ADC_SAMPLETIME_28CYCLES_5;  // 采样时间28.5周期
HAL_ADC_ConfigChannel(&hadc1, &sConfig);

5. 校准ADC

HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);  // 校准ADC

6. 启动转换并读取结果

HAL_ADC_Start(&hadc1);                                // 启动转换
if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK)  // 等待转换完成
{
    uint16_t adc_value = HAL_ADC_GetValue(&hadc1);     // 读取转换值
}
HAL_ADC_Stop(&hadc1);                                 // 停止ADC

注意事项:

示例代码(标准外设库):

// 使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);

// 配置GPIO
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;  // 模拟输入
GPIO_Init(GPIOA, &GPIO_InitStruct);

// 配置ADC参数
ADC_InitTypeDef ADC_InitStruct;
ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;
ADC_InitStruct.ADC_ScanConvMode = DISABLE;
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStruct.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStruct);

// 配置通道
ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_28Cycles5);

// 校准ADC
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while (ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while (ADC_GetCalibrationStatus(ADC1));

// 启动转换
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));  // 等待转换完成
uint16_t adc_value = ADC_GetConversionValue(ADC1);

通过以上步骤,即可实现STM32的单通道ADC采样。

ADC12DJ2700 12位、双通道2.7GSPS或单通道5.4GSPS、RF采样模数转换器技术手册

ADC12DJ2700器件是一款射频采样、千兆采样、模数转换器 (ADC

2025-11-06 09:38:48

ADC12DJ5200RF 具有双通道 5.2 GSPS 或单通道 10.4 GSPS 的射频采样 12 位 ADC技术手册

ADC 或单通道 10.4GSPS ADC。支持高达 10GHz 的可用输入频率范围,可对频率捷变系统进行 L 波段、S 波段、C 波段和 X

2025-11-01 10:25:13

如何使用ADC08D1000的芯片进行1G双通道采样或2G单通道采样

我们现在要使用ADC08D1000的芯片进行1G双通道采样或2G单通道

2025-01-21 10:08:18

STM32ADC通道采样

基于STM32Cube的ADC多通道采样STMCube+MDK用hal库

资料下载 佚名 2021-12-24 19:29:29

stm32 定时器触发ADC通道采样+DMA提取数据

stm32g0 定时器触发ADC多通道采样+DMA提取数据

资料下载 佚名 2021-12-16 16:56:32

STM32 ADC采样技术

STM32 ADC 过采样技术

资料下载 佚名 2021-12-08 16:21:06

STM32F30x 的ADC 采样的傅立叶变换

STM32F30x 的ADC 采样的傅立叶变换(理士国际电源技术有限公司)-本文目的是演示如何使用

资料下载 鼠爱米 2021-08-04 17:47:45

单通道 / 双通道、14 位 250Msps ADC 系列提供高 SFDR 欠采样性能

单通道 / 双通道、14 位 250Msps ADC 系列提供高 SFDR 欠采样

资料下载 duke刘 2021-03-19 07:34:10

使用单通道ADC+模拟开关结构采样多路信号时,ADC采样率如何选择呢?

现在有10路信号需要采样,每个通道的信号带宽都是10K,采集电路准备使用模拟开关+单通道

2024-08-15 07:02:57

ADC单通道、多通道采集实例

本文将通过ADC单通道、多通道采集功能对输入电压进行采样。

2023-04-25 09:48:53

STM32-ADC单通道与多通道采集

STM32-ADC单通道与多通道采集单通道配置多

2021-12-17 07:29:56

中断方式单通道ADC读取电压

单端/差分ADC和三个内部通道。学习内容:1.轮询方式单通道ADC读取电

2021-08-11 07:22:08

STM32F103VET6——ADC单通道中断读取实验讲解 精选资料推荐

STM32F103VET6——ADC单通道中断读取实验讲解参考 《STM32

2021-08-04 08:09:32

STM32_ ADC单通道单次采集

STM32_ADC单通道单次采集

2020-04-08 09:57:09

STM32F10x_ADC通道逐次转换 (单次、单通道软件触发)

STM32F10x_ADC三通道逐次转换(单次、单通道软件触发)

2020-03-25 11:41:29

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