Objetivo
Hay ocasiones en que la placa deja de funcionar y pensamos que se ha estropeado. Es cierto que, si se trata mal, la placa queda inutilizada; pero también puede pasar que nuestra aplicación la bloquea y da esa misma sensación.
Esta entrada pretende ilustrar el procedimiento para recuperar la placa en estos casos.
IMPORTANTE: Hay cables USB muy cutres que no sirven para trabajar con la placa.
Conectando a la placa con el STM32CubeProgr y borrándola
La aplicación STM323CubeProg permite, entre otros, acceder a la memoria flash del micro y borrarla, descargar firmwares, etc. Es ahiora la aplicación oficial de St para estas tareas y el resto ya no están recomendadas popr lo que se recomienda dejar de usar el resto de opciones (p.e. StLink).
La aplicación ofrece muchas opciones de acceso a la placa, pero aquí vamos a asumir que se hace desde el ST-Link-v2 integrado en la propia placa.
Necesitamos un cable USB y conectar la placa al ordenador. Si la placa está bien, se activará una unidad de disco USB. No viene al caso, pero es síntoma de que la placa está funcionando.
Abrimos STM32CubeProg e intentamos acceder a la placa siguiendo los pasos de la siguienter imagen.
¿Ha ido bien?
Si es así, podemos proceder a borrarla toda siguiendo los pasos indicados en la siguiente imagen.
Y placa lista para trabajar.
IMPORTANTE: Una vez que hayamos terminado de usar StCubeProg, darle a «Disconnect» para que la placa pueda usarla otra aplicación, por ejemplo, Keil.
¡No he conseguido acceder a la placa!
Vaya. Pues vamos a probar otras opciones ordenadas de más inmediata a más complicada. Recomendaría empezar por la primera y, si no va, seguir avanzando.
Intentar con el modo «under reset»
Es posible que la placa esté bloqueada porque la aplicación grabada haya modificado las líneas de depuración. Un truco para hacerse de nuevo con el control es que el depurador aplique un reset al microcontrolador y tome el control antes de que la aplicación se inicie.
Esta opción no funcionará, aunque sea activable desde StCubeProg, en sistemas de depuración que no soporten «hardware reset».
Si consigues tomar el control, procede a borrar la flash y listos.
Con «reset» a mano
Esta es una opción poco ortodoxa basada en el pricipio anterior, pero usando un método «digital».
Procede de la siguente manera:
- Abre STM32CubeProg y elige la opción «ST-LINK»
- Conecta la placa al ordenador
- Pulsa el reset de la placa y mantenlo pulsado
- En STM32CubeProg dale a «Connect» y cuenta «uno»
- Suelta inmediatamente el pulsador
Si has conseguido tomar el control, procede a borrar la memoria y listos.
Con modo «bootloader»
Y el último recurso es intentar poner la placa en modo «bootloader». Para ello seguir estos pasos:
- Quita la alimentación a la placa.
- Coloca un jumper o un cablecillo entre los pines 3 y 5 de CN7.
- Alimenta la placa.
- Pulsa el botón de reset.
- Quita el jumper/cablecillo con la placa alimentada.
- Conecta STM32CubeProg a la placa usando el procedimiento normal
- Borra la memoria.
Lo que hemos hecho es poner a «1» el pin BOOT para que la plaque arranque con una aplicación interna grabada por St que se llama «bootloader» y con la que se pueden hacer cosas muy interesantes que no vienen al caso.
Nosotros simplemente nos hemos aprovechado de que la placa ha arrancado con un programa razonable.
Grabando un programa
Para rematar, se puede probar a grabar un programa en la placa para comprobar funcionalidades.
La propuesta es que grabemos en la flash del micro el «ejecutable» resultante de construir una aplicación.
Como ejemplo, se ha construido el ejercicio del módulo delay para que genere un «ejecutable» en formato Intel-HEX que cualquier grabador de memorias flash del mundo mundial suele soportar.
Aquí está el ejemplo de archivo Intel_HEX para grabar en la placa. Descárgalo.
Asumiendo que estamos conectados a la placa con el STM32CubeProg, podemos grabar este «firmware» en la placa y pulsar despues el botón de reset para ver si funciona.
Observa la siguiente imagen para ver los pasos a seguir.
Debería parpaderar el led a un ritmo de 567.890 uS, más o menos. Abajo está el bucle principal de la aplicación usada.