
1.什么是过采样; _2 j; K% E# y0 ~1 }, ^ : s& x" x$ N6 U% \# j. H3 ` 过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。部分STM32单片机是支持硬件过采样的,如STM32G0系列。通过过采样,可以将12位的ADC提升到16位,非常实用。 ![]() 根据过采样技术,每提高1位ADC分辨率,需要增加4倍的采样率。也就是说1次采样是12Bit,4次是13Bit,16次是14Bit,64次是15Bit,256次是16Bit,如果要更高分辨率,那么STM32的硬件过采样就无能为力了。 0 I& O& D# b8 h 过采样主要通过配置ADC_SMPR寄存器的下面几位即可实现,配置移位位数、过采样倍数以及使能位。如下:3 L$ T5 Z- }* c4 E- s, ]: R. ]4 X! k, F9 I 3 a0 e( t& J, B' o1 }& s/ Q# w+ S ![]() 最大可配置为256倍过采样,实现16位分辨率。当采用256倍过采样时,得到的结果是20位的,但ADC_DR寄存器是16位的,所以此时必须右移4位才行。如下图:# m) _ A, q; ?/ t7 A2 R, D: @ ![]() 2.STM32CubeMX配置 ADC配置如下,使能了一个通道,打开DMA和连续采样。使能过采样,右移4位,256倍过采样。这样就可以直接当作16位ADC来用了。 + z/ n+ ~# R" @5 [/ e9 G3 n ![]() 生成代码后,输入2.5V的电压,进行采样测试,程序如下: 2 `1 ^4 r8 e- S0 e {+ z3 v2 f' W
采样结果如下,可以看到,有最大4个字的跳动。当然这也跟硬件的布局布线等设计有关系。测试使用的开发板,效果不是特别好,但过采样对于提升分辨率还是有用的。" b1 O% E1 o! t( m& u + w+ v/ C7 A$ G ![]() 如果再对结果进去求平均值,可以进一步提升分辨率,结果如下,基本上只有1个字的跳动。 ; b/ p0 ?0 X+ c2 i% L5 X& S ![]() 4 i# P! S7 y X! `; k2 C ———————————————— 版权声明:天外飞仙CUG 如有侵权请联系删除( n& P, r! v, E0 T* k Y7 O 7 [6 ?# G1 u# ~) Y ( W, g; f. {2 E7 x |
基于STM32使用ADC的多通道采样经验分享
基于STM32利用ADC+DMA采样显示经验分享
基于STM32的ADC+DMA采样与板载运放跟随经验分享
基于STM32F407和Cubemx的ADC采集+DMA传输实现简易示波器经验分享
基于STM32CubeMX实现ADC的经验分享
基于STM32的ADC+DMA采样与板载运放跟随经验分享
基于STM32双定时器+ADC+DMA实战经验分享
基于STM32的定时器触发ADC时可能遇到的情形
基于STM32的ADC片内信号经验分享
基于STM32U5 ADC+DMA配置经验分享