Vref_cal en STM32F3xx ADC

¿Existe una función para leer el Vrefint_cal en las bibliotecas Cubes HAL? Estoy usando el F3xx. Me gustaría medir el voltaje de alimentación del micro. La fórmula dada en el manual de referencia es:

V D D A = 3.3 V × V r mi F i norte t C a yo V r mi F i norte t d a t a

He estado buscando a través de HAL (cubo) y no pude encontrar un método para devolver el Vrefint_cal. La hoja de datos dice que está en 0x1FFF F7BA - 0x1FFF F7BB, pero me parece una tontería que no haya un método para leerlo directamente.

Respuestas (2)

Una forma sencilla es la siguiente:

#define VREFINT_CAL_ADDR    0x1FFFF7BA

uint16_t vrefint_cal;                        // VREFINT calibration value
vrefint_cal= *((uint16_t*)VREFINT_CAL_ADDR); // read VREFINT_CAL_ADDR memory location

O una forma más general es simplemente crear un puntero y asignarlo 0x1FFFF7BA, y luego el resto es igual.

#define VREFINT_CAL_ADDR ((uint16_t*)((uint32_t)0x1FFFF7BA))

Y luego, por ejemplo:

Vdd = 3300*(*VREFINT_CAL_ADDR)/ADC_raw;

Donde Vdd y ADC_raw son uint16_t.

Más información aquí: https://letanphuc.net/2016/07/stm32f0-adc/