PROGRAMACION PLACA STM32 CON EL ST-LINK

En los anteriores post hemos visto como se programa la palaca del microcontrolador stm32f103c8t6 con un simple convertidor usb-ttl a niveles (3,3v) tal como el barato FT232, podemos ver como  se hace esto apartir del post:

https://misterelectronico.wordpress.com/2016/11/12/placa-de-desarrollo-stm32f103c8t6/

Pero ahora vamos a programarlo con el programador ST-LINK que es una herramienta bastante economica y ademas de para programar nos servira para hacer debugging,  la podemos ver en la imagen:

16s

La seligrafia nos marca el conexionado de los pines que estan el conector del lado derecho, de esta forma conectaremos los terminales con la placa del stm32f103c8t6 de la siguiente forma:

   3,3V   con  los  3,3 V        GND  con el  GND       SWCLK  con el  DCLK           SWDIO  con  DIO

Y el conexionado quedaria como se muestra en la foto.

17s

Tal como se ve en la placa los cables van conectados a la parte baja del ST-LINK y el amarillo corresponde al SWDIO que se conectaria con el DIO de la placa, el azul seria GND conectado con el GND de la placa, el verde seria el SWCLK que se conectaria con el DCLK de la placa y por ultimo el Naranja seria VCC a 3,3V que se conectaria con los 3,3V de la placa.

Bueno ahora lo unico que tenemos que hacer es abrir el programa de Arduino y confirgurarlo para poderlo programar con el ST-LINK, para ello nos vamos a la barra de herramientas y dentro de upload method > elegimos ST-LINk tal como vemos en la foto:

18s

Luego en esta misma barra de herramientas eligiremos el Puerto, que lo que haremos es escoger el puerto que arduino nos da por defecto tal como vemos en la foto.19s

Si se nos presentaran mas puertos eligiriamos uno cualquiera y si no es ese  pasariamos al siguiente hasta que consiguieramos programar el microcontrolador.

Por supuesto en esta barra de herramientas tambien tenemos seleccionado como hicimos en en los post anteriores  para la programacion serial la :

Placa: “Generic STM32F103C series”

Variant: “STM32F103C8 (20k RAM 64 K Flash)”

Bueno y con esto ya tenemos preparado el programa Arduino para programar esta placa.

Ahora si nos fijamos en los  jumper de la placa del STM32F103, en la programacion serie uno de los jumper se ponia en posicion 1, pero para programarlo con el ST-LINK los dos jumper deben estar en posicion “0” tal como viene en la primera foto de este post.

Bueno pues ya esta todo preparado para programar con el programa de Arduino, podemos ver el primer programa de comunicacion serie como el que escribo a continuacion, que podemos copiarlo con un copia y pega.

/*
ESTE EJERCICIO LO QUE HACE ES LEER UN DATO OR EL PUERTO SERIE Y RENVIARLO.
*/

int inByte; // Byte read from Serial1

void setup() {
// Initialize Serial
     Serial.begin(9600); // Inicializa el puerto seria a 9600
    Serial.begin(9600);
}

void loop() {
//  Detecta si el puerto serie recibe un caracter y lo renvia de nuevo por el TX del puerto.
         if (Serial.available()) {
                inByte = Serial.read();
                Serial.print(inByte, BYTE);
     }
}

Buen el programa es muy sencillo y lo que hace es que cualquier byte que recibe por el puerto serie por RX lo renvia de nuevo por el TX,  asi si abrimos un Hiperterminal por Windows,  o un minicom por Linux o cualquier otro programa de comunicacion, con el puerto adecuado en Windows un COMx   y en Linux se suele abrir por /dev/ttyACM0

Decir que la comunicacion la hace atraves del cable Mini – USB que tenemos conectado a la placa del controlador y no atraves del ST-LINK.

En linux a mi se me abre como /dev/ttyACM0 y bueno si abrimos cualquier programa de comunicacion veremos que cualquier caracter que escribamos en el teclado nos es devuelto de nuevo y lo veremos en la pantalla del terminal.

Bueno y esto es todo con respecto ala programacion con ST-LINK.

Un saludo nos vemos.

 

 

 

 

 

 

PROGRAMACION DE BLINK SOBRE PLACA STM32

Antes de ver esta entrada ver las dos entradas anteriores necesarias para la preparacion de de esta placa.

