Acerca Del UC STM32F103C8T6

Acerca del Microcontrolador STM32F103C8T6 El microcontrolador STM32F103C8T6 es de 32 bits, muy económico y adecuado para

Views 75 Downloads 1 File size 43KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Acerca del Microcontrolador STM32F103C8T6 El microcontrolador STM32F103C8T6 es de 32 bits, muy económico y adecuado para uso académico. Se vende como una tarjeta de desarrollo que incluye un uC (1) STM32F103C8T6 con un interface para programar tipo “SWD”. Se puede programar con un ST-Link v2 (115 pesos al 20 de Enero del 2017) que se conecta a un puerto USB de una PC como es lo usual en estos días. Además se puede programar sin usar un programador, ya que cuenta internamente en memoria ROM con un “bootloader” a través del puerto serie USART1. Por esto resulta económico usarlo. No es la versión mas rápida del STM32 ya que corre máximo a 72 MIPs, pero recordemos con un costo cercano a los 149 pesos en “Mercado Libre Mexico” (20 de Enero del 2017) resulta mucho mas económico que usar cualquier uC PIC o AVR + un Programador y extremadamente mas rápido. Cuenta con una memoria de programa de 64 Kbytes y una memoria RAM de 20 Kbytes, que son excelentes para aprender un primer uC. Además para lograr un conexionado fácil con el protoboard viene en un paquete tipo DIP40. Programar este tipo de uC en lenguaje ensamblador ya no es práctico, o al menos no muy simple. Se recomienda usar lenguaje C o C++. Hay software gratis y pagado para su desarrollo. De los más fáciles de usar es el “mikroC Pro for ARM”, que en su versión libre programa hasta 8 Kbytes de su memoria de programa. Otra opción es el compilador Keil que a mi me resulta mucho mas complicado de usar. Por el lado libre esta el Compilador CooCox que es gratis, pero igual que el Keil me parece muy latoso su uso de librerías. Por lo anteriormente mencionado, en nuestro curso usaremos la versión 4.9.0 de “mikroC Pro for ARM” que funciona correctamente en Windows XP 32 bits y Windows 7, 8.x, 10 en sus versiones de 32 y 64 bits. Este material trata de ser unas notas u observaciones breves que ayuden sobre todo al inicio a utilizar el uC STM32F103C8T6, en ningún momento pretenden ser un sustituto de los manuales de “STMicroelectronics” como son: • •

RM0008 Manual de Referencia (Probablemente el Manual Principal) CD00161566 Hoja de Datos del STM32F103C8T6. Estos manuales los consultaremos conforme sea necesario.

(1)

uC = Abreviatura de microcontrolador que usaremos en el presente documento.

En los uCs STM32 todo es síncrono, es decir hasta los puertos de E/S requieren un reloj, esto se habilita en los registros: • •

RCC_APB1 RCC_APB2 En dichos registros hay bits para habilitar cada periférico y puerto. Ademas por cada puerto hay varios registros de configuración:

• • • • • • • • •

GPIOx_CRL GPIOx_CRH GPIOx_AFRL GPIOx_AFRH GPIOx_IDR GPIOx_ODR GPIOx_BSRR GPIOx_BRR GPIOx_LCKR

Al leerlo se leen las terminales físicas del uC Es el Flip-Flop de salida (y es síncrono)

Note la diferencia con un uC PIC18F o AVR ATmega en los cuales hay básicamente 3 registros de configuración de puertos: En un PIC18F: • • •

TRISx PORTx LATx

Configura cada bit para ser E/S Al leerlo se leen las terminales físicas del uC Es el LATCH de salida

En un uC AVR ATmega: • • •

DDRx PINx PORTX

Configura cada bit para ser E/S Al leerlo se leen las terminales físicas del uC Es el LATCH de salida

Realizamos un programa “prueba.c” a fin de probar como salida todos los puertos que están en la tarjeta de desarrollo, pues como en todo uC las terminales tienen normalmente más de una función y es conveniente saber cuales puertos funcionan por decirlo de alguna manera con la tarjeta de desarrollo recién desempacada. En seguida mostramos los resultados encontrados: PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PA8 PA9 PA10 PA11 PA12 PA13 PA14 PA15

OK OK OK OK OK OK OK OK OK OK OK OK, es USB DOK(1) es USB D+ es “SWDIO” es “SWCLK” led ligeramente encendido(2)

(1)

Antes de programarlo se ilumina ligeramente, pero al programarlo esta bien. Esto se debe a una resistencia de pull-up de 4.7KΩ (R10 en diagrama). Es la señal JTDI del interface JTAG. Es la señal JTDO del interface JTAG. Es la señal NJTRST del interface JTAG

(2) (3) (4)

PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PB8 PB9 PB10 PB11 PB12 PB13 PB14 PB15

OK OK es BOOT1 led apagado(3) led ligeramente encendido(4) OK OK OK OK OK OK OK OK OK PC13 OK OK PC14 OK OK PC15 OK

Por los puntos (1), (2), (3) y (4) hay que recordar que los interfaces SWD y JTAG usan las terminales siguientes: INTERFACE PA13 JTAG JTMS SWD SWDIO

PA14 JTCK SWCLK

PA15 JTDI

PB3 JTDO

PB4 NJTRST

Si se usa el interface SWD se pueden usar las terminales PA15, PB3 y PB4 como E/S de propósito general, pero hay que reconfigurarlas.

Observaciones encontradas: La palabra “busy” es palabra reservada, es el bit 1 del registro I2C_SR2. Si lo intentamos usar nos indicara un intento de re-definir una variable, en este caso “BUSY”. Esto ocurre aun en el compilador “mikroC Pro for ARM v4.9.0” . Además hay otras palabras que no podemos usar como identificadores de uso general, por ejemplo “scan” y “cont” que se usan en el convertidor A/D. El Compilador “mikroC Pro for ARM v4.9.0” por defecto tiene deshabilitada la sensibilidad mayúsculas/minúsculas, aunque puede ser habilitada.