Tengo un PCB personalizado con un microcontrolador STM32F303K8T6 a bordo. Tres valores deben medirse con el ADC, pero los valores del ADC no coinciden con los voltajes medidos en los pines del ADC.
Los voltajes para el ADC2 son ambos 1.64 V y los valores medidos son 364 y 2001. El ADC1 parece tener un desplazamiento (alrededor de 0-600) que cambia sobre el voltaje aplicado, como si dependiera de la temperatura. Tuve un problema en un STM32F4 Discovery, donde el diodo era el problema, pero aquí no uso ningún diodo que pueda causar ese problema.
El voltaje de referencia en el VDDA / VREF + es exactamente 3.3 V (medido). El esquema y la configuración en el CubeMX se adjuntan en las imágenes en la parte inferior. El código para lograr las medidas ADC es el siguiente:
Código:
HAL_ADC_Start(&hadc1);
while(HAL_ADC_PollForConversion(&hadc1, 0) != HAL_OK)
;
measurement1 = HAL_ADC_GetValue(&hadc1);
HAL_ADC_Stop(&hadc1);
HAL_ADC_Start(&hadc2); // Start regular conversion of regular group (channel 4 and 5)
while(HAL_ADC_PollForConversion(&hadc2, 0) != HAL_OK)
;
measurement2 = HAL_ADC_GetValue(&hadc2);
measurement3 = HAL_ADC_GetValue(&hadc2);
HAL_ADC_Stop(&hadc2);
Esquema:
CubeMX: