¿El flash del STM32F10x no puede ejecutarse a 24MHZ sin latencia estable?

3

Una placa con STM32F103C8T6 a veces se encuentra con un manejador de fallas.

Cuando caliento la placa a 65C o más, se producirá un fallo grave al azar, lo que me lleva a comprobar si la latencia del flash no es suficiente.

Luego establezco la latencia del flash en 1 reloj, el problema se resuelve, el chip funciona de manera estable incluso cuando lo caliento a 100 ° C.

Pero no tiene sentido porque la CPU funciona a 24MHZ (HCLK es 24MHZ), lo que significa que no se necesita latencia de flash como dice la hoja de datos.

Aquí está mi configuración detallada del reloj: La fuente del reloj es 16MHZ dada por el cristal externo, y la PLL es 3x (necesito usar USB, por lo que se necesita un reloj de 48MHZ en SYSCLK), luego el prescaler AHB está configurado a 2, por lo que el reloj de la CPU es de 24MHZ. / p>

Busqué la hoja de datos y no dice claramente dónde está sincronizado el flash, pero dice "Las instrucciones de la memoria flash y el acceso a los datos se realizan a través del bus AHB", significa que el reloj del flash es igual a AHB (24MHZ en mi aplicación)? Pero no funciona de forma estable, ¿en qué me equivoco?

Gracias

    
pregunta user123179

1 respuesta

8

La descripción del registro de control de acceso de Flash (FLASH_ACR) (Página 59 del manual aquí) indica:

Bits 2:0 LATENCY: Latency
  These bits represent the ratio of the SYSCLK (system clock)
     period to the Flash access time.
  000 Zero wait state, if 0 < SYSCLK≤ 24 MHz
  001 One wait state, if 24 MHz < SYSCLK ≤ 48 MHz
  010 Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz

Parece que el flash está referenciado a SYSCLK que tiene a 48MHz.

    
respondido por el Andrew

Lea otras preguntas en las etiquetas