Parte 1

https://misterelectronico.wordpress.com/2016/11/12/placa-de-desarrollo-stm32f103c8t6/

Parte2

https://misterelectronico.wordpress.com/2016/11/12/programacion-stm32-bajo-entorno-arduino/

 

Bueno continuando ya con la ultima parte de la programacion de la placa de desarrollo con el STM32F103C8T6, vamos a proceder a programar lo que se diria como programa “Hello world” o blink, que se trata de programar la placa para encender y apagar el diodo led de la placa asociado a la patita PC13.

Para poder programar esta placa debemos hacer  es conectar la alimentacion  y la conexion serie como vimos en los post anteriores, pero ademas deberemos poner el primer jumper tal como se ve en la imagen en la posicion 1, y ademas una vez conectada a la alimentacion y encendida la placa deberemos apretar el boton de reset de la placa para que entre en modo boot  o modo de programacion tal como vemos en la imagen.

 

img12s

Una vez echo esto podemos ya programarlo tal como hacemos normamente con nuestro programa de Arduino.

El programa es muy simple y seria el siguiente:

// CONFIGURACION PARA QUE SE ENCIENDA EL LED DE PLACA ASOCIADO A LA PATITIA PC13.
void setup() {
// inicializar el pin PC13 como salida.
pinMode(PC13, OUTPUT);
}

// Hacer un lazo infinito
void loop() {
digitalWrite(PC13, HIGH); // Encender el led de placa
delay(1000); // Haz retardo 1 segundo
digitalWrite(PC13, LOW); // Apaga el led de placa.
delay(1000); // Haz un retardo de otro segundo.
}

Lo unico que hacemos es el pin PC13 lo definimos como salida, este led esta asociado al LED que esta en la placa,  y luego hacemos un lazo infinito en el que pagamos y encendemos  el Led dando en cada proceso un retardo de 1 segundo, delay(1000) = a 1000 msg = 1s.

El proceso es igual al que hacemos en cualquier programacion de cualquier arduino, primero lo compilamos y luego lo subimos.

Si la placa es programada correctamente debera aparecernos unos mensajes parecidos a este en la pantalla de mensajes del programa de arduino. (pantalla en negro abajo).  Hacer click sobre imagen para ampliarla.

img15s

Si todo sale como se ve en la pantalla, ya veremos inmediatamente parpadear el led en nuestra placa.

Si queremo modificar algo o volver a meter cualquier otro programa lo unico que tenemos que hacer es volver a apretar el boton de reset y la placa entra otra vez en modo de programacion y metemos el programa que deseemos  o las modificaciones que queramos.

Alguna vez nos da mensaje de error y no sube el programa, se solucina deconectando la clavija de USB y volviendola a conectar de nuevo, y listo.

Lo bueno de estas placas que como vemos se pueden programar muy facilmente de esta forma por programacion serie cosa que no se puede hacer en otras muchas placas.

En una siguiente entrada veremos como programarla con STLINK que tambien es un programador muy economico.

Animo a la gente a utilizar estas placas po lo economicas que son y lo potentes que son estos microcontroladores.

En el siguiente enlace veremos como programar con el ST-Link.

https://misterelectronico.wordpress.com/2016/11/23/programacion-placa-stm32-con-el-st-link/

 

Un saludo.

 

PROGRAMACION STM32 BAJO ENTORNO ARDUINO

Continuando con la placa mostrada en el post anterior.

https://misterelectronico.wordpress.com/2016/11/12/placa-de-desarrollo-stm32f103c8t6/

Lo que vamos  hacer es programar el microcontrolador bajo entorno Arduino, y para ello tenemos que hacer los siguientes procesos.

1) Bajarnos el siguiente paquete:

Arduino_STM32-master.zip

Desde el enlace:

https://github.com/rogerclarkmelbourne/Arduino_STM32

Apretando el boton Clone Download.

Segun el desarrollador de este paquete dice que la instalacion del mismo se debe hacer bajo Arduino 1.6.9

Yo la instale con esta version que me baje de:

https://www.arduino.cc/en/Main/OldSoftwareReleases

Pero pienso que a lo mejor funcione tambien con otras versiones.

Bueno una vez bajado y instalado el Arduino lo que tenemos es que descomprimir el paquete:

