wenyangzeng 发表于 2018-1-5 20:43:32

Nucleo-L4R5ZI评测5 过采样ADC

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显示屏,显示转换后的电压。


官方过采样配置
AdcHandle.Init.Oversampling.Ratio               = OVERSAMPLING_RATIO;    /* Oversampling ratio */
AdcHandle.Init.Oversampling.RightBitShift         = RIGHTBITSHIFT;         /* Right shift of the oversampled summation */
AdcHandle.Init.Oversampling.TriggeredMode         = TRIGGEREDMODE;         /* Specifies whether or not a trigger is needed for each sample */
AdcHandle.Init.Oversampling.OversamplingStopReset = OVERSAMPLINGSTOPRESET; /* Specifies whether or not the oversampling buffer is maintained during injection sequence */
部分显示代码
void To_Dispbuf(void)
{

      Dispbuf=(uwInputVoltage%10000/1000)+0x30;
      Dispbuf=(uwInputVoltage%1000/100)+0x30;
      Dispbuf=(uwInputVoltage%100/10)+0x30;
      Dispbuf=(uwInputVoltage%10)+0x30;
      Dispbuf='m';
      Dispbuf='V';
      Dispbuf='\0';

      LCD_Print(36, 40,Dispbuf,TYPE16X16,TYPE8X16);
}
main.c
#include "main.h"
#include "oled.h"

int main(void)
{
HAL_Init();
SystemClock_Config();
LCD_Init();
LCD_Print(0, 0,"STM32L4R5ZI",TYPE16X16,TYPE8X16);
      LCD_Print(0, 16,"ADC_OverSampler",TYPE16X16,TYPE8X16);
以下省略
}

   转换结果


                            3.3V


                  2.499V


                  1.023V


                                 1mV






黑夜之狼 发表于 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,关键是精度

多谢提醒

浪迹天涯123 发表于 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在官方代码里可以找到的:

bjdj0000 发表于 2018-10-5 17:59:07

wenyangzeng 发表于 2018-10-2 08:06
这个过采样没有采用DMA,ADC-DMA在官方代码里可以找到的:

已解决流,不过还是谢谢了! :handshake      

yl19960531 发表于 2018-12-5 20:04:35

请问这个文件的采样频率是多少啊?

布鲁斯大李 发表于 2020-5-19 13:46:34

放个hex文件是什么鬼。。。
页: [1] 2
查看完整版本: Nucleo-L4R5ZI评测5 过采样ADC