登录/注册

STM32 ADC 乱跳

STM32 ADC 乱跳

更多

STM32 ADC采样值不稳定(乱跳)通常由硬件干扰、配置不当或软件处理引起,以下是常见原因及解决方法:


一、硬件问题排查

  1. 电源与参考电压噪声

    • 确保模拟电源(VDDA、VREF+)干净,纹波≤50mV。建议在VDDA/VREF+引脚并联 10µF电解电容 + 0.1µF陶瓷电容 滤波。
    • 若使用外部参考电压芯片(如REF3033),优先选择低噪声型号。
  2. 信号输入问题

    • 信号源阻抗过高:ADC输入阻抗较高(约50kΩ),若信号源阻抗>1kΩ,需增加RC低通滤波(如1kΩ电阻串联 + 100nF电容对地)。
    • 输入信号噪声:用示波器检查信号是否纯净。高频噪声可增加RC滤波(截止频率按信号带宽计算)。
  3. 接地与布线

    • 分离模拟地(AGND)与数字地(DGND),单点连接。
    • ADC信号线远离高频信号(如时钟、PWM),避免平行走线。

二、软件配置优化

  1. 采样时间调整

    • 增加采样时间(SamplingTime),尤其是高阻抗信号源。例如:
      ADC_ChannelConfTypeDef sConfig;
      sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES;  // 适当延长采样时间
    • 计算公式:采样时间 ≥ (信号源阻抗 + 1kΩ) × 14 pF × ln(2^12)
  2. 时钟配置

    • ADC时钟频率勿超规格(通常≤36 MHz)。通过PCLK分频调整:
      hadc.Instance->ADC->CCR |= ADC_CCR_ADCPRE_0;  // 分频系数=2(例:72MHz→36MHz)
  3. 校准与去噪

    • 启用ADC校准(上电后执行一次):
      HAL_ADCEx_Calibration_Start(&hadc, ADC_SINGLE_ENDED);
    • 启用硬件去噪(部分型号支持):
      hadc.Instance->CR1 |= ADC_CR1_EOCIE;  // 开启噪声抑制模式

三、软件滤波处理

  1. 均值滤波

    #define SAMPLE_TIMES 16  // 采样次数
    uint32_t adc_sum = 0;
    for(int i=0; i<SAMPLE_TIMES; i++) {
       HAL_ADC_Start(&hadc);
       adc_sum += HAL_ADC_GetValue(&hadc);
    }
    uint32_t adc_avg = adc_sum / SAMPLE_TIMES;
  2. 中值滤波

    #define SAMPLE_SIZE 5
    uint16_t adc_buf[SAMPLE_SIZE];
    // 采样并排序后取中间值
  3. 滑动平均滤波

    #define FILTER_WINDOW 8
    static uint32_t filter_buf[FILTER_WINDOW];
    static uint8_t index = 0;
    filter_buf[index++] = HAL_ADC_GetValue(&hadc);
    index %= FILTER_WINDOW;
    uint32_t avg = (filter_buf[0] + ... + filter_buf[7]) / FILTER_WINDOW;

四、其他注意事项

通过上述步骤排查,通常可显著降低ADC采样抖动。若问题持续,建议用示波器检查硬件信号质量及电源稳定性。

ad7606采集集成运放输出电压值出现的情况怎么解决?

使用stm32f103驱动ad7606采集集成运放输出端电压值会出现采集值乱跳,但采集其他电压值时正常,唯独在采集集成运放输出电压值时出现

2025-04-15 07:25:41

ADS1211采样数据是什么原因引起的?

原理图如上用的是内部参考10M的晶振短接AIN1NAIN1P读取的数据在乱跳不是一直为0,波动还挺大,麻烦各位帮我分析一下,是什么原因引起的,寄存器,x写进去,读出来都是对的,谢谢。 void

2024-12-24 07:55:49

使用stm32f103系列的自带ADC采样时,在mV位采的电压无规则是怎么回事?

我在使用stm32自带的ADC来测量前端的电压信号,开始使用时,采的的电压信号在mV位上0-9乱

2024-05-15 06:08:39

基于STM32上的5个ADC程序

基于STM32上的5个ADC程序(单兵电源技术需求)-基于STM32上的5个ADC

资料下载 王利祥 2021-09-27 12:37:41

STM32ADC学习历程

STM32的ADC学习历程(电源技术期刊影响因子)- STM32的ADC

资料下载 王越建 2021-09-27 12:32:55

STM32ADC驱动程序

STM32的ADC驱动程序(电源技术被踢出核心)-  STM32的ADC

资料下载 刘满贵 2021-09-23 13:43:22

STM32ADC代码例程

STM32的ADC代码例程(普德新星电源技术有限公司怎么样)- STM32的ADC

资料下载 vinww特烦恼 2021-09-23 09:53:19

基于STM32ADC电流测量系统设计(包含程序 原理图)

基于STM32的ADC电流测量系统设计(包含程序 原理图)(24v稳压电源尺寸)-基于STM32的

资料下载 佚名 2021-07-26 09:47:31

AD5360输出波形是由什么问题引起的呢?

如附件所示: 我原本是输出一个标准的三角波,但是其实际输出波形乱跳 请问一下这个可能是由什么问题引起的呢? 谢谢

2023-12-22 07:14:57

单片机adc监测电压进行断电检测的时候悬浮时怎么办?

adc监测电压监测断电的时候,检测电压悬浮时乱跳,如何接地阿,可是这时候已经断电了不能接地了怎么办

2023-11-06 06:21:51

电容触摸屏点是什么原因造成的?

电容触摸屏乱跳是由什么原因造成的?这是个复杂而简单的问题,跟一定的环境有关系或者是装机过程中有电磁感应、参数太大、程序不合适等都有可能会影响到,今天深圳市瑞翔数码科技有限公司来讲解一下。我们测试电容

2022-12-20 15:56:08

CS1237称重

用CS1237/CS1231做的称重系统,拔掉传感器后,重量显示乱跳,有没有办法让系统不插传感器时,重量稳定显示在零点附近且不影响插传感器后的称重精度?

2021-10-15 16:07:42

触屏手机屏幕是怎么回事

首先尝试长按电源键重启一下手机看是否解决,也有可能是由于您处于潮湿环境使用,温度过高过低环境或者是当前处于低电量状态,都会造成屏幕暂时的乱跳;此外,也有可能是您的屏幕组件损坏导致。

2020-05-09 09:22:39

iPhone屏幕失灵的原因有哪些应该如何解决

最近有苹果用户反映,自己没有触碰到手机屏幕,它就不受控制的乱跳,有时就固定在一块区域,屏幕其他位置都没有反应。虽然大部分情况下都可以通过重新锁屏再解锁能够暂时解决问题。不过令人烦恼的是,这种屏幕失灵

2020-01-22 11:54:00

iPhone手机屏幕失灵的原因有哪些

最近有苹果用户反映,自己没有触碰到手机屏幕,它就不受控制的乱跳,有时就固定在一块区域,屏幕其他位置都没有反应。虽然大部分情况下都可以通过重新锁屏再解锁能够暂时解决问题。不过令人烦恼的是,这种屏幕失灵

2020-01-16 12:12:00

7天热门专题 换一换
相关标签