系列文章目录
前言
校准Vdd,从而校准其他ADC
一、STM32CubeMX设置
开启ADC1的通道1和通道17,使用连续扫描模式,开启DMA
二、代码
VDD = (1.2/Vrefint_ad)*FULL_SCALE
FULL_SCALE为满量程ADC的值4095
Vrefint_ad为校准读到的AD值
校准后的电压为
Vr = ADValue*VDD/FULL_SCALE;
ADValue为该通道读到的AD值
HAL_ADCEx_Calibration_Start(&hadc1);
HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADValue,2);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
Vunr = (float)ADValue[0] / 4095 * 3.3;
Vdd = 1.2 * 4095 /(float)ADValue[1];
Vr = (float)ADValue[0] / 4095 * Vdd;
printf("ADValue:%d\r\n",ADValue[0]);
printf("Vunr :%.3f\r\n",Vunr);
printf("Vdd :%.3f\r\n",Vdd);
printf("Vr :%.3f\r\n",Vr);
HAL_Delay(100);
}```