0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:嵌入式技术开发 作者:Mr张工 2023-10-12 10:19 次阅读

1.什么是过采样

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

图片

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

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

图片

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

图片

2.STM32CubeMX配置

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

图片

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

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

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

图片

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

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5343

    浏览量

    120398
  • STM32单片机
    +关注

    关注

    59

    文章

    549

    浏览量

    58724
  • ADC采样
    +关注

    关注

    0

    文章

    134

    浏览量

    12848
  • stm32cubemx
    +关注

    关注

    5

    文章

    283

    浏览量

    14812
  • 过采样技术
    +关注

    关注

    0

    文章

    7

    浏览量

    2213
收藏 人收藏

    评论

    相关推荐

    ADC分辨率可以通过采样的方式提高吗?

    ADC分辨率16,用过采样的方式将分辨率提高到20
    发表于 11-30 10:33

    请问有采样率250MHz, 分辨率8/12ADC推荐吗?

    您好, 请问有采样率250MHz左右 分辨率12,管脚兼容8分辨率
    发表于 02-22 11:53

    如何在Δ∑ADC上达到20分辨率

    我有一些关于CY8C58系列PSoC和模拟性能的问题。数据表要求在Δ∑ADC上达到20分辨率。有没有真实世界的测试来验证这一水平的准确性实际上是可以实现的?内部参考为1.024V,在
    发表于 07-19 14:58

    如何实现STM32 MCU的16ADC分辨率

    STM32 MCU 具有 12 ADC 分辨率,但一些 MCU 声称“高达 16
    发表于 12-01 06:11

    S32K344 14ADC分辨率12分辨率之间有什么区别?

    我正在使用 S32K344s ADC。网站上的数据表和规范声明了 12 分辨率,但 ADC 外设可以在 CALBISTREG 寄存器中设置
    发表于 06-06 09:10

    请问有采样率250MHz左右、分辨率12,管脚兼容8分辨率adc吗?

    您好, 请问有采样率250MHz左右 分辨率12,管脚兼容8分辨率
    发表于 11-21 06:46

    电压范围为正负10V、具有12分辨率的自动调零电路

    电压范围为正负10V、具有12分辨率的自动调零电路 电路的功能
    发表于 05-07 14:21 4189次阅读
    电压范围为正负10V、具有<b class='flag-5'>12</b><b class='flag-5'>位</b><b class='flag-5'>分辨率</b>的自动调零电路

    VCNL4020 16分辨率能为你做什么

    VCNL4020 16分辨率能为你做什么
    发表于 02-07 16:15 40次下载

    14分辨率的模块和16分辨率的模块之间的区别

    14分辨率的模块(mo kuai)和16分辨率的模块有什么不同的地方? 14的模块最高位是
    发表于 10-09 14:00 3987次阅读

    DAC如何达到32分辨率

    DAC的32分辨率的基础是模拟开关S 1 和S 2 以及精密电阻网络R 2 至R 6对两个16PWM信号求和。
    的头像 发表于 05-13 07:47 4480次阅读
    DAC如何达到32<b class='flag-5'>位</b><b class='flag-5'>分辨率</b>

    AD9260:2.5 MHz输出字16分辨率的高速采样CMOS ADC数据表

    AD9260:2.5 MHz输出字16分辨率的高速采样CMOS
    发表于 04-17 17:07 14次下载
    AD9260:2.5 MHz输出字<b class='flag-5'>率</b>下<b class='flag-5'>16</b><b class='flag-5'>位</b><b class='flag-5'>分辨率</b>的高速<b class='flag-5'>过</b><b class='flag-5'>采样</b>CMOS <b class='flag-5'>ADC</b>数据表

    AD9281:双通道8分辨率CMOS ADC数据表

    AD9281:双通道8分辨率CMOS ADC数据表
    发表于 04-27 12:57 2次下载
    AD9281:双通道8<b class='flag-5'>位</b><b class='flag-5'>分辨率</b>CMOS <b class='flag-5'>ADC</b>数据表

    如何通过过采样的方式提高有效分辨率

    (比特)分辨率采样率是模数转换器(ADC)最重要的两个参数。高位分辨率ADC可以有效地减少
    的头像 发表于 01-21 14:20 6468次阅读
    如何通过过<b class='flag-5'>采样</b>的方式提高有效<b class='flag-5'>位</b><b class='flag-5'>分辨率</b>

    采样ADC实现16分辨率

    )。AD7723具有19.2 MHz时钟,采用16采样,能够以16.460 MHz输出字速率为1 kHz输入提供2性能。
    的头像 发表于 06-17 14:38 3506次阅读
    <b class='flag-5'>过</b><b class='flag-5'>采样</b><b class='flag-5'>ADC</b>,<b class='flag-5'>实现</b><b class='flag-5'>16</b><b class='flag-5'>位</b><b class='flag-5'>分辨率</b>

    RA6T2的16模数转换器操作 [9] 配置RA6T2 ADC模块 (6)

    2 配置RA6T2 ADC模块 2.2 以16深度操作ADC RA6T2 MCU上的ADC外设的独特之处在于,它能够利用过
    的头像 发表于 08-04 12:10 640次阅读
    RA6T2的<b class='flag-5'>16</b><b class='flag-5'>位</b>模数转换器操作 [9] 配置RA6T2 <b class='flag-5'>ADC</b>模块 (6)