Programando la STM32 Blue Pill con Arduino IDE. Parte 3: Uso de adaptador FTDI

Ya vimos en los artículos anteriores de esta serie como configurar el Arduino IDE para programar la Blue Pill y grabarle programas empleando el grabador/depurador ST-Link. En este artículo les voy a mostrar como hacerlo usando una placa adaptadora USB tipo FTDI.

La Blue Pill (así como otras placas basadas en los micros STM32) tienen múltiples maneras de ser programadas. Una de ellas es usando un ST-Link y la interfaz SWD, como vimos en un artículo anterior, pero también podemos hacerlo usando un puerto serial del propio micro y una placa adaptadora de nivel, popularmente conocida como FTDI.

Bootloader

Un bootloader (o cargador) es un programa residente en el mismo microcontrolador que nos permite grabar su propia memoria, ya sea en la etapa de diseño, cuando estamos escribiendo el programa, como en una etapa posterior, cuando el micro ya está incorporado a un producto o un equipo en el campo o en las instalaciones de nuestro cliente y surge la necesidad de realizar una actualización, debido a cambios en las especificaciones, mejoras o para corregir un error.

Los microcontroladores de la familia STM32 tienen grabado de fábrica en su memoria ROM interna un programa bootloader que permite cargar un programa a la memoria Flash a través de alguno de los periféricos serie del micro (USART, CAN, USB, I2C, o SPI). En el caso particular del STM32F103C8T6 que se incluye en Blue Pill, sólo puede usarse el puerto USART1, disponible en los pines A9 y A10.

Cuando el micro vuelve de un RESET, lee el estado de los pines BOOT0 y BOOT1. Si el primero está en un nivel 1 y el segundo en cero, se activa este bootloader y se puede cargar el programa en la flash.

En la Blue Pill, estos pines están conectados a dos jumpers que nos permiten seleccionar el modo de arranque, conectándolos a 0 o 1:

Fig. 1. Jumpers en la Blue Pill

Las distintas opciones de arranque (boot) de la Blue Pill se resumen en la siguiente tabla:

Fig. 2. Modos de arranque

Esto significa que si queremos grabar la Blue Pill empleando este bootloader a través del puerto serie, debemos ubicar primero los jumpers en la posición System Memory y resetear la placa, para que entre en modo programación.

En esta condición, podemos cargarle un programa, ya sea desde el Arduino IDE (que es el que estamos usando) u otro programa, como el STM32CubeProgrammer, si es que estamos haciendo una actualización a un equipo que ya está en funcionamiento.

Una vez que la placa ya fue programada, debemos volver los jumper a la posición User Flash Memory (BOOT0 = 0) y resetear para que la próxima vez que arranque lo haga directamente desde el programa que le hemos cargado.

Conexionado

Las conexiones entre la placa adaptadora de nivel y la Blue Pill son muy simples, debemos conectar los pines de la siguiente forma:

A9 de Blue Pill – Pin RX de placa adaptadora

A10 de Blue Pill – Tx de placa adaptadora

GND de Blue Pill – GND de placa adaptadora

3.3V de Blue Pill – 3.3V de placa adaptadora

Fig. 3. Esquemático

Hay una gran variedad de placas adaptadoras FTDI por lo que debemos prestar especial atención al nivel de la salida y de la tensión de alimentación. Si bien los pines A9 y A10 son tolerantes a 5V, lo mas seguro es usar un adaptador que permita seleccionar el nivel de la salida TX a 3.3V. En cuanto a la alimentación, si el adaptador tiene una salida de 3.3V la conectamos al pin 3.3 de la Blue Pill, pero si sólo dispone de 5V, lo debemos conectar a la entrada marcada 5V (conviene comprobar primero con un multímetro).

Fig. 4. Conexiones

Configuración del IDE

Finalmente, veamos que configuración debemos realizar en el IDE de Arduino.

Además de elegir la placa, debemos asegurarnos de que la opción U(S)ART support esté habilitada (Enabled), Upload Method sea STM32CubeProgrammer (Serial) y que hayamos seleccionado el Puerto adecuado (en esta ocasión si aparecerá un nuevo puerto COM, a diferencia de lo que ocurre con el ST-Link).

Fig. 5. Configuración del IDE

Comprobación

Para comprobar el funcionamiento vamos a hacer funcionar el típico programa de ejemplo “Blink”, haciendo parpadear el led incluido en la Blue Pill, que está en el pin PC13 y ya se encuentra definido como LED_BUILTIN. Para ello abriremos el programa desde el menú ArchivoEjemplos01.BasicsBlink

Fig. 6. El ejemplo Blink

En la Blue Pill debemos asegurarnos que el jumper BOOT0 esté en la posición 1 y BOOT1 en la posición 0. Si no es así, hay que llevarlos a esa posición y apretar el pulsador RESET. Luego de esto, pulsamos el botón Subir en el IDE.

Fig. 7. Grabando el ejemplo

Luego de que el programa funcione, si quieren volver a grabarlo deberán apretar RESET nuevamente, para que vuelva a funcionar el bootloader.

Conclusión

Terminamos esta serie de artículos dedicados a la programación de la Blue Pill con el Arduino IDE viendo como utilizar una placa adaptadora FTDI.

Como siempre, espero que la información les haya sido de utilidad. Cualquier duda o sugerencia pueden dejarla en la sección de comentarios mas abajo.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: