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

查看: 2570|回复: 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管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版