Primeros pasos con la STM32 Blue Pill

La Blue Pill es una placa muy popular que contiene un potente microcontrolador ARM de 32 bits. Se destaca por su capacidad y muy bajo costo, lo que la hace ideal para muchos proyectos Maker e incluso aplicaciones profesionales. Es una placa que tiene cierta complejidad y dar los primeros pasos puede ser un poco difícil, pero el esfuerzo se verá recompensado. En este artículo veremos sus principales características y nos introduciremos en un su uso y programación.

En un artículo anterior les describía las distintas series que forman la familia STM32 de microcontroladores de ST y les prometía ir analizando distintos modelos específicos. Voy a comenzar a hacerlo con una placa que se ha hecho muy popular en los últimos años, conocida como Blue Pill por su característico color azul.

Fig. 1. Blue Pill

La Blue Pill

La placa conocida como Blue Pill es una placa de evaluación originalmente diseñada y comercializada para evaluar las capacidades del microcontrolador STM32F103C8T6. Como se hizo muy popular entre estudiantes, hobbystas e incluso desarrolladores profesionales por sus interesantes características, comenzaron a circular versiones clonadas de origen chino que en algunos casos no sólo copian el diseño de la PCB sino que hasta incluso tienen una copia del mismo micro, con otras denominaciones, como CH32, GD32, APM32 y CS32 entre otras, que se pueden conseguir en el mercado por un par de dólares. Incluso se pueden encontrar algunas placas con un micro marcado como STM32 y el logo de la fábrica ST pero que no es original.

Fig. 2. Blue Pill con un chip clonado (Fuente: Hackaday)

En general estas placas clónicas o piratas (si usan la marca ST de manera irregular) funcionan correctamente en la mayoría de los casos, existiendo algunos inconvenientes documentados al momento de depurar un programa. Como consejo, conviene comprar la placa a un proveedor serio y de confianza previa consulta sobre el micro que contiene, para evitar toparnos con problemas luego en la etapa del desarrollo.

Características

Muchas veces se compara la Blue Pill con algunos modelos de Arduino, sobre todo el Nano, probablemente porque tienen un aspecto similar. Sin embargo, no son placas comparables ya que la Blue Pill cuenta con un procesador de 32 bits a 72 MHz frente a un ATMega de 8 bits que corre a 16 MHz, lo que marca una importante diferencia de potencia ya en el arranque a favor de la placa de ST.

El STM32F103C8T6 montado en la Blue Pill es un micro de 32 bits, como ya dije, con arquitectura ARM y un núcleo tipo cortex M3 con una frecuencia máxima de trabajo de 72 MHz. Incluye 20 KB de memoria RAM y 64 KB de memoria Flash (aunque por alguna extraña razón se pueden encontrar muchos chips con 128 KB).

El micro incluye una buena cantidad de periféricos, aunque no se pueden utilizar todos en simultáneo por que comparten algunos de los pines:

GPIO37
Timers7 (3 de 16 bits, 1 PWM para control de motores, 2 WDT, 1 del sistema)
ADC 2 (12 bits y 16 canales – limitado a 10 canales en la Blue Pill)
USARTs3
I2C2
SPI2
CAN2.0B
USB2.0
DMA7 canales (con timers, ADC, SPI, I2C y USARTS)
RTCReloj en tiempo real
Tabla I. Periféricos del micro presentes en la Blue Pill

Conexiones

Si analizamos la placa podremos apreciar el micro al centro y una serie de componentes, tanto en la parte superior como en la inferior. En la siguiente imagen se describe la función de los mas importantes (click en los signos de pregunta para ver la descripción)

La distribución de pines completas se puede ver en la siguiente imagen. Como se puede apreciar, la mayoría de los pines tiene mas de una función.

Fig. 3. Pines de la Blue Pill (Hacer click para agrandar)

En la imagen podemos ver que algunos de los pines están marcados como 5V tolerant, lo que significa que soportan una tensión de 5 Voltios cuando funcionan como entradas, mientras que otros están marcados como Not 5V tolerant, lo que implica que no podemos conectarlos a una tensión superior a 3,3 Voltios (en realidad soportan hasta 4V).

Fig. 4. Tensión máxima de entrada de pines GPIO

Alimentación

Hay varias formas de proveer de alimentación a la Blue Pill: podemos hacerlo desde el puerto USB, desde el puerto de programación/depuración o desde algunos de los pines de conexión, pero debemos tener algunas precauciones al momento de realizar las conexiones, para que nada resulte dañado.

Las opciones de alimentación están indicadas en la siguiente imagen.

Fig. 5. Opciones de alimentación de la Blue Pill

En la Blue Pill el micro STM32F103C8T6 funciona con una tensión de 3,3 Voltios. Esta tensión puede provenir de manera directa de los pines marcados 3.3 en la placa o del regulador incluido (ubicado en la parte inferior) que convierte los 5V provenientes del conector USB o del pin marcado 5V al valor apropiado de 3,3 V.

El diagrama de conexiones simplificado del regulador incluido es el siguiente:

Fig. 6. Conexiones del regulador

Como se puede ver, tiene una entrada (a la izquierda) de 5V y una salida (a la derecha) de 3,3V que genera la tensión VCC3V3 que alimenta al micro y otros componentes de la Blue Pill.

