搜索
查看: 2914|回复: 3

[原创] 关于STM32G431的过采样ADC电压表【例程分享】

[复制链接]

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
发表于 2020-8-6 15:43:35 | 显示全部楼层 |阅读模式
关于STM32G431的过采样ADC电压表【例程分享】

    STM32G4是一款ST最新推出的Cortex-M4的低功耗ARM 处理器。它的一个亮点是可运行过采样技术使得ADC达到16位转换精度。
   过采样单元执行数据预处理能够处理多个ADC转换,并将它们的平均数据宽度增加到最大16位的数据。

t0.png
   过采样率N和除法系数M可以调整。 硬件实现以下功能:平均、数据速率降低、信噪比提高、基本滤波。
    N使用ADC CFGR2寄存器中的OVFS[2:0]位定义的,其范围可以从2x到256x。
    M由高达8bit的右移位组成,并使用ADCCFGR2寄存器中的OVSS[3:0]位定义。
    求和单元可以产生高达20位(256x12位结果)的结果,该结果首先右移,然后将其截断为16个最低有效位,使用移位留下的最低有效位四舍五入到最近的值,最后再被传输到ADC-DR数据寄存器。

硬件:开发板使用STM32G431Nucleo,利用空余IO口外接了1片OLED显示屏,PA0外接1电位器输入AVDD的分压值,见图1

t1.png
                                        图1
软件:
在CubeMX中建立一个工程,配置过采样率N=128、除法系数M=3;


      t2.png                               

        图2



过采样ADC配置部分代码:

  1. hadc1.Init.OversamplingMode = ENABLE;
  2. hadc1.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_128;
  3. hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_3;
  4. hadc1.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
  5. hadc1.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;

复制代码



    运行结果:16位过采样ADC转换结果非常稳定,转换后未经任何软件滤波处理,显示的读数只在最后1位偶尔跳动1个数字。

t3.png

基于STM32G431过采样电压表.part01.rar (7.3 MB, 下载次数: 80)
回复

使用道具 举报

该用户从未签到

8

主题

734

帖子

3

蝴蝶豆

金牌会员

最后登录
2023-5-15
发表于 2020-8-6 18:25:33 | 显示全部楼层
谢谢分享
回复

使用道具 举报

该用户从未签到

12

主题

1392

帖子

45

蝴蝶豆

金牌会员

最后登录
2021-8-25
发表于 2020-8-13 09:23:11 | 显示全部楼层
支持一下
mark.png
回复

使用道具 举报

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
 楼主| 发表于 2020-8-13 10:14:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-20 07:59 , Processed in 0.175673 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表