Day23:ADC 原理与配置

ADC 功能:

模数转换器,将模拟电压 (0-3.3V) 转换为数字量 (12 位精度,0-4095)

转换过程:采样→保持→量化→编码

STM32 ADC 特性:

12 位分辨率,转换时间约 1μs (最高频率)

多通道 (最多 16 路),可扫描模式顺序转换

单次 / 连续转换模式

触发源:软件触发、定时器触发、外部触发

ADC 配置步骤:

使能 ADC 和 GPIO 时钟

配置 GPIO 为模拟输入 (如 PA0)

配置 ADC 参数 (分辨率、采样时间、转换模式)

使能 ADC 并校准

启动转换

代码示例:(单通道 ADC 采样)

// ADC初始化

ADC_HandleTypeDef hadc1;

void ADC1_Init(void){

GPIO_InitTypeDef GPIO_InitStruct;

// 使能GPIOA和ADC1时钟

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_ADC1_CLK_ENABLE();

// 配置PA0为模拟输入

GPIO_InitStruct.Pin = GPIO_PIN_0;

GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; // 模拟输入模式

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// 配置ADC参数

hadc1.Instance = ADC1;

hadc1.Init.Resolution = ADC_RESOLUTION_12B; // 12位分辨率

hadc1.Init.ScanConvMode = DISABLE; // 单通道,不扫描

hadc1.Init.ContinuousConvMode = ENABLE; // 连续转换

hadc1.Init.DiscontinuousConvMode = DISABLE;

hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; // 软件触发

hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; // 右对齐

hadc1.Init.NbrOfConversion = 1; // 转换通道数

HAL_ADC_Init(&hadc1);

// 配置通道0(PA0)

ADC_ChannelConfTypeDef sConfig;

sConfig.Channel = ADC_CHANNEL_0;

sConfig.Rank = 1; // 转换顺序

sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; // 采样时间

HAL_ADC_ConfigChannel(&hadc1, &sConfig);

HAL_ADC_Calibrate(&hadc1); // ADC校准

HAL_ADC_Start(&hadc1); // 启动ADC

}

// 主函数

int main(){

ADC1_Init();

uint32_t adc_value;

while(1){

HAL_ADC_PollForConversion(&hadc1, 100); // 等待转换完成

adc_value = HAL_ADC_GetValue(&hadc1); // 获取转换值

// 计算电压:adc_value × 3.3V / 4096

float voltage = (float)adc_value * 3.3 / 4096;

// 打印结果

}

}

相关推荐
LongRunning1 小时前
【BLE】STM32WB55_定时器碎片(九)
stm32
yu85939582 小时前
STM32 智能红外循迹小车(含码盘测速 + 避障)
stm32·单片机·嵌入式硬件
三品吉他手会点灯2 小时前
STM32 DAP 烧录报错-最终解决方法的原理和操作逻辑
stm32·单片机·嵌入式硬件
fengfuyao9852 小时前
TFT 彩屏 GUI 开发
stm32·嵌入式硬件
长安第一美人3 小时前
算能 BM1688 低延迟推流:Qt+WebSocket 直出 H5/HDMI
开发语言·网络·嵌入式硬件·websocket·交互
yongui478343 小时前
STM32 三相电机FOC驱动方案(三电阻单电阻双模式)
stm32·单片机·嵌入式硬件
WeeJot嵌入式4 小时前
【串口】初始串口-轮询模式
stm32·单片机·嵌入式
yong99905 小时前
基于 51 单片机配合霍尔传感器实现计数 + 转速测量
单片机·嵌入式硬件
崇山峻岭之间5 小时前
单片机时钟配置01
单片机·嵌入式硬件
LongRunning6 小时前
【BLE】STM32WB55_资料链接(八)
stm32