查看原文
其他

基于代码固件方面保障ADC精度的几点建议

茶话MCU 2022-09-11


这里是一些通用的固件设计技巧,可用来降低系统或信号噪声,以实现更好的ADC 转换精度:


1. 在即将开始ADC 转换时,避免启动任何通信外设的数据传输,因为I/O的切换可能会在供电电压中产生一些噪声,尤其高速率通信;或者回避可能导致电源波动、噪声加剧的操作。


我在这里做个友情提醒‍:‍STM32芯片的GPIO输出速率通常多档位选择配置,但不要动不动就选择最高,并非最高就最好,满足输出要求就好。所谓合适的标准就是输出波形无失真就行。其实随意选择最高输出速率对系统毫无益处,一方面加剧电源噪声和对系统的干扰,另一方面也加大了功耗。


2. 尽量避免切换高灌电流I/O,往往会在电源中产生噪声波纹,从而给ADC转换带来误差。


3. 尽量避免使用与AD输入脚处于在同一GPIO 端口的IO脚切换数字输出。如果A/D 输入正在被转换时,这会将切换噪声引入模拟输入中。


4.ADC应用中采用求平均值的方法可用来较好地消除源于输入信号上的噪声。即对模拟输入实行多次采样,将所有转换结果累加后取均值。


5. 对于STM32F2/F4系列, ART 配置为启用数据缓存 + 指令缓存,禁用指令预取。这可避免CPU对Flash 额外访问而导致额外的噪声,开启预取在有些应用中这会极大地降低ADC精度!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存