Arduino_STM32-master.zip

El directorio que se nos crea debemos copiarlo o moverlo a la carpeta de ARduino:

img2

Tal como vemos en la imagen debemos colocarla dentro de la carpeta arduino-1.6.9 y dentro de este directorio dentro de /harware y dentro de copiamos la carpeta Arduino_STM32-master.

Una vez echo esto abrimos Arduino y ya podremos ver las placas STM32 .

Se nos instalan varias placas pero la que mas nos interesa es la que estamos tratando o la ST32F103C8  y por lo tanto la seleccionamos.

Dentro de las variantes de esta placa tenemos dos opciones, el microcontrolador con 20 K de Ram y 64K Flash  y el de  20 K de Ram y 128 K Flash como el que yo tengo es el de 64 K de Flash yo elijo ese:

img4

Como lo voy a programar por el puerto serie voy a menu que muestro y elejimos Serial:

img5

Y ahora lo que tenemos que hacer es escoger el puerto serie al que se ha conectado nuestro convertidor USB-RS232, en mi caso es el FT232 y si me voy al directorio /dev de linux veo que se me ha conectado al ttyUSB0       (0 — es el numero cero).

Por tanto lo seleccionamos en el menu:

img6

Bueno ya esta echo todo lo necesario para la seleccion de la placa y la forma de programar y el puerto pero ahora si cargaramos un programa y lo compilaramos veriamos que no pasaria nada.

Y esto es por que no estaria instalado el compilador gcc apropiado para estas placas.

Para solucionarlo hay que instalar la placa de Arduino Zero y para ello nos vamos al menu herramientas de nuevo a Placa:Generic STM32  >  Gestor de tarjetas:

img7

Damos Click al gestor de tarjetas y nos salen varias opciones de instalacion pero picaremos sobre la que pone arduino zero :

img8

De esta forma ya tenemos preparado el entorno Arduino para poder compilar los STM32.

Hasta aqui todo lo que es  la configuracion de Arduino para los STM32 el siguiente post sera programar un ejemplo:

En el siguiente enlace vemos un primer ejemplo de programar esta placa bajo entorno arduino:

https://misterelectronico.wordpress.com/2016/11/22/programacion-de-blink-sobre-placa-stm32/

Saludos.

 

 

 

 

 

 

 

 

PLACA DE DESARROLLO STM32F103C8T6

He pedido varias placas chinas simil a las coreboard con el microcontrolador de STM32F103C8T6, son bastante baratas y me gustan  por que se pueden adapatar a cualquier circuito como si casi fueran un microcontrolador, pero de esta forma ya lleva incorporada la comunicacion serie y el regulador de tension asi como el cristal.

El microcontrolador este es bastante potente y su datasheet lo podemos encontrar en :

http://www.st.com/resource/en/datasheet/stm32f103c8.pdf

El PCBoard de esta placa con la descripcion de sus patillas seria:

coreboard

 

El patillaje del encapsulado del microcontrolador seria:

patillaje

 

Partiendo del tutorial  en youtube de  Santiago Torres  me animo a mostrar este tambien tutorial aqui, ya que me parece muy interesante esta placa de desarrollo:

Esta placa se puede programar de dos formas:

Una mediate el ST-LInk que veremos mas adelante.

Y la que vamos a ver que es la programacion serie, que la haremos mediante el FT232 segun se ve en la foto.

img

Para conexion del FT232 se debe conectar la patitas de la siguiente forma:

FT232       STM32

RX  ——   PA9

TX  ——  PA10

FT232  en posicion de 3,3 V .

En este caso la alimentacion de la placa se ha echo con la alimentacion que recibe del puerto mini-usb, pero se podria prescindir de ella y alimentarlo tambien con el FT232 de la siguiente forma.

FT232  —  STM232

VCC  —   3,3  PIN     — cable rojo

GND —    G   PIN  que es el GND.   — cable negro

No olvidarse nunca  de poner el jumper del FT232  en posicion de 3,3 voltios.

Bueno ahora de este forma ya esta preparado para ser programado, pero antes tenemos que configurar Arduino para poder programar este tipo de placas, pero lo veremos en el siguiente post:

https://misterelectronico.wordpress.com/2016/11/12/programacion-stm32-bajo-entorno-arduino/

El tutorial de Santiago Torres

 

Saludos.