0% encontró este documento útil (0 votos)
362 vistas12 páginas

Tutorial Arm32

“STM32duino” Bueno ya con todo esto configurado solo nos queda cargar el programa que queramos, por ejemplo el blink que hicimos en el post anterior y darle a la opcion de subir el programa. Si todo va bien veremos como se programa correctamente y el led parpadeara, si no es asi lo unico que tenemos que hacer es desconectar y volver a conectar el ST-LINK y probar de nuevo. Con el ST-LINK tenemos la ventaja de que podemos hacer debugging y parar la ejecucion del programa en cualquier momento para ver valores de variables, registros,

Cargado por

mars1972
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
362 vistas12 páginas

Tutorial Arm32

“STM32duino” Bueno ya con todo esto configurado solo nos queda cargar el programa que queramos, por ejemplo el blink que hicimos en el post anterior y darle a la opcion de subir el programa. Si todo va bien veremos como se programa correctamente y el led parpadeara, si no es asi lo unico que tenemos que hacer es desconectar y volver a conectar el ST-LINK y probar de nuevo. Con el ST-LINK tenemos la ventaja de que podemos hacer debugging y parar la ejecucion del programa en cualquier momento para ver valores de variables, registros,

Cargado por

mars1972
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

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:

El patillaje del encapsulado del microcontrolador seria:


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.
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
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:

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:
Como lo voy a programar por el puerto serie voy a menu que muestro y elejimos Serial:

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:

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:

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

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/

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.

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.

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/

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:
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.

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:
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.

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.

También podría gustarte