¿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:
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.
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/