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个字的跳动。

图片

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

    关注

    30

    文章

    5037

    浏览量

    117763
  • STM32单片机
    +关注

    关注

    58

    文章

    545

    浏览量

    57938
  • ADC采样
    +关注

    关注

    0

    文章

    125

    浏览量

    12710
  • stm32cubemx
    +关注

    关注

    5

    文章

    260

    浏览量

    14448
  • 过采样技术
    +关注

    关注

    0

    文章

    6

    浏览量

    2199
收藏 人收藏

    评论

    相关推荐

    LSM303AGR如何在加速度计上获得12分辨率

    加速度计上获得12分辨率的技巧是什么?我的注册设置: - CTRL_REG1_A设置为0x67(ODR 200 Hz,LPen = 0,全部3轴启用) - CTRL_REG2_A设置为0x00(禁用高
    发表于 09-10 17:18

    LIS3DH:12分辨率和FIFO模式是否可以运行12分辨率的加速度计?

    鉴于LIS3DH FIFO只有10宽,实际上是否可以运行12分辨率的加速度计? #12#l
    发表于 09-26 17:52

    ADC的噪声、ENOB及有效分辨率

    。  更高分辨率  过去,一只12SAR ADC通常就足以测量各种信号与电压输入。如果某个应用需要更精细的测量,设计者可以在ADC前加一个
    发表于 11-26 16:48

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

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

    请问24分辨率是否是所有ADC的极限?

    众所周知,Delta-Sigma的ADC是所有类型ADC中位数做得最高的,可以到24,麻烦问下24分辨率是否是所有
    发表于 12-24 14:53

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

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

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

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

    更强的测量信心 — 真正的12ADC和高分辨率模式 新一代示波器

    转换,这些都是对小幅度信号测量精度要求较高的例子。考虑到所有这些测试场景,全新4系列MSO的核心是12模数转换器(ADC),它提供的垂直分辨率是传统8
    发表于 02-13 10:14

    ADC信噪比要怎么分析?高速高分辨率ADC电路要怎么实现

    在雷达、导航等军事领域中,由于信号带宽宽(有时可能高于10MHz),要求ADC采样率高于30MSPS,分辨率大于10。目前高速高分辨率
    发表于 04-14 06:16

    怎样通过单片机ADC采样来提升采样分辨率

    什么是采样呢?怎么利用过采样实现更高的分辨率呢?怎样通过单片机ADC
    发表于 02-28 09:12

    如何实现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

    n76e003关于ADC的1012的问题求解

    N76E003的分辨率12, value= (ADCRH<<4) + ADCRL;//得到ADC转换值 ADCRH是高8
    发表于 06-19 06:02

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

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

    AD2S1210 16分辨率-125rps时值为0x80000,10分辨率时-2500 rps时值为0x3ff这样对吗?

    手册上说:ad2s1210 传真: ad2s1210在16分辨率,8.192Mhz输入时钟,ad2s1210 传真: ad2s1210的最大跟踪速率为±125 rps。如果速度为125 分钟
    发表于 12-07 08:07