qsrg51 发表于 2025-5-23 10:24

ADC相关寄存器全解读

本篇系统梳理 小华 HC32A4A0 芯片的 ADC模块常用寄存器,讲解每个寄存器的功能、配置方式及注意事项,适合:

想要跳过 HAL 库直接访问寄存器的开发者;

想调试 ADC 异常问题(如采样不准、中断不触发);

想在 Bootloader、RTOS 或裸机场景灵活使用 ADC 的工程师。

ADC 常用寄存器总览
寄存器名称        地址偏移        功能简述
ADC_STR(采样时间配置)        0x00        每通道采样周期设置
ADC_CR0(控制寄存器0)        0x04        工作模式、触发选择
ADC_CR1(控制寄存器1)        0x08        数据对齐、转换开始等
ADC_CHSEL0/1(通道选择)        0x10/0x14        选择参与转换的通道
ADC_RESULTx(结果寄存器)        0x30~0x5C        每通道采样结果
ADC_SSTR0/1(序列采样时间)        0x20/0x24        各序列通道采样时间设置
ADC_ICLR(中断清除)        0x0C        清除 EOC/EOS 等标志位
ADC_ISR(中断状态)        0x28        判断转换是否完成
ADC_THx(上下限阈值)        0x60~0x6C        用于比较器判断/报警

常见寄存器用途详解
1.ADC_CR0:ADC 控制寄存器 0
c
复制
编辑
ADCx->CR0 =
    (1 << 0)// ADEN:使能ADC模块
| (1 << 1)// CONT:连续转换模式
| (0 << 2)// ADST:软件触发
| (3 << 8); // TRGSEL:触发源选择(如定时器)
2.ADC_CR1:ADC 控制寄存器 1
c
复制
编辑
ADCx->CR1 =
    (0 << 0)// ALIGN:数据对齐(0: 右对齐)
| (1 << 1); // SEQSTA:启动序列转换
3.ADC_STR:采样时间寄存器
c
复制
编辑
ADCx->STR = (0x30 << 0); // 设置采样周期,越大越稳定,推荐 ≥0x30
4.ADC_CHSEL0/1:通道选择
c
复制
编辑
ADCx->CHSEL0 = (1 << 0) | (1 << 1); // 开启通道0和通道1
5.ADC_RESULTx:转换结果寄存器
c
复制
编辑
uint16_t result = ADCx->RESULT0 & 0x0FFF; // 读取通道0的12位采样结果
6.ADC_ICLR / ADC_ISR:中断管理
c
复制
编辑
if (ADCx->ISR & (1 << 0)) { // 检查EOC标志
    ADCx->ICLR = (1 << 0);// 清除EOC
}
7.ADC_SSTR0/1:每个通道的采样时间细化设置
c
复制
编辑
ADCx->SSTR0 = (0x30 << 0) | (0x30 << 8); // 通道0/1的采样时间
ADC初始化裸机模板代码(不依赖库)
c
复制
编辑
void ADC_Init_Bare(void) {
    // 1. 打开ADC时钟
    RCU->APB2EN |= (1 << 9); // 假设ADC挂在APB2

    // 2. 配置采样时间
    ADCx->STR = 0x30303030;// 简化设置所有通道采样时间为0x30

    // 3. 启用通道
    ADCx->CHSEL0 = (1 << 0); // 使能通道0

    // 4. 设置数据对齐和触发模式
    ADCx->CR1 = 0x00000000; // 右对齐,软件触发

    // 5. 设置触发源、工作模式
    ADCx->CR0 = (1 << 0);   // 使能ADC模块

    // 6. 启动转换
    ADCx->CR1 |= (1 << 1);// 设置SEQSTA启动序列
}
寄存器配置调试技巧
场景        检查点
无转换结果        ADC_CR0 是否启用、通道是否使能
值为0xFFF        模拟引脚是否浮空、VREF 是否配置
EOC 不触发        中断未开、ICLR 未清零
多通道交叉干扰        采样时间过短、通道配置过密

总结建议
理解 ADC_CR0/CR1 是配置核心;

所有通道采样时间建议 ≥ 0x30;

中断/标志位需手动清除(ICLR);

多通道建议使用序列采样 + DMA;

页: [1]
查看完整版本: ADC相关寄存器全解读