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;

// 打印结果

}

}

相关推荐
自小吃多3 小时前
STM32CubeMX生成工程不运行 卡在HAL_SYSTICK_Config
stm32·单片机
阿拉斯攀登3 小时前
嵌入式基本功:掌握硬件电路基本概念
stm32·单片机·嵌入式硬件·集成电路·电路
清风66666615 小时前
基于单片机的汽车安全气囊充气控制系统设计(protues仿真设计)
单片机·嵌入式硬件·汽车·毕业设计·课程设计·期末大作业
Darken0315 小时前
中断程序设计需要注意什么?
单片机·中断函数
小李做物联网16 小时前
【单片机毕业设计】65.1基于单片机物联网智能书桌-超声+升降系统项目程序开发
stm32·单片机·嵌入式硬件·物联网
清风66666617 小时前
基于单片机的智能家居多参数环境监测与联动报警系统设计
数据库·单片机·毕业设计·智能家居·课程设计·期末大作业
自小吃多18 小时前
TMC2209与UART通信控制之搞不定
stm32·嵌入式硬件
普中科技19 小时前
【普中51单片机开发攻略--基于普中-2&普中-3&普中-4】-- 第 8 章 51 单片机工程模板创建
单片机·嵌入式硬件·51单片机·keil·普中科技·工程模版
强化学习与机器人控制仿真21 小时前
ProtoMotions 3 入门教程(一)开源 GPU 加速人形机器人强化学习仿真训练框架
人工智能·stm32·深度学习·机器人·强化学习·人形机器人·模仿学习