打印
[MM32硬件]

实现稳定、准确的ADC采样

[复制链接]
1089|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
鱿鱼丝|  楼主 | 2025-4-30 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 设置足够的采样保持时间(Sample Hold Time)
灵动MCU的 ADC 通道通常支持配置采样周期(例如 ADC_SampleTime_239Cycles5)。采样保持时间太短,会导致信号未稳定就完成采样,从而引发毛刺或跳变。

建议:
对高阻抗信号源(如分压电阻、传感器)使用较长采样时间(如 71.5 或 239.5 cycles)

对低阻抗源可使用短一些采样时间

示例配置(MM32):
c
复制
编辑
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5);
2. 添加软件滤波算法(如中值/平均滤波)
即使硬件干净,ADC 本身也存在±1 LSB 的抖动。可用以下方式平滑采样值:

中值滤波(抗尖刺能力强):
c
复制
编辑
// 三点中值滤波
uint16_t mid(uint16_t a, uint16_t b, uint16_t c) {
    return a > b ? (b > c ? b : (a > c ? c : a)) : (a > c ? a : (b > c ? c : b));
}
均值滤波(适合轻微抖动):
c
复制
编辑
uint32_t sum = 0;
for (int i = 0; i < 16; i++) {
    sum += ADC_Read();  // 多次采样
}
uint16_t filtered = sum / 16;
3. 保证模拟电源和参考电压稳定
ADC精度高度依赖 V<sub>REF</sub> 参考电压 和 AVDD模拟电源 的稳定性。若电源带有纹波(如使用开关电源或长走线),可能造成 ADC 结果出现周期性毛刺或突变。

建议:
AVDD 使用独立 LDO、加滤波电容(如 10uF + 100nF)

VREF 若外部提供,必须加旁路电容(如 1μF)

若支持使用内部参考电压(如 MM32L系列),优先使用

4. 配置ADC连续采样 + DMA + 滑动平均
通过 DMA 实现 ADC 连续采样,再结合滑动窗口平均可有效抑制跳变:

c
复制
编辑
#define WINDOW_SIZE 16
uint16_t adc_window[WINDOW_SIZE];
uint16_t window_index = 0;

void update_adc_window(uint16_t new_val) {
    adc_window[window_index++] = new_val;
    if (window_index >= WINDOW_SIZE) window_index = 0;
}

uint16_t get_average() {
    uint32_t sum = 0;
    for (int i = 0; i < WINDOW_SIZE; i++) sum += adc_window[i];
    return sum / WINDOW_SIZE;
}
5. 防止外部干扰和引脚耦合
硬件注意:
ADC通道引脚应避免靠近高频/高电流走线(如PWM、MOS管)

加入简单 RC 滤波(如 10kΩ + 100nF)可稳压信号

地线布线尽量短,避免“地弹”干扰参考电压

6. 避免CPU中断干扰采样(特别是手动触发方式)
若使用软件触发 ADC 或单次采样,建议关闭其他高优先级中断(如串口、定时器)

或使用 硬件触发 + DMA 方式,避开中断不确定性


使用特权

评论回复
沙发
Jiangxiaopi| | 2025-6-9 16:06 | 只看该作者
使用低噪声低压差线性稳压器为ADC模拟电源和参考电压供电,避免开关电源噪声干扰

使用特权

评论回复
板凳
Zhiniaocun| | 2025-6-9 16:42 | 只看该作者
在VREF引脚并联大容量电容和高频小电容,滤除低频和高频噪声

使用特权

评论回复
地板
Zuocidian| | 2025-6-9 17:19 | 只看该作者
若VDD与VREF共用LDO,可在LDO与VREF之间串联低直流电阻(RDC)磁珠,抑制外部电源波动

使用特权

评论回复
5
Puchou| | 2025-6-9 17:55 | 只看该作者
模拟信号走线远离数字信号(间距≥3倍线宽),敏感信号采用屏蔽线或双绞线

使用特权

评论回复
6
Xiashiqi| | 2025-6-9 18:31 | 只看该作者
缩短地线路径,避免“地弹”干扰;模拟地与数字地单点连接

使用特权

评论回复
7
小海师| | 2025-6-9 19:06 | 只看该作者
根据ADC输入电阻要求,调整信号源阻抗,避免采样误差超过0.5LSB

使用特权

评论回复
8
Haizangwang| | 2025-6-9 19:42 | 只看该作者
通过运放或分压电路将信号调整至接近VREF范围,提升分辨率

使用特权

评论回复
9
八层楼| | 2025-6-9 20:18 | 只看该作者
在允许范围内增大ADC时钟,缩短转换时间,提升采样率

使用特权

评论回复
10
guanjiaer| | 2025-6-9 20:49 | 只看该作者
通过DMA自动传输采样数据,减少CPU干预和中断延迟

使用特权

评论回复
11
heimaojingzhang| | 2025-6-9 21:26 | 只看该作者
结合DMA实现连续采样,对窗口内数据求平均,抑制随机跳变

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

480

帖子

2

粉丝