STM32L4 ADC偏移误差恒定的可能来源



我已经使用STM32l4(STM32l342kc核-32(线几年了,在我正在进行的一个当前项目中,我意识到我的读数上有一个恒定的负ADC偏移(约52mV(。

该系统以10位连续模式运行,DMA传输和硬件8X过采样。由于某种原因,第一次计数开始时比预期高出约50mV(第一次计数从52mV开始,而不是预期的3mV(。当我用3306mV使ADC饱和时,ADC会记录一个比最大计数低52mV的信号(读起来好像它得到了3248mV(。我已经用3个外部电压测量值确认了我发送的电压是准确的。

我试过输入缓冲/未缓冲/低阻抗的直流信号,结果是一样的。我还使用了系统的采样时间,结果在所有测试中都是可重复的。

最后要注意的是,STM32在ST的官方开发板上运行,我也测试了不同的ADC通道,所有的测量都是在测试板和MCU的引脚上进行的,以排除坏连接。我也尝试过不使用8倍过采样。

我想知道是否有人对我可能忽略的错误来源和/或我可以测试/实施的任何可能的解决方案有任何建议。提前谢谢。

STM32L432KC Nucleo板没有高精度参考。正如您所指出的,它只是为设备的模拟区域供电的3.3V LDO。这可能是你的误差来源,因为它是一个相对便宜、不准确的部件,产生3.3V。校准有助于消除偏移和增益误差,并可以实现更准确的测量,但如果你使用从LSB到绝对值的典型转换方法(你正在寻找该绝对值(,不正确的参考可能会立即返回该误差。系列参考的第517页显示了如何在软件中实现这一点。

除此之外,您还可以尝试使用系列参考第582页概述的过程,通过内部参考测量参考的绝对电压。如果你将这种方法结合起来,从LDO中很好地掌握Vref+是什么,再加上适当的校准,你很可能能够减少你的偏移误差,以及你显示的轻微增益误差。

资源:STM32L4系列参考,最佳ADC精度程序

我刚刚遇到了完全相同的错误,STM32L471在自定义板上
我只是想分享我找到的简单解决方案。

我使用的是HAL库,ADC初始化代码由STM32CubeMX生成。但事实证明,这个init代码不包括参考手册中规定的ADC校准。

简单的解决方案是简单地添加

HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED);

在每个MX_ADCx_Init函数的末尾。当然,&hadc2更改为右侧ADC通道。

相关内容

  • 没有找到相关文章

最新更新