STM32/STM8技术论坛
直播中

温洁

7年用户 200经验值
私信 关注
[问答]

STM32L476,CubeMx生成底层,AD转换误差较大,误差接近40mV

一、主芯片选用STM32L476RCTx;
二、CubeMx版本为4.23;
三、配置如下:


回帖(10)

陈斌

2018-8-20 08:22:34
建议参考一下例程,因为cubeMx只是生成底层库...

RepositorySTM32Cube_FW_L4_V1.10.0ProjectsSTM32L476G_EVALExamplesADCADC_DMA_Transfer

/* ### - 2 - Start calibration ############################################ */
  if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED) !=  HAL_OK)
  {
    Error_Handler();
  }
举报

温洁

2018-8-20 08:49:41
举报

温洁

2018-8-20 09:05:21
上楼程序和CubeMx中配置了ADC1和ADC2,时钟为12M经过了2分频。不管使用哪路ADC,均存在误差。main函数无他,直接DMA处理AD转换,间隔时间比较长。
举报

温洁

2018-8-20 09:23:19
相关硬件原理图如下:
举报

温洁

2018-8-20 09:37:12
问题如下:
1、使用12位的AD,误差接近50mV;
2、用示波器测试基准为3.28V(虽然没有3.3V但是3.28V还是比较稳,无干扰征兆);
3、示波器检测VDD,VSS均很稳定,无干扰现象;
4、测试单片机的AD输入端,TEMP1,也很平稳,没发现干扰;
5、用VSS直接并到TEMP1,AD转换结果为0x000;
6、用VDD并到TEMP1,测试的结果并不为OxFFF,而是0xFBE附近;
举报

温洁

2018-8-20 09:54:44
自己的一些疑问:
一、STM32F103系列的AD转换,存在一个校准的过程,也就是在程序刚开始必须进行自校准,然后开启AD转换。但是STM32L476用CubeMx生成的库函数,仔细查看后没有留下相关的校准函数,目前还有待思考该过程?
二、外围电路,包括基准和跟随还有阻抗匹配,没有发现不良现象,不知道有没有大神提供一下思路?
三、目前不清楚是硬件原因还是软件原因导致12位AD误差接近50mV.希望大神伸出援助之手!
举报

温洁

2018-8-20 10:03:04
引用: arikey 发表于 2018-8-20 09:54
自己的一些疑问:
一、STM32F103系列的AD转换,存在一个校准的过程,也就是在程序刚开始必须进行自校准,然后开启AD转换。但是STM32L476用CubeMx生成的库函数,仔细查看后没有留下相关的校准函数,目前还有待思考该过程?
二、外围电路,包括基准和跟随还有阻抗匹配,没有发现不良现象,不知道有没有大神提供一下思路?

举报

何秀珍

2018-8-20 10:08:28

本帖最后由 wenyangzeng 于 2018-4-2 16:49 编辑

ADC_SAMPLETIME_6CYCLES_5
采样时间好像太短了,就4个输入ADC,统一使用ADC1设置4个不同通道就够了,
举报

庞兴玉

2018-8-20 10:26:56
((TIME) == ADC_SAMPLETIME_28CYCLES)
((TIME) == ADC_SAMPLETIME_56CYCLES)  
((TIME) == ADC_SAMPLETIME_84CYCLES)  
((TIME) == ADC_SAMPLETIME_112CYCLES)
((TIME) == ADC_SAMPLETIME_144CYCLES)
((TIME) == ADC_SAMPLETIME_480CYCLES)
可以放到最大
举报

jinyi7016

2018-8-20 15:07:14
测量 一下电路上的电压,看看是不是输入就是如此
举报

更多回帖

发帖
×
20
完善资料,
赚取积分