La empresa ST pone a disposición de los usuarios numerosos modelos de placas de evaluación para probar las capacidades de los distintos micros de la familia STM32. Dentro de la línea de placas Nucleo se encuentra la F303RE que nos permite evaluar las posibilidades del micro F303RET6. En este artículo haremos una descripción de la placa y sus posibilidades y daremos un vistazo a las numerosas opciones que tenemos para programarla.
Las placas Nucleo
Hay una enorme variedad de placas de evaluación y módulos de desarrollo basadas en chips STM32 en el mercado. Algunas son fabricadas por la misma empresa ST y otras, como las conocidas Blue Pill y Black Pill, por otras empresas independientes. Dentro de las placas oficiales existen distintas líneas que se han ido sucediendo con el paso del tiempo pero que coexisten en la actualidad. Entre ellas tenemos las placas Discovery, las Eval Boards que incluyen distintos tipos de periféricos y las Nucleo, que son las mas nuevas a la fecha.
Dentro de la línea de placas Nucleo tenemos tres grupos, cuya denominación está relacionada con la cantidad de pines del micro incluido en la misma. Las Nucleo 32 son las mas pequeñas y compatibles con el Arduino Nano. Las Nucleo 64 y Nucleo 144 tienen conectores compatibles con los del Arduino UNO, así que pueden usar muchos de los Shields diseñados para Arduino y los conectores Morpho de ST, donde se pueden conectar otras placas de expansión “oficiales”.
Todas las placas Nucleo incluyen un ST-Link a bordo, así que no es necesario el uso de uno externo.
La Nucleo F303RE
Esta placa esta basada en el STM32F303RET6, un microcontrolador con las siguientes características:
- Core M4 a 72 MHz con instrucciones de multiplicación y división por hardware, DSP y protección de memoria.
- 80 KB de SRAM y 512 KB de Flash.
- Hasta 51 pines GPIO, varios tolerantes a 5V.
- 4 ADC con 40 canales, con resolución seleccionable de 6 a 12 bits.
- 2 DAC de 12 bits.
- 7 comparadores analógicos
- 4 amplificadores operacionales
- 24 canales para sensado capacitivo
- 14 timers
- Reloj de tiempo real (RTC)
- Variedad de periféricos: CAN, I2C, UART, SPI, USB 2.0 y transmisor IR
Estrictamente hablando se trata de dos placas, que pueden ser separadas. Una de ellas contiene un programador y depurador ST-LINK/V2-1, lo que nos ahorra la necesidad de utilizar uno externo. El diagrama de interconexión de las placas puede verse en la siguiente imagen. También se pueden apreciar los conectores Arduino y Morpho, así como dos pulsadores (B1 USER, pulsador de usos múltiples y B2 de RESET) y un LED, también utilizable desde el programa del usuario.
La placa no contiene muchos componentes adicionales además de un cristal para el oscilador y el regulador de tensión. Si incluye numerosas resistencias de cero ohms en la parte inferior que se pueden retirar para seleccionar distintas configuraciones.
Los conectores CN5, CN6, CN8 y CN9 corresponden al formato de Arduino, mientras que CN7 y CN10 son los conectores Morpho. Los conectores Morpho son dos filas dobles de 38 pines, haciendo un total de 76 pines. Los conectores Arduino son simples y hacen un total de 32 pines.
Programación
Las placas Nucleo pueden ser programadas con una variedad de herramientas y compiladores, algunos gratuitos y otros de pago. Entre ellos, tenemos los siguientes:
- STM32 CubeIDE: El entorno de desarrollo gratuito de ST.
- Mbed: Plataforma de desarrollo para micros ARM (gratis)
- Arm Keil MDK. Completo entorno de desarrollo para C/C++ (Pago, tiene un versión gratuita limitada)
- IAR Embedded Workbench: Entorno de desarrollo y depuración (pago)
- Arduino (con el core STM32duino) (gratis)
Mas información
STM32 Nucleo 64 boards User Manual
Página del proyecto STM32-base con mucha información sobre distintas placas STM32.
Conclusiones
La placa Nucleo F303RE nos brinda unas excelentes prestaciones a un precio bastante accesible. Nos permite realizar pruebas y armar prototipos o aprender a utilizar otro miembro de la extensa familia de micros ARM de ST.
En este artículo hice una breve descripción de la placa, sus partes y características e iré desarrollando con mas profundidad otros aspectos de su funcionamiento en próximas publicaciones.
Gracias por tu trabajo.
Tengo una pregunta: ¿Cómo programo (sintaxis) para I/O en Arduino IDE los pines de esta placa que no tienen una correspondencia exacta con pla placas arduino?