|
1.什么是过采样 $ M4 ^& d3 i# q/ D$ ` 过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。部分STM32单片机是支持硬件过采样的,如STM32G0系列。通过过采样,可以将12位的ADC提升到16位,非常实用。 ' k* M! L$ C$ b
d! U. z9 W* V4 E3 Q% l6 G* z 根据过采样技术,每提高1位ADC分辨率,需要增加4倍的采样率。也就是说1次采样是12Bit,4次是13Bit,16次是14Bit,64次是15Bit,256次是16Bit,如果要更高分辨率,那么STM32的硬件过采样就无能为力了。 1 p0 |" K( h$ T9 d 过采样主要通过配置ADC_SMPR寄存器的下面几位即可实现,配置移位位数、过采样倍数以及使能位。如下:' C# o" x8 Y# K- y G' q
5 t1 y" u( J8 e. o3 r2 W 最大可配置为256倍过采样,实现16位分辨率。当采用256倍过采样时,得到的结果是20位的,但ADC_DR寄存器是16位的,所以此时必须右移4位才行。如下图:
2.STM32CubeMX配置 # |+ a6 z& h* w0 T$ |- ~- o4 N ADC配置如下,使能了一个通道,打开DMA和连续采样。使能过采样,右移4位,256倍过采样。这样就可以直接当作16位ADC来用了。( E4 h/ b; q9 \9 o t8 ^ 3 W& O" J3 U5 g1 j* K8 P m
7 @ K$ d9 y s 生成代码后,输入2.5V的电压,进行采样测试,程序如下:
采样结果如下,可以看到,有最大4个字的跳动。当然这也跟硬件的布局布线等设计有关系。测试使用的开发板,效果不是特别好,但过采样对于提升分辨率还是有用的。6 H9 s# c. o( @' k
- n4 k( J* [& ^- m# f9 a. ~4 [* b 如果再对结果进去求平均值,可以进一步提升分辨率,结果如下,基本上只有1个字的跳动。7 Y5 K0 `4 A- z7 G+ n8 ?' d5 h 1 K4 ]3 M/ P+ d2 P! D
————————————————3 t' c/ c! M3 T% r) O6 O 版权声明:天外飞仙CUG" a: c9 n+ I% [/ r0 X6 u 如有侵权请联系删除% @. U. H1 N4 Y- T8 D0 G, k2 a * r" t2 x+ T5 C/ g8 ^& n0 _ 7 B; D" g' V5 m2 K# p8 l$ q( u |
经验分享 | 通过STM32 TIMER的PWM功能模拟输出正弦波
STM32H563 ADC+TIM+DMA应用演示
经验分享 | STM32N6 ADC DMA 传输失败案例分享
实战经验 | MC SDK V6.x软件HSO功能ADC采样设计说明
经验分享 | 为什么重启ADC的DMA传输要先停掉ADC?
经验分享 | 为什么重启ADC的DMA传输要先停掉ADC?
经验分享 | STM32 ADC过采样话题
经验分享 | STM32双定时器+ADC+DMA实战案例
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
经验分享 | 基于STM32片内信号的ADC应用演示
微信公众号
手机版