miércoles, 25 de enero de 2017

Programar el STM32F103C8T6 con el IDE de Arduino

Página principal
STM32F103C8T6
y
Arduino

El otro día navegando por la red encontré un tutorial de como programar un ARM mediante  el entorno de arduino.
http://grauonline.de/wordpress/?page_id=1004
El procesador ARM está presente en muchos dispositivos, casi todos lo móviles android, los router , y otros muchos dispositivos.
El precio del módulo con el STM32F103C8T6 cuesta alrededor de 3€ lo cual es un precio muy competitivo.
El STM32F103C8T6  es un procesador con la siguientes características: ARM32 Cortex-M3, 72 Mhz, 64K flash, 20K SRAM, 33 I/O pins, 3.3V . El modulo además lleva un conector usb, un cristal extra de 32762Hz, y un par de puentes para programar el chip.




Los pasos seguidos para hacer funcionar el módulo STM en arduino son los siguientes:
-Tener instalado el entorno de arduino, en mi caso arduino-1.6.9 .
-Bajar de la página https://github.com/rogerclarkmelbourne/Arduino_STM32 el fichero:
      https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip
-Descomprimirlo dentro del directorio del  arduino/hardware/   creando un directorio llamado Arduino_STM32-master .
-Abrimos el arduino y cambiamos en el menú de herramientas lo siguiente:

Tecleamos el siguiente programa:
#define pinLED1 PA0

void setup()
{
   pinMode(pinLED1, OUTPUT);
}

void loop()
{
  digitalWrite(pinLED1, LOW);
  delay(500);
  digitalWrite(pinLED1, HIGH);
  delay(500);
}

Compilamos y si todo ha ido bien nos devolverá el siguiente mensaje:
El Sketch usa 7.116 bytes (10%) del espacio de almacenamiento de programa. El máximo es 65.536 bytes.
Variables globales usan 1.984 bytes de memoria dinamica.

El módulo dispone al igual que en el arduino, de un led conectado al pin C13 para probar sin tener que colocar ningún componente mas.
Para utilizar este led cambiar la línea:
#define pinLED1 PA0 
por
#define pinLED PC13

Ahora viene el paso de programar el módulo.
Para este paso necesitamos un conversor de USB a SERIE. Este conversor suele andar por los 3€ o menos, yo lo tenía de otros proyectos. Además el módulo proporciona los 3.3V para alimentar el chip.
Hemos de recordar que el Chip STM32F103C8T6 funciona a 3.3V , el módulo dispone de un reductor de tensión de 5V a 3.3V  , con lo cual podemos alimentarlo a 5V en el pin adecuado.
Según el fabricante la mayoría de los pin toleran de entrada  5V.
 (Up to 80 fast I/O ports –   26/37/51/80 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant

Conectamos el conversor USB a SERIE  según las imagenes siguiente:




Una vez hechas las conexiones nos toca programar el chip de la siguiente manera:

-Poner el puente BOOT0 a 1.
-Pulsar el botón de RESET .
-En el IDE de arduino pulsar el botón de Subir.

En pocos segundos se pondrá a parpadear el led.
Si queremos dejar el chip programado y no programarlo mas, movemos el puente BOOT0 a 0.

Próximamente haré otras prácticas para probar este módulo que promete mucho.


Saludos.
JUAN GALAZ

Bibliografía:

http://www.st.com/en/microcontrollers/stm32f103c8.html
http://grauonline.de/wordpress/?page_id=1004
https://github.com/rogerclarkmelbourne/Arduino_STM32
http://www.stm32duino.com/