查看完整内容
建议参考一下例程,因为cubeMx只是生成底层库...
Repository\STM32Cube_FW_L4_V1.10.0\Projects\STM32L476G_EVAL\Examples\ADC\ADC_DMA_Transfer
/* ### - 2 - Start calibration ############################################ */
if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED) != HAL_OK)
{
Error_Handler();
}
Repository\STM32Cube_FW_L4_V1.10.0\Projects\STM32L476G_EVAL\Examples\ADC\ADC_DMA_Transfer
/* ### - 2 - Start calibration ############################################ */
if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED) != HAL_OK)
{
Error_Handler();
}
评分
查看全部评分
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附近;
一、STM32F103系列的AD转换,存在一个校准的过程,也就是在程序刚开始必须进行自校准,然后开启AD转换。但是STM32L476用CubeMx生成的库函数,仔细查看后没有留下相关的校准函数,目前还有待思考该过程?
二、外围电路,包括基准和跟随还有阻抗匹配,没有发现不良现象,不知道有没有大神提供一下思路?
三、目前不清楚是硬件原因还是软件原因导致12位AD误差接近50mV.希望大神伸出援助之手!
我也是刚解决这个问题,上来一看,发现还是有校准过程。也就是这个函数。
另外可以直接看系统自带的库函数:
评分
查看全部评分
ADC_SAMPLETIME_6CYCLES_5
采样时间好像太短了,就4个输入ADC,统一使用ADC1设置4个不同通道就够了,
评分
查看全部评分
((TIME) == ADC_SAMPLETIME_56CYCLES)
((TIME) == ADC_SAMPLETIME_84CYCLES)
((TIME) == ADC_SAMPLETIME_112CYCLES)
((TIME) == ADC_SAMPLETIME_144CYCLES)
((TIME) == ADC_SAMPLETIME_480CYCLES)
可以放到最大
评分
查看全部评分