STM32F103C8T6
STM32 es una familia de circuitos integrados de microcontroladores de 32 bits de STMicroelectronics. Los chips STM32 se agrupan en series relacionadas que se basan en el mismo núcleo de procesador ARM de 32 bits , como Cortex-M33F , Cortex-M7F , Cortex-M4F , Cortex-M3 , Cortex-M0 + o Cortex-M0 . Internamente, cada microcontrolador consta del núcleo del procesador, RAM estática , memoria flash , interfaz de depuración y varios periféricos.
Nomenclatura de las placas
STM32xxwwyz
- xx – Familia
- ww – Subtipo. Difieren en el conjunto de periféricos
- y – Clasificación del número de pines
- z – Clasificación por tamaño memoria FLASH
En el caso de la clasificación de Flash, si tenemos por ejemplo la STM32F103C8, no quiere decir que tenga 8 KB de flash, sino que va acorde a la siguiente tabla:
Código | FLASH [KB] |
---|---|
4 | 16 |
6 | 32 |
8 | 64 |
B | 128 |
C | 256 |
D | 384 |
E | 512 |
F | 768 |
G | 1024 |
H | 1536 |
I | 2048 |
Z | 192 |
STM32 F1:
La serie F1 de STM32 fue el primer grupo de microcontroladores STM32 basado en el ARM Cortex-M3. Esta serie F1 ha evolucionado con el tiempo al aumentar la velocidad de la CPU, el tamaño de la memoria interna y la variedad de periféricos. Hay cinco líneas F1: conectividad (STM32F105 / 107), rendimiento (STM32F103), acceso USB (STM32F102), acceso (STM32F101), valor (STM32F100). El resumen de esta serie es:
- Core:
- ARM Cortex-M3 a una velocidad de reloj máxima de 24/36/48/72 MHz .
- Memoria:
- La RAM estática consta de 4/6/8/10/16/20/20/24/32/48/64/80/96 KB.
- Flash consta de 16/32/64/128/256/384/512/768/1024 KB.
- Periféricos:
- Cada serie F1 incluye varios periféricos que varían de línea a línea.
STM32F103C8T6:
En concreto, la STM32F103C8T6 (también conocida como Blue Pill) tiene las siguientes características:
- ARM 32 Cortex*M3 CPU
- Frecuencia 72 MHz.
- 64 KB de memoria flash
- 20 KB SRAM
- Potencia de 2,0*3,6 V, E/S
- Cristal de 4*16 MHz
- Interfaz Mini USB integrada (puede proporcionar alimentación a la placa y comunicación USB)
- Tamaño: 5,3 cm x 2,2 cm
Si seguimos la nomenclatura vista anteriormente, nos sobra el “T6” del final. La T simplemente indica el tipo de paquete, en este caso LQFP, y el 6 indica el rango de temperaturas que admite: -40 ° C a + 85 ° C
Empezando con la STM32F103C8T6:
Lo primero que debes saber es que la placa STM32F103C8 tiene dos modos de arranque:
-
Modo normal: Arranca con el último programa que tuviera. (BOOT0 a la posición 0)
-
Modo programación: Espera que le proporcionemos un programa desde la UART. Cuando lo reciba, lo escribirá en la memoria Flash y lo iniciará. (BOOT0 a la posición 1) Para cambiar entre estos modos de arranque debemos utilizar el jumper:
Ahora vamos a ver como programarla usando el Arduino IDE. (Aunque por supuesto también puede hacerse con otros como Keil ARM MDK o Platform IO).
Para comenzar a usar por ejemplo el IDE de Arduino necesitarás otra pequeña placa de Serial FTDI como la que te mostramos a continuación:
O bien el STLink USB como el siguiente:
En este caso vamos a explicar como configurarlo para el ST-Link V2:
Para ello en primer lugar, debemos instalar los driver del siguiente enlace.
Una vez instalados, nos aseguramos que la placa STM32F103C8T6 está en modo normal, BOOT0 en la posición 0. Después conectamos el STLink de la siguiente forma:
- SWDIO del USB, al DIO del STM32
- SWCLK del USB al CLK del STM32
- 3,3 V del USB al 3,3 V del STM32
- GND del USB al GND del STM32
Ahora, una vez abierto Arduino IDE, debemos ir a Herramientas/Placa/Gestor de tarjetas:
Buscamos ARM y debemos instalar “Arduino SAM Boards(32-bits ARM Cortex-M3)":
Ahora vamos a utilizar el archivo de configuración disponible en el siguiente enlace: http://dan.drown.org/stm32duino/package_STM32duino_index.json
Para ello, vamos a Archivo/preferencias
Y en Gestor de URLs Adicionales de Tarjetas escribimos la URL del enlace anterior.
Después volvemos al Gestor de tarjetas, y buscamos stm32. Debemos instalar aquella que corresponda a la familia de nuestra placa, en este caso STM32F1xx/GD32F1xx boards:
A continuación reiniciamos el programa de Arduino IDE, conectamos el usb al ordenador, y configuramos de la siguiente manera:
Ahora utilizaremos el siguiente código de prueba:
const int ledPIN = PC13;
void setup()
{
pinMode(ledPIN, OUTPUT);
}
void loop()
{
digitalWrite(ledPIN, HIGH);
delay(1000);
digitalWrite(ledPIN, LOW);
delay(1000);
}
Cargamos a la placa, y si todo ha ido bien deberíamos ver el led verde parpadeando cada segundo, así como los siguientes mensajes en el terminal del Arduino IDE: