ADC简介
![image]()
基本原理
- 采样:按固定时间间隔(采样频率 )对模拟信号瞬时取值,需满足奈奎斯特采样定理(采样频率≥信号最高频率 2 倍 ,避免信号混叠失真 )。
- 量化:把采样得到的模拟值,按设定量化间隔(由 ADC 分辨率决定 ),映射为离散的整数值。比如 12 位 ADC,参考电压 3.3V 时,量化间隔约为 3.3V/4095≈0.805mV 。
- 编码:将量化后的整数值转换为二进制等数字编码,输出供数字系统处理。
关键参数
- 分辨率:常用位数表示(如 8 位、12 位、16 位 ),位数越高,能区分的模拟信号变化越细微。计算公式为:分辨率 = 参考电压 /(2ⁿ - 1),n 为分辨率位数 。
- 转换速率:单位时间完成转换次数(如 1MSPS 表示每秒转换 100 万次 ),决定处理信号的带宽,速率越高,可处理高频信号。
- 精度:实际转换值与理论值的偏差,受非线性误差、偏移误差、增益误差等影响,常以 LSB(最小量化单位 )衡量。
- 参考电压(Vref):决定 ADC 输入电压范围,输入信号需在该范围内,否则可能损坏或转换出错。
在 STM32 中的应用
- 引脚配置:将 ADC 通道对应的 GPIO 设为模拟输入模式,如 PA0 对应 ADC1_IN0 。
- ADC 初始化:配置时钟(ADC_CLK≤36MHz,通过 APB2 分频得到 )、分辨率(8 位、12 位等 )、转换模式(单次 / 连续 )、扫描模式(多通道时启用 )、采样时间(每个通道采样时间可独立设置,采样时间长则精度高但速度慢 )。
- 转换触发:可软件触发(ADC_SoftwareStartConvCmd() )或硬件触发(定时器更新事件、外部中断等,适用于定时采样 )。
- 数据读取:转换完成后,通过ADC_GetConversionValue()读取数字量,或用 DMA 自动传输到内存,减轻 CPU 负担 。示例:12 位 ADC,参考电压 3.3V,读取值为 2048 时,对应模拟电压 =(2048 / 4095)×3.3V≈1.65V 。