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;

// 打印结果

}

}

相关推荐
国科安芯43 分钟前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
树的枝3 小时前
【STM32】03.中断和EXTI外设
笔记·stm32·单片机·嵌入式硬件
单片机杂货铺5 小时前
【单片机毕业设计选题】基于stm32单片机儿童公路车速度检测报警
stm32·单片机·嵌入式硬件·51单片机·硬件工程·课程设计
振南的单片机世界6 小时前
看门狗硬核拆解:1.6秒不喂狗,硬件强制“掀桌子”
arm开发·stm32·单片机·嵌入式硬件
嵌入式阿蔡6 小时前
Linux_01:交叉编译与开发环境实战——从单片机跨到 Linux 的第一道坎
linux·运维·网络·单片机·嵌入式硬件·嵌入式实时数据库
NYFEA7 小时前
徕飞 FCA系列全面上新,一站式I/O扩展国产替代方案
单片机·嵌入式硬件
国科安芯8 小时前
ASL622S:把“信号失真“挡在门外的航天级运放
网络·单片机·嵌入式硬件·架构·状态模式·低轨卫星星座
XiHongShi20169 小时前
STM32H7 FLASH和SRAM标准例程
stm32·单片机·嵌入式硬件
单片机杂货铺9 小时前
【单片机毕业设计选题】基于单片机的智能牛奶保鲜箱设计
人工智能·stm32·单片机·物联网·毕业设计·课程设计
LCG元10 小时前
STM32F103 硬件 I2C 驱动 MPU6050:一阶互补滤波姿态解算与零偏校准实测
stm32·单片机·嵌入式硬件