ADC采样保持量化编码入门指南:从原理到嵌入式实践

1次阅读
没有评论

共计 2259 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

核心概念:采样保持与量化编码的本质

采样保持电路(Sample-and-Hold, S/H)是 ADC 前端的关键模块,其作用可类比相机快门:在采样瞬间 ” 冻结 ” 输入信号电压,确保量化期间信号稳定。未使用 S / H 电路时,高频信号在量化过程中可能发生明显变化(如图 1 左),导致采样值偏离真实值;而加入 S / H 后(图 1 右),信号在保持阶段维持恒定,显著提升转换精度。

ADC 采样保持量化编码入门指南:从原理到嵌入式实践

量化过程本质上是将连续幅值映射到离散电平。以 12 位 ADC 为例,其最小量化单位(LSB)计算公式为:

LSB = Vref / (2^N - 1)

其中 Vref 为参考电压,N 为 ADC 位数。例如 3.3V 参考电压下,12 位 ADC 的 LSB=3.3V/4095≈0.806mV,这意味着小于该值的电压变化无法被分辨。

三大典型问题及成因分析

  1. 孔径抖动(Aperture Jitter):采样时刻的微小时间偏差 Δt 会导致电压采样误差 ΔV=Δt×dV/dt。对于高频信号,即使纳秒级的抖动也会引入显著误差。解决方案包括选用低抖动时钟源、缩短采样保持开关的导通时间。

  2. 阻抗失配 :信号源输出阻抗(Rs)与 ADC 输入阻抗(Rin)不匹配时,实际采样电压 Vadc=Vin×Rin/(Rs+Rin)。当 Rin 不足够大(如 STM32 的 ADC 输入阻抗典型值 50kΩ),将导致电压衰减。建议在前端添加运放缓冲器。

  3. 量化噪声掩盖微弱信号 :量化误差的均方根值约为 LSB/√12。当信号幅度接近 LSB 时,信噪比(SNR)急剧恶化。可通过硬件过采样或 Σ - Δ 调制技术改善。

STM32 实战配置

内部参考电压校准

STM32 内置 1.2V 参考电压(VREFINT),用于校准 ADC 基准。校准步骤如下:

  1. 在 CubeMX 中使能 VREFINT 通道
  2. 读取已知温度下的工厂校准值(存储在 Flash 特定地址)
  3. 运行时实测 VREFINT 并计算实际 Vdda 电压:
// 读取工厂校准值(地址参考芯片手册)vrefint_cal = *((uint16_t*)0x1FFF75AA);
// 采样 VREFINT 通道
adc_raw = HAL_ADC_GetValue(&hadc1);
// 计算实际 Vdda(mV)vdda_mv = 1200 * vrefint_cal / adc_raw;

多通道 DMA 管理

使用 DMA 可避免频繁中断。关键配置点:

  1. 在 CubeMX 中设置 DMA 为循环模式(Circular)
  2. 配置 ADC 为连续转换模式(CONT=1)
  3. 双缓冲技术防止数据覆盖:
#define BUF_SIZE 256
uint16_t adc_buf1[BUF_SIZE], adc_buf2[BUF_SIZE];

// 启动双缓冲传输
HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*)adc_buf1, BUF_SIZE);
HAL_ADCEx_MultiModeStart_DMA(&hadc2, (uint32_t*)adc_buf2, BUF_SIZE);

// DMA 中断回调中切换缓冲区
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {if(hadc->Instance == ADC1) {// 处理 adc_buf1 数据}
}

硬件过采样提升分辨率

通过牺牲速度换取精度,16 倍过采样可将 12 位 ADC 提升至 14 位有效分辨率:

// 配置过采样参数
hadc1.Init.OversamplingMode = ENABLE;
hadc1.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_16;
hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
hadc1.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;

PCB 设计与信号处理避坑指南

地平面分割

  • 模拟地(AGND)与数字地(DGND)单点连接,推荐在 ADC 下方通过 0Ω 电阻连接
  • 避免数字信号线穿越模拟区域,必要时采用垂直走线

抗混叠滤波器设计

根据 Nyquist 定理,滤波器截止频率 fc 应满足:

fc < fs/2

其中 fs 为采样率。对于语音信号(20Hz-20kHz),若采样率 fs=44.1kHz,可选择二阶巴特沃斯滤波器,fc=20kHz:

R1=R2=1.6kΩ, C1=C2=4.7nF

温度补偿策略

  1. 建立温度 - 误差查找表(LUT),通过内置温度传感器索引
  2. 多项式拟合补偿算法示例:
float compensate_temp(float raw, float temp) {
    // 二次多项式系数(需实测标定)const float a0 = -0.0023, a1 = 0.056, a2 = 1.12;
    return raw * (a0*temp*temp + a1*temp + a2);
}

进阶思考:ADC 架构选型

  • SAR ADC:适合中速(<5MSPS)、中等精度(12-16 位)场景,信噪比受量化噪声主导
  • Σ-Δ ADC:通过噪声整形将量化噪声推向高频,适合低速高精度(24 位)测量,但需要复杂数字滤波器

图 2 对比了两种 ADC 的噪声功率谱密度(PSD),可见 Σ -Δ ADC 在低频段具有显著优势。

实测数据验证

图 3 展示了 10kHz 正弦波经过不同处理后的 FFT 频谱:

  • 无抗混叠滤波时出现明显的频率混叠成分(红色箭头)
  • 采用硬件过采样后,基底噪声降低约 6dB
  • 温度补偿使直流偏移误差从±5LSB 减少到±1LSB

通过本文的实践方法,可系统提升 ADC 信号采集质量,为后续数字信号处理奠定可靠基础。

正文完
 0
评论(没有评论)