Simule el restablecimiento de caída de tensión STM32F4 usando STM32F100

La MCU STM32F4 tiene una función de restablecimiento de caída de tensión. Según el manual , apartado 5.2.2, cuando la tensión de alimentación VDD cae por debajo del umbral VBOR seleccionado, se genera un reset del dispositivo. Después del reinicio, puedo verificar el indicador BORRSTF en el registro RCC_CSR (consulte la sección 6.3.21 del manual) para ver si el reinicio se debió a un apagón.

Me gustaría simular este comportamiento en el STM32F100, que carece de una función de restablecimiento de caída de tensión. Mi idea es usar el detector de voltaje programable (sección 4.2.2 en el manual ) para generar una interrupción en la línea EXTI 16. Cuando se llame al controlador de interrupciones, generaré un reinicio de software; Puedo verificar, después del reinicio, que el motivo fue un reinicio de software a través de la bandera SFTRSTF en el registro RCC_CSR (consulte la sección 6.3.10 del manual). Dado que no genero un reinicio de software en ningún otro lugar de mi código, puedo estar seguro de que se debió a un apagón.

Esto es lo que estoy buscando saber:

  • ¿Alguien puede ver un defecto en esta idea?
  • ¿Un apagón real borraría la bandera SFTRSTF en cuestión?

Respuestas (1)

No veo ningún defecto importante en este diseño, pero considero algunas limitaciones:

  • como se trata de un restablecimiento de caída de tensión basado en software (no configurado en los bytes de opción), no funcionará hasta que su código lo configure (por lo que no se detectará la caída de voltaje justo después del encendido),
  • como utiliza la interrupción, no funcionará si ya se está ejecutando una interrupción con una prioridad de interrupción mayor o igual.

Por lo que sé, los indicadores de reinicio deben borrarse manualmente (al menos en F4), así que:

  • brownout no borrará el indicador de reinicio de software,
  • debe borrar este indicador al inicio; de lo contrario, después de otro reinicio, puede tener múltiples indicadores.