Teniendo como referencia este diagrama, analicemos las distintas opciones de alimentación:

Desde el puerto USB

Si alimentamos la Blue Pill a través del puerto USB, conectándola a una computadora o una fuente de 5V con salida micro USB (como un cargador), la tensión de 5V se regula a 3,3V necesarios para hacer funcionar el micro y el resto de los componentes de la placa a través del regulador de tensión (Salida VCC3V3).

Fig. 7. Alimentación desde el puerto USB

En los pines marcados 3.3 tendremos tensión que podemos utilizar para hacer funcionar algún componente externo a la Blue Pill, como un sensor que necesite de este valor de tensión (teniendo cuidado con el consumo de corriente). Lo mismo ocurre con el pin 5V, que tiene tensión proveniente del puerto USB que podemos aprovechar.

Desde el pin 5V

Si alimentamos la placa a través del pin 5V, esta tensión sigue un camino similar al anterior, ingresando al regulador que genera los 3.3 Voltios necesarios.

Debemos tener la precaución de no usar al mismo tiempo este pin y el puerto USB, porque si esto ocurre, alguna de las dos fuentes puede terminar dañada porque no hay ninguna protección entre ambas.

Fig. 8. Alimentación desde el pin 5V

Desde los pines 3.3

Si introducimos 3.3 Voltios a través de los pines marcados como 3.3, estamos proveyendo de alimentación de manera directa al micro y al resto de la placa, sin necesidad de utilizar el regulador.

En este caso debemos tener la precaución de no aplicar tensión a la entrada del regulador a través del puerto USB o del pin 5V, ya que si esto ocurre, el mismo produciría una tensión a su salida que entraría en conflicto con los 3.3V aplicados y se podría dañar (si no aplicamos tensión en la entrada el regulador se desactiva automáticamente).

Fig. 9. Alimentación desde los pines 3.3

Desde el programador/depurador

Si bien no es la alternativa mas usada, también podemos alimentar la Blue Pill desde el programador. Este caso es similar al anterior, estamos alimentando directamente al micro y el resto de los componentes y debemos tener cuidado de no ingresar tensión al regulador ni tampoco aplicar un voltaje a los pines 3.3.

Fig. 10. Alimentación desde el programador

En resumen, como regla general, debemos utilizar siempre una única fuente de tensión y nunca combinarlas, porque podemos dañar algún componente si lo hacemos.

Hay que tener especial precaución en los momentos en que queremos programar la placa o depurar un programa, usando el puerto USB o el puerto de programación y asegurarnos de que no esté activa ninguna otra fuente de alimentación en ese momento.

Alimentación

Para evitar inconvenientes debemos tener una única fuente de alimentación, en todo momento.

Programación

Existen varias opciones para programar la Blue Pill. Por ahora sólo haré un breve resumen de cada una de ellas y los iré desarrollando con detalle en los siguientes artículos:

Usando el IDE de Arduino: Comienzo con esta opción porque probablemente sea la mas sencilla, ya que el IDE de Arduino es muy conocido y por lo tanto es un entorno familiar para muchos. Si bien el soporte para el STM32 no es nativo del IDE, se lo puede agregar así como se hace para otras placas como las basadas en el ESP32 o ESP8266, es decir, usando el Gestor de placas. Existe un conjunto de librerías y herramientas de código que podemos agregar al IDE llamada stm32duino que salvo algunas diferencias en el código, nos permiten programar la Blue Pill como cualquier otra placa Arduino. La desventaja de este método es que este IDE no soporta (al menos en la versión 1) las funciones de depuración que incluyen los micros STM32, que pueden ser sumamente útiles para encontrar errores en un programa. (Aparentemente el IDE 2 podría soportar esta función). Podemos decir que esta es una forma sencilla de comenzar, pero que desaprovecha el potencial de la placa.

Fig. 11. Programando la Blue Pill con el Arduino IDE

Usando el entorno de desarrollo STM32 Cube IDE: Este es un entorno de desarrollo gratuito provisto por la misma empresa ST que fabrica los micros. Soporta todos los micros de la marca, no solo la Blue Pill y tiene gran cantidad de funciones, como un potente generador de código que nos permite inicializar los periféricos usados en nuestro micro de una manera gráfica, generando de manera automática el código correspondiente, lo que agiliza mucho la escritura del software. También nos permite utilizar FreeRTOS, un sistema operativo en tiempo real que optimiza el uso del micro sobre todo en aplicaciones donde la demora en la respuesta es crítica. Este IDE es una herramienta profesional y por lo tanto requiere de cierto tiempo para aprender a utilizarlo (aunque vale la pena).

Fig. 12. El STM32 Cube IDE

Empleando otros IDEs: Los mencionados no son los únicos entornos de desarrollo ni agotan las posibilidades de programar la Blue Pill. Podemos usar Eclipse, PlatformIO, Visual Studio Code u otros IDEs comerciales.

Conclusión

La Blue Pill es una excelente placa que tiene unas prestaciones muy interesantes a un precio bastante razonable. En este artículo hicimos una introducción a sus caracerísticas y capacidades, viendo las partes que la componen y sus funciones. Resumimos los periféricos con que cuenta y las funciones de sus pines, así como la forma en que debemos alimentarla y las posibilidades que tenemos para programarla.

En los próximos artículos profundizaremos en este último tema, como programar la Blue Pill.

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: