STM32的12位ADC过采样实现16位分辨率

1.什么是过采样

  过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。部分STM32单片机是支持硬件过采样的,如STM32G0系列。通过过采样,可以将12位的ADC提升到16位,非常实用。

450d5b1d6d97ed2d6772b3f3d05ce577.png   根据过采样技术,每提高1位ADC分辨率,需要增加4倍的采样率。也就是说1次采样是12Bit,4次是13Bit,16次是14Bit,64次是15Bit,256次是16Bit,如果要更高分辨率,那么STM32的硬件过采样就无能为力了。

   过采样主要通过配置ADC_SMPR寄存器的下面几位即可实现,配置移位位数、过采样倍数以及使能位。如下:

fa88d7c44a90af458a9335127d4061da.png

   最大可配置为256倍过采样,实现16位分辨率。当采用256倍过采样时,得到的结果是20位的,但ADC_DR寄存器是16位的,所以此时必须右移4位才行。如下图:

5bd8c38ae6203267d9dccc1b17fdce59.png

2.STM32CubeMX配置

  ADC配置如下,使能了一个通道,打开DMA和连续采样。使能过采样,右移4位,256倍过采样。这样就可以直接当作16位ADC来用了。

c5d5c9cd5271f9061f38dbe34a6e00f7.png

  生成代码后,输入2.5V的电压,进行采样测试,程序如下:   

HAL_ADCEx_Calibration_Start(&hadc1);
HAL_Delay(200);
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC_Buf,100);

   采样结果如下,可以看到,有最大4个字的跳动。当然这也跟硬件的布局布线等设计有关系。测试使用的开发板,效果不是特别好,但过采样对于提升分辨率还是有用的。

7a7aaf99ba554cb05e5730b1db34dfa4.png

   如果再对结果进去求平均值,可以进一步提升分辨率,结果如下,基本上只有1个字的跳动。

bd5cb7613a97108b7b9bf8f8819808f7.png

推荐阅读:

热电偶测温设计

怎样理解ADC的噪声、有效分辨率

STM32CubeMX之ADC采集

   欢迎关注公众号"嵌入式技术开发",大家可以后台给我留言沟通交流。如果觉得该公众号对你有所帮助,也欢迎推荐分享给其他人。

版权声明:本文为CSDN博主「天外飞仙CUG」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhang062061/article/details/122678106

生成海报
点赞 0

天外飞仙CUG

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

AD9528芯片介绍及配置详解

AD9528是ADI(亚德诺半导体技术有限公司, Analog Devices, Inc. 简称ADI )出品的一款双级PLL,集成JESD204B SYSREF发生器,可用于多器件同步。第一级锁相环(PLL) (P

STM32的12位ADC过采样实现16位分辨率

1.什么是过采样过采样技术是一种以牺牲采样速度来提高ADC分辨率的技术。部分STM32单片机是支持硬件过采样的,如STM32G0系列。通过过采样,可以将12位的ADC提升到16位,非常实用。根据过采样技

基于STM32的室内环境监测系统

设计简介: 本设计是基于单片机的室内环境监测器,主要实现以下功能: 可实现LCD1602显示环境数据实时监测一氧化碳、甲烷、烟雾值空气质量大于各自限值报警,并通过TTS报警 标签&#x