A ver despues de leerme el documento este veo que existen varias formas:
existen dos registros para sumar o enmascarar pulsos del reloj y así ajustar la frecuencia, el CALP y el CALM del registro RTC_CALR
estos pulsos se suman o restan por ventanas de 32 segundos (aunque pueden ser de 16 u 8 tambien si los configuras pero por defecto 32)
El problema es como medir este error, el documento dice que para verificarlo puedo usar la salida de 1Hz, Alarmas de menos de 1 seg, o el temporizar de wake up.
Vale para calibrar uno mediria la salida de 1 Hz con un osciloscopio y lo haría a mano, pero que pasa si quiero hacer 2000 sistemas iguales? no puedo hacerlos uno a uno.
Si realimento el pin de 1Hz por otro pin y lo capturo con un timer, estoy también metiendo el error del reloj del sistema, no se si esto es buena idea.
luego hay otro registro, que sirve para sumar o restar segundos el "RTC shift" este lo pones tu manualmente por lo que entiendo.
¿cual seria la mejor manera de proceder?
En el ejemplo, necesitas una señal de 1Hz externa para calibrar el sistema, no creo que sacarla de otra para del micro sea correcto por que tendrá incluso mas error, pero para un aparato del que se vayan a fabricar cientos o miles no me parece muy lógico tener que hacer esto uno a uno ademas de tener que esperar 32 segundos a que se calibre cada uno.
y añadir un sistema que de una señal de 1Hz exacta tampoco me parece que sea la solucion ya que encarece el sistema,
The application is based on the following four steps:
1. A 1 Hz reference clock is connected to TIM3 through the PD2 GPIO.
2. TIM3 is configured to generate a rising edge after 32 x 1 Hz reference rising edges.
This gives an event every 32 seconds.
3. TIM2 is configured to increment its counter on CLK_RTC, to get the counter value on
the rising edge generated by TIM3 and to store it in the TIM2_CCR1 register. It then
reset itself.
4. The Cortex®-M4 core gets the TIM2_CCR1 value, compares it with the number of
CLK_RTC cycles expected in 32 seconds and processes the comparison results to
update the CALP and CALM fields of the RTC_CALR register.
The calibration is continuous.
un saludo.