|
1.什么是过采样 过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。部分STM32单片机是支持硬件过采样的,如STM32G0系列。通过过采样,可以将12位的ADC提升到16位,非常实用。* b4 ?+ `6 y; b- u/ e& C/ W ; h0 w3 ~ ]8 H4 {3 u# L! t
根据过采样技术,每提高1位ADC分辨率,需要增加4倍的采样率。也就是说1次采样是12Bit,4次是13Bit,16次是14Bit,64次是15Bit,256次是16Bit,如果要更高分辨率,那么STM32的硬件过采样就无能为力了。 过采样主要通过配置ADC_SMPR寄存器的下面几位即可实现,配置移位位数、过采样倍数以及使能位。如下:
$ i3 y2 `) ^9 } 最大可配置为256倍过采样,实现16位分辨率。当采用256倍过采样时,得到的结果是20位的,但ADC_DR寄存器是16位的,所以此时必须右移4位才行。如下图:4 c) T6 p7 P0 G$ A) [7 S- k 0 N; d- [0 y; D# a; l# o; U
2.STM32CubeMX配置: E! F; j# n9 P! `- z. d ADC配置如下,使能了一个通道,打开DMA和连续采样。使能过采样,右移4位,256倍过采样。这样就可以直接当作16位ADC来用了。( r' j' {% I, e$ B6 h8 O
生成代码后,输入2.5V的电压,进行采样测试,程序如下:
采样结果如下,可以看到,有最大4个字的跳动。当然这也跟硬件的布局布线等设计有关系。测试使用的开发板,效果不是特别好,但过采样对于提升分辨率还是有用的。$ a5 X( W) }1 I# _4 z) L, z! | ' U- R0 `7 p$ M- K. b
- P1 A( q5 k$ h, G' g1 U- l 如果再对结果进去求平均值,可以进一步提升分辨率,结果如下,基本上只有1个字的跳动。
———————————————— 版权声明:天外飞仙CUG0 h$ h: Q$ I$ s- K% a$ K 如有侵权请联系删除' N+ K5 J/ S { x* R( v0 U) K- ]) x |
【STM32H5 评测】ADC 电压表
经验分享 | 通过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应用演示
微信公众号
手机版