STM32F103C8T6--ADC
原理
ADC(Analog-to-Digital Converter)即模拟数字转换器,用于将连续变化的模拟信号转换为微控制器能够处理的离散数字信号。
ADC 的核心功能是将模拟电压信号转换为数字值,转换过程主要包括:
按一定时间间隔对模拟信号进行取值。10 个外部通道(PA0~PA7、PB0~PB1)和2 个内部通道(温度传感器和参考电压)。从注入通道(4留4)或规则通道(16留1)至转换器。在采样瞬间保持信号值不变,这是因为STM32F103C8T6用的是12位逐次逼近型,通过二分法找到当前模拟信号对应的数字信号(在这个过程中实际上从大到小确定了二进制每位)。
逐次逼近需要时钟控制,ADC需要开关控制,读取寄存器需要触发
逐次逼近概念图

ADC模块框图

使用细节
输入电压范围:0~3.3V,转换结果范围:0~4095,这是因为2的12次方是4095。
STM32 ADC的总转换时间为:
TCONV = 采样时间 + 12.5个ADC周期 =ADC周期数 / ADC时钟频率
- 例如:当ADCCLK=14MHz,采样时间为1.5个ADC周期,TCONV = 1.5 + 12.5 = 14个ADC周期 (约)= 1μs
若时钟频率过高,模拟信号在采样保持阶段可能来不及稳定,导致电荷泄漏或比较器误判,最终降低转换精度。STM32F1 系列 ADC 的最大时钟频率被限制为 14MHz,超过此值会导致精度损失(如 12 位分辨率降至 10 位)。
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//72MHz/6=12MHz
寄存器是16位的,转换后是12位的,一般选择右对齐
ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值)用于消除在随后的转换中每个电容器上产生的误差,建议在每次上电后执行一次校准启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期
分辨率(Resolution)
定义:ADC 能够分辨的最小模拟变化量,通常用位数表示(如 12 位、16 位)。
计算公式:分辨率 = 标准电压 / 2的n次方
例如:12 位 ADC,VREF=3.3V → 分辨率=3.3/4096≈0.8mV。
连续转换相对单次转换,只需要触发一次就可以一直转换,寄存器里为实时值
扫描模式相对于非扫描模式:非扫描模式只读取序列1,而扫描模式可以读取多个序列
序列上面摆通道

配置

