你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2583|回复: 10

[STM32L4+] Nucleo-L4R5ZI评测5 过采样ADC

[复制链接]

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

最后登录
2020-12-9
发表于 2018-1-5 20:43:32 | 显示全部楼层 |阅读模式
Nucleo-L4R5ZI评测5 过采样ADC

    STM32L4R5具有12-bit ADC ,通过过采样技术可以达到16-bit 分辨率。官方发布的STM32Cube_FW_L4_V1.10.0固件里的Projects\STM32L4R5ZI-Nucleo\Examples\ADC\ADC_OverSampler已经为我们写好完整代码。演示代码描述了如何配置使用ADC结合过采样技术转换一个外部模拟输入,通过HAL API增加分辨率。这个过采样率设置为ADC_OVERSAMPLING_RATIO_128,因此输出结果最大是0xFFF * 128 = 0x7FF80(19位)。由于ADC_DR是一个16位长的寄存器,所以执行了一个3位右移位只保留16个有用位。
    外部模拟输入由一可调电阻连接+3.3V到GND,中心点连接到ADC_CHANNEL_9(Arduino连接器CN7引脚17)。为了方便观察转换结果,我们在开发板上临时配置了一片OLED显示屏,显示转换后的电压。
OLED.png

官方过采样配置
  1. AdcHandle.Init.Oversampling.Ratio                 = OVERSAMPLING_RATIO;    /* Oversampling ratio */
  2.   AdcHandle.Init.Oversampling.RightBitShift         = RIGHTBITSHIFT;         /* Right shift of the oversampled summation */
  3.   AdcHandle.Init.Oversampling.TriggeredMode         = TRIGGEREDMODE;         /* Specifies whether or not a trigger is needed for each sample */
  4.   AdcHandle.Init.Oversampling.OversamplingStopReset = OVERSAMPLINGSTOPRESET; /* Specifies whether or not the oversampling buffer is maintained during injection sequence */  
复制代码

部分显示代码
  1. void To_Dispbuf(void)
  2. {

  3.         Dispbuf[0]=(uwInputVoltage%10000/1000)+0x30;
  4.         Dispbuf[1]=(uwInputVoltage%1000/100)+0x30;
  5.         Dispbuf[2]=(uwInputVoltage%100/10)+0x30;
  6.         Dispbuf[3]=(uwInputVoltage%10)+0x30;
  7.         Dispbuf[4]='m';
  8.         Dispbuf[5]='V';
  9.         Dispbuf[6]='\0';

  10.         LCD_Print(36, 40,Dispbuf,TYPE16X16,TYPE8X16);
  11. }
复制代码

main.c
  1. #include "main.h"
  2. #include "oled.h"

  3. int main(void)
  4. {
  5.   HAL_Init();
  6.   SystemClock_Config();
  7.   LCD_Init();
  8.   LCD_Print(0, 0,"STM32L4R5ZI",TYPE16X16,TYPE8X16);
  9.         LCD_Print(0, 16,"ADC_OverSampler",TYPE16X16,TYPE8X16);
  10. 以下省略
  11. }
复制代码


   转换结果

3300mv.png
                            3.3V

2499mv.png
                  2.499V

1023mv.png
                    1.023V

1mv.png
                                 1mV




Project_hex.rar (13.21 KB, 下载次数: 19)
<
回复

使用道具 举报

10

主题

1371

回帖

26

蝴蝶豆

论坛元老

最后登录
2020-12-1
发表于 2018-1-6 14:36:54 | 显示全部楼层
如果是说分辨率的话,12bit就满足要求,3300/4096=0.8mV,关键是精度
回复 支持 反对

使用道具 举报

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

最后登录
2020-12-9
 楼主| 发表于 2018-1-6 16:27:33 | 显示全部楼层
黑夜之狼 发表于 2018-1-6 14:36
如果是说分辨率的话,12bit就满足要求,3300/4096=0.8mV,关键是精度

多谢提醒
回复 支持 反对

使用道具 举报

5

主题

84

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-12
发表于 2018-1-7 19:12:00 | 显示全部楼层
不错的评测,很有借鉴意义
回复 支持 反对

使用道具 举报

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

最后登录
2020-12-9
 楼主| 发表于 2018-1-7 19:18:34 | 显示全部楼层
浪迹天涯123 发表于 2018-1-7 19:12
不错的评测,很有借鉴意义

谢谢。。
回复 支持 反对

使用道具 举报

2

主题

10

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-23
发表于 2018-10-1 17:59:27 | 显示全部楼层
过采样DMA传输是哪个函数呢?
回复 支持 反对

使用道具 举报

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

最后登录
2020-12-9
 楼主| 发表于 2018-10-2 08:06:22 | 显示全部楼层
bjdj0000 发表于 2018-10-1 17:59
过采样DMA传输是哪个函数呢?

这个过采样没有采用DMA,ADC-DMA在官方代码里可以找到的:
ADC_DMA_Transfer.rar (55.52 KB, 下载次数: 9)
回复 支持 反对

使用道具 举报

2

主题

10

回帖

0

蝴蝶豆

初级会员

最后登录
2019-8-23
发表于 2018-10-5 17:59:07 | 显示全部楼层
wenyangzeng 发表于 2018-10-2 08:06
这个过采样没有采用DMA,ADC-DMA在官方代码里可以找到的:

已解决流,不过还是谢谢了!       
回复 支持 反对

使用道具 举报

4

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2019-4-3
发表于 2018-12-5 20:04:35 | 显示全部楼层
请问这个文件的采样频率是多少啊?
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

初级会员

最后登录
2020-5-19
发表于 2020-5-19 13:46:34 | 显示全部楼层
放个hex文件是什么鬼。。。
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版