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

Nucleo-L4R5ZI评测5 过采样ADC

[复制链接]
wenyangzeng 提问时间:2018-1-5 20:43 /
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, 下载次数: 23)
收藏 1 评论10 发布时间:2018-1-5 20:43

举报

10个回答
黑夜之狼 回答时间:2018-1-6 14:36:54
如果是说分辨率的话,12bit就满足要求,3300/4096=0.8mV,关键是精度
wenyangzeng 回答时间:2018-1-6 16:27:33
黑夜之狼 发表于 2018-1-6 14:36
如果是说分辨率的话,12bit就满足要求,3300/4096=0.8mV,关键是精度

多谢提醒
835439256@qq.co 回答时间:2018-1-7 19:12:00
不错的评测,很有借鉴意义
wenyangzeng 回答时间:2018-1-7 19:18:34
浪迹天涯123 发表于 2018-1-7 19:12
不错的评测,很有借鉴意义

谢谢。。
bjdj0000 回答时间:2018-10-1 17:59:27
过采样DMA传输是哪个函数呢?
wenyangzeng 回答时间:2018-10-2 08:06:22
bjdj0000 发表于 2018-10-1 17:59
过采样DMA传输是哪个函数呢?

这个过采样没有采用DMA,ADC-DMA在官方代码里可以找到的:
ADC_DMA_Transfer.rar (55.52 KB, 下载次数: 12)
bjdj0000 回答时间:2018-10-5 17:59:07
wenyangzeng 发表于 2018-10-2 08:06
这个过采样没有采用DMA,ADC-DMA在官方代码里可以找到的:

已解决流,不过还是谢谢了!       
小乐子531 回答时间:2018-12-5 20:04:35
请问这个文件的采样频率是多少啊?
布鲁斯大李 回答时间:2020-5-19 13:46:34
放个hex文件是什么鬼。。。
wenyangzeng 回答时间:2020-5-19 15:31:00
布鲁斯大李 发表于 2020-5-19 13:46
放个hex文件是什么鬼。。。

下载到目标板的目标文件呀。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版