18
9/9/ 12 STM32F4 Discovery - TTDE-WIKI ttde.uniandes.edu.co/ttdewikim1/index.php/ BOARD:STM32F4Discovery 1/1 4 STM32F4 Discovery (Redirected from BOARD:STM32F4Discovery) by Josnelihurt Contents 1 Introducción 2 Partes de la tarjeta 3 Entornos de desarrollo 3.1 Configurando el entorno de desarrollo con Eclipse (Indigo) sobre Ubuntu 12.04 LTS 3.1.1 Antes de instalar considere 3.1.2 Instalación del toolchain CodeSourcery GNU para Cortex-M4 3.1.3 Instalación de Java Runtime Environment 3.1.4 Instalación de OpenOCD y herramientas de depuración STLINK 3.1.5 Eclipse Indigo Como IDE e integración de herramientas 3.1.6 Instalación y configuración de plugins 3.2 Configuración de la herramienta sobre Keil uVisión 4 en Windows 3.2.1 Creación de un proyecto sobre Keil 3.2.1.1 Creando un nuevo fuente y agregandolo al proyecto 3.2.1.2 Configuración de STLINK sobre Keil uVision 3.2.1.3 Agregar las librerías y funciones de inicialización 4 Ejemplo - Blinking led 5 Recursos I n t r o d u cc i ó n Dentro de los dispositivos de bajo costo resaltan las arquitecturas de procesadores basados en tecnologías ARM Cortex-M. Estos procesadores lideran el mercado de aplicaciones de bajo consumo energético. Estos procesadores fueron diseñados para su implementación en MCUs y procesadores de señal mixta; las aplicaciones que generalmente los utilizan son aplicaciones biomédicas, en interfaces humano-maquina, industria automotriz y en sistemas de control. La tarjeta STM32F4Discovery permite evaluar el desarrollo de aplicaciones con el procesador Cortex M4 con implementación de STMicroelectronics. Esta tarjeta incluye las herramientas necesarias para programar el microcontrolador contenido en ella (STM32F407VGT6) a través de la conocida interface de programación ST- LINK/V2 embedded debug tool. Adicionalmente esta tarjeta tiene dos dispositivos ST MEMS el primero un acelerómetro digital y el segundo un micrófono. A continuación se muestra una fotografía de la tarjeta de desarrollo.

Stm32f4 Discovery - Ttde-wiki

Embed Size (px)

Citation preview

Page 1: Stm32f4 Discovery - Ttde-wiki

9/9/12 STM32F4 Discovery - TTDE-WIKI

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery 1/14

STM32F4 Discovery(Redirected from BOARD:STM32F4Discovery)

by Josnelihurt

Contents

1 Introducción

2 Partes de la tarjeta

3 Entornos de desarrollo

3.1 Configurando el entorno de desarrollo con Eclipse (Indigo) sobre Ubuntu 12.04 LTS

3.1.1 Antes de instalar considere

3.1.2 Instalación del toolchain CodeSourcery GNU para Cortex-M4

3.1.3 Instalación de Java Runtime Environment

3.1.4 Instalación de OpenOCD y herramientas de depuración STLINK

3.1.5 Eclipse Indigo Como IDE e integración de herramientas

3.1.6 Instalación y configuración de plugins

3.2 Configuración de la herramienta sobre Keil uVisión 4 en Windows

3.2.1 Creación de un proyecto sobre Keil

3.2.1.1 Creando un nuevo fuente y agregandolo al proyecto

3.2.1.2 Configuración de STLINK sobre Keil uVision

3.2.1.3 Agregar las librerías y funciones de inicialización

4 Ejemplo - Blinking led

5 Recursos

I ntr o d ucc i ó n

Dentro de los dispositivos de bajo costo resaltan las arquitecturas de procesadores basados en tecnologías ARM Cortex-M. Estos procesadores lideran el mercado de aplicaciones de bajo consumo energético. Estos procesadores fueron diseñados para su implementación en MCUs y procesadores de señal mixta; las aplicaciones que generalmente los utilizan son aplicaciones biomédicas, en interfaces humano-maquina, industria automotriz y en sistemas de control.

La tarjeta STM32F4Discovery permite evaluar el desarrollo de aplicaciones con el procesador Cortex M4 con implementación de STMicroelectronics. Esta tarjeta incluye las herramientas necesarias para programar el microcontrolador contenido en ella (STM32F407VGT6) a través de la conocida interface de programación ST- LINK/V2 embedded debug tool. Adicionalmente esta tarjeta tiene dos dispositivos ST MEMS el primero un acelerómetro digital y el segundo un micrófono. A continuación se muestra una fotografía de la tarjeta de desarrollo.

Page 2: Stm32f4 Discovery - Ttde-wiki

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery 2/14

9/9/12 STM32F4 Discovery - TTDE-WIKI

Pa r t e s d e l a t a r j e t a Microcontrolador STM32F407VGT6 32-bit ARM Cortex-M4F core, 1 MB Flash, 192 KB RAM LQFP100 package

On-board ST-LINK/V2

LIS302DL, ST MEMS digital accelerometer

MP45DT02, ST MEMS omni-directional digital microphone

CS43L22, audio DAC with integrated class D speaker driver

Eight LEDs:

LD1 (red/green) USB

LD2 (red) power on

Cuatro LEDs de usuario, LD3 (orange), LD4 (green), LD5 (red) and LD6 (blue)

Dos LEDs LD7 (green) VBus y LD8 (red) over-current del VUSB

Dos push buttons (user and reset)

En t o r n o s d e d e s a rr o ll o Existen diversos entornos de desarrollo para las arquitecturas basadas en ARM. Algunas privativas como Keil uVision y IAR Workbench, y por otro lado existen las alternativas libres como la integración de arm-gcc a Eclipse.

C o n f i g u r a n d o e l e n t or n o d e d e s a rro ll o c on E cli p s e ( I n d i g o) s o b re U b un t u 12 . 0 4 LT S

Para lograr desarrollar aplicaciones con esta plataforma sobre Ubuntu se debe comprender algunos conceptos generales de las plataformas embebidas y reconocer

como están impementadas en la tarjeta STM32F4 Discovery. La siguiente gráfica muestra el esquema general de desarrollo para una plataforma embebida, donde

se parten de una colección de archivos fuentes para llegar a un archivo binario que se ejecuta en la plataforma embebida. La serie de programas que permiten

realizar este procedimiento se conoce como el toolchain o la cadena de compilación de un sistema.

En este manual se instalarán las siguientes herramientas de desarrollo

CodeSourcery GNU toolchain Compilador libre para ARM

Java Runtime Environment.

OpenOCD

Eclipse Indigo

Antes de instalar considere

En Linux las personas están libres de ubicar los programas en cualquier parte del sistema de archivos, pero en general las herramientas de desarrollo y programas

opcionales no descargados ni integrados completamente con la distribución se ubican en la carpeta /opt/. Desde el punto de vista del autor es mucho mas cómodo

otorgar la pertenencia de esta carpeta al usuario principal del sistema para este ejemplo tomado como user

Abra una consola y sitúese en la dirección /opt

Ejecute los siguientes comandos:

sudo chown user:user .

Cambiar de el terminal por defecto del sistema de dash a bashsudo dpkgreconfigure plow dash

Cuando el sistema le pregunte que si desea usar dash como shell por defecto indique NO

Instalar Paquetes necesarios para compilar los paquetes dentro de este manual

A continuación se muestran los paquetes necesarios en la compilación de los programas usados en el presente manual. Usted puede hacer uso del comando sudo apt-get install para instalarlos

gitcore buildessential patch automake libusbdev libtool texinfo texlive

En caso de encontrar algún paquete faltante contacte al administrador para sugerir la inclusión de dicho paquete en la lista.

Instalación del toolchain CodeSourcery GNU para Cortex-M4

Para instalar la versión del compilador necesario en la cadena de compilación usted debe descargar arm-2011.03-42-arm-none-eabi.bin de [1] (https://sourcery.mentor.com/GNUToolchain/subscription3053?lite=arm) (Es posible que necesite registrarse)

Una vez tenga el archivo arm-2011.03-42-arm-none-eabi.bin abra un terminal y ejecute los siguientes comandos:

cd ruta_de_descargachmod +x arm2011.0342armnoneeabi.binsh arm2011.0342armnoneeabi.bin

Un asistente en le guiará en la instalación de este toolchain Recuerde donde lo ubica para el desarrollo de este manual se tomará por defecto la ruta /opt.

Page 3: Stm32f4 Discovery - Ttde-wiki

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery 3/14

9/9/12 STM32F4 Discovery - TTDE-WIKI

Edite el archivo .bashrc

Este archivo se encuentra en la siguiente ruta /home/user/.bashrc tenga claro que los archivos que inician por punto(.) son interpretados en linux como archivos ocultos así que si está buscando este archivo desde el visor de archivos nautilus pueda hacer uso de la siguiente combinación de teclas para activar /desactivar la visualización de estos tipos de archivos CTRL + H

En este se debe agregar la linea:

export PATH=$PATH:/opt/CodeSourcery/Sourcery_G++_Lite/bin

Esto le dirá al sistema que existe una ruta más de búsqueda de binarios para la ejecución desde consola.

Instalación de Java Runtime Environment

Para la ejecución de eclipse sobre Ubuntu es necesario instalar una versión de Java Runtime, es posible que ya lo tenga instalado pero en este manual se deja una de las múltiples opciones de Java Runtime instalables.

sudo aptget install openjdk6jdk

Instalación de OpenOCD y herramientas de depuración STLINKDescargar las funtes de OpenOCD

Descarge las fuentes del proyecto OpenOCD desde la pagina [2] (h tt p :// s o u rc e f o r g e .n e t / p r o j e c t s / o p e n o c d /) . Diferentes versiones de Ubuntu tienen en sus repositorios dicho programa aunque se probó con la versión compilada desde las fuentes del proyecto OpenOCD.

Ejecute las siguientes instrucciones para compilar e instalar programa.

cd /optcp /ruta_de_descarga/openocd_file.tar.gz .tar zxvf openocd_file.tar.gz

Nota: Recuerde que el nombre del archivo descargado puede variar en nombre dependiendo de la versión en la cual se encuentre el desarrollo actual.

Compilar el programa

Para compilar el programa ejecute los siguientes comando dentro de un terminal

cd /opt/OpenOCD/openocd_versionstrip ./src/openocdmakemake pdf

Instalación del programa y modificación de la ruta del sistema

Ejecute el siguiente comando en la terminal donde compiló el programa

sudo make install

Ejecuté el comando openocd -v y el sistema le debe entregar el nombre de la versión de openocd que compiló e instaló.

Descargar las funtes de STLink para la depuración de la aplicación On-Board

Las fuentes del programa se pueden descargar mediante la aplicación git recuerde estar en una terminal al intentar ejecutar esta instrucción y dentro de la carpeta/opt

git clone https://github.com/texane/stlink stlink

Compilar el programa

Para compilar el programa ejecute los siguientes comando dentro de un terminal

cd /optcd stlink./autogen.sh./configure

Page 4: Stm32f4 Discovery - Ttde-wiki

ttde.uniandes.edu.co/ttdewikim1/index.php/BOARD:STM32F4Discovery 4/14

9/9/12 STM32F4 Discovery - TTDE-WIKI

make

Instalación del programa y modificación de la ruta del sistemasudo make install

3. Once install finished, Open terminal, plug stm32F4Discovery and test stlink

st-util It should return libusb couldn’t open USB device /dev/bus/usb/002/004: Permission denied. libusb requires write access to USB device nodes. 2012-05-19T00:20:00 WARN src/stlink-usb.c: Couldn’t find any ST-Link/V2 devicest It is because we don’t have access to usb port. Type this to get access, which is not permanent, once you unplug and plug board again, need to change permission again, But you can search online to disable this permission checking for Ubuntu.

sudo chmod 777 /dev/bus/usb/002/004

Eclipse Indigo Como IDE e integración de herramientas

Un entorno de desarrollo es aquel que permite integrar las herramientas de desarrollo dentro de un solo programa al cual se le conoce como IDE de programación. Una de las partes de un IDE son los editores de texto, existen muchos editores de texto que permiten resaltar la sintaxis de casi todos los lenguajes deprogramación existentes. Dentro de estos editores se encuentra notepad ++ (Win32) Gedit y Geany (Linux Gnome) entre muchos mas. Eclipse presenta una interfaz amigable y diferentes plugins que incrementan sus capacidades. Para el presente manual se toma como base de desarrollo el IDE Eclipse (Indigo) - Eclipse IDE for

C/C++ Developers.

Descargando el Eclipse

Para descargar la versión probada con el sistema descargue el archivo eclipse-cpp-indigo-SR2-incubation-linux-gtk.tar.gz de la pagina oficial de eclipse o de la siguiente dirección espelhos.edugraf.ufsc.br_mirror (h tt p :// e s p e lh o s . e d u g r a f .u f sc . b r / e c li p s e // technology/epp/downloads/release/indigo/SR2/eclipse-cpp-indigo-SR2- incubation-linux-gtk.tar.gz)

Instalación y configuración de pluginscd /optcp /ruta_de_descarga/eclipsecppindigoSR2incubationlinuxgtk.tar.gz .tar zxvf eclipsecppindigoSR2incubationlinuxgtk.tar.gz

Edite el archivo .bashrc

Este archivo se encuentra en la siguiente ruta /home/user/.bashrc tenga claro que los archivos que inician por punto(.) son interpretados en linux como archivos ocultos así que si está buscando este archivo desde el visor de archivos nautilus pueda hacer uso de la siguiente combinación de teclas para activar /desactivar la visualización de estos tipos de archivos CTRL + H

En este se debe agregar la linea:

export PATH=$PATH:/opt/eclipse

Esto le dirá al sistema que existe una ruta más de búsqueda de binarios para la ejecución desde consola. Por último ejecute en una nueva consola el comando elcipse (si tiene una consola abierta puede teclear bash para reabrir dicha consola)

Si todo se ejecuto conforme al manual se debe presentar el splash de eclipse Indigo

C o n f i g u r a ci ón d e l a h e rr a m i e n t a s o b re K e i l u V isi ón 4 e n W i n d o w s

La tarjeta STM32F4 trae dentro de su configuración un circuito de depuración conocido como STLINK, el cual se basa en un microcontrolador de la misma empresa (ST). La interfaz STLINK es ampliamente soportado por diversos entornos de desarrollo. Para utilizar la tarjeta de desarrollo sobre Windows es necesario instalar los drivers, para esto utilice el programa mostrado en la siguiente imagen. Nota: Debe instalar el entorno de desarrollo Keil uVision 4 [3] (h tt p ://www. ke il. c o m / a rm / m d k . a s p )

Page 5: Stm32f4 Discovery - Ttde-wiki

Una vez tenga los drivers instalados puede conectar la tarjeta al PC y deberá observar el que el sistema reconoce la tarjeta de la siguiente manera:

Nota Para iniciar el administrador de dispositivos puede usar la combinación de teclas CTRL + PAUSA

Creación de un proyecto sobre Keil

Para iniciar el desarrollo sobre la tarjeta STM32F4 se debe crear y configurar un proyecto sobre un entorno de desarrollo, para el caso Keil uVision. El primer paso es iniciar el entorno de desarrollo y crear el proyecto. Las siguientes imágenes lo guiarán a través de la creación y configuración del entorno.

Page 6: Stm32f4 Discovery - Ttde-wiki

En el cuadro de dialogo indique el nombre y ubicación del proyecto nuevo.

En el cuadro de dialogo de selección del dispositivo seleccione el dispositivo STM32F407VG

Page 7: Stm32f4 Discovery - Ttde-wiki

En la pregunta que si desea agrear el archivo .s a su proyecto responda que SI, este archivo contienen la inicialización del microncontrolador desde el nivel de arranque así como también los vectores de interrupción. Dado que por defecto Keil no configura correctamente la integración de esta con la librería de manejo del microcontrolador sugerida en esta guía se debe reemplazar el vector de inicio por el siguiente. Esto se encuentra en el archivo .s

; Reset handlerReset_Handler PROCEXPORT Reset_Handler [WEAK]IMPORT SystemInitIMPORT main

;FPU settings

LDR R0, =0xE000ED88 ; Enable CP10,CP11LDR R1,[R0]ORR R1,R1,#(0xF << 20) STR R1,[R0]

LDR R0, =SystemInitBLX R0LDR R0, = mainBX R0

MOV R0,#0x0004MOVT R0,#0x0800BX R0

ENDP

Page 8: Stm32f4 Discovery - Ttde-wiki

Ahora usted tendrá un proyecto vació sobre el cual debe agregar códigos fuentes para compilar su aplicación.

Creando un nuevo fuente y agregandolo al proyecto

Por defecto el proyecto no tiene archivos ni estructura. Se debe crear una estructura del proyecto para iniciar el desarrollo. Generalmente las aplicaciones para

sistemas microprocesados se deben dividir en diferentes niveles o capas de software. Estas etapas son:

Capa de inicialización (Archivos de inicialización) generalmente ensamblador

Capa de bajo nivel, en esta capa generalmente se crean las funciones que interactúan directamente con el Hardware

Capa de drivers, esta capa puede variar dada la complejidad y cantidad de drivers que se tengan dentro del sistema.

Capa de aplicación, en esta aplicación generalmente se ubican los códigos de mas alto nivel (el main.c)

Se debe recordar que en los archivos .h solo deben de incluirse los prototipos de las funciones y variables que se deseen acceder desde otros archivos c. En los archivos .c solo existirá la definición de funciones y variables no es recomendable crear constantes o elementos del preprocesador.

Para diseñar esta estructura dentro del entorno Keil siga los siguientes pasos.

Para renombrar un grupo ya existente haga un solo click sobre el grupo a renombar y edite el nombre. Termine con enter para confirmar el cambio

Page 9: Stm32f4 Discovery - Ttde-wiki

Para crear un nuevo grupo haga click auxiliar sobre el nombre de la aplicación y en crear un nuevo grupo

Una aplicación promedio debe incluir por lo menos los siguientes grupos

Page 10: Stm32f4 Discovery - Ttde-wiki

Para crear un nuevo archivo fuente haga click en archivo nuevo, luego guardelo para que el sistema de desarrollo interprete y resalte el código que está

escribiendo. Guarde el archivo sobre la ubicación que prefiera pero se sugiere que sea sobre una carpeta dentro de la carpeta del proyecto. Recuerde del orden

de una aplicación depende la velocidad con la que se pueda buscar y administrar los archivos fuentes del mismo.

Recuerde crear un archivo no implica haberlo agregado a la aplicación. Observe el icono del archivo recientemente creado y la estructura.

Para agregar un archivo al proyecto debe dar click auxiliar sobre el grupo y luego agregar archivo fuente (Puede dar doble click sobre el grupo y resulta en la misma acción). Busque en la estructura de archivos el archivo que ha creado y agréguelo.

Page 11: Stm32f4 Discovery - Ttde-wiki

Note como ha cambiado el icono del archivo ha cambiado y se ha agregado sobre la estructura de archivos.

Configuración de STLINK sobre Keil uVision

Para habilitar la depuración sobre el Hardware por medio de la interfaz STLINK se debe configurar el depurador dentro del ambiente de desarrollo. Para esto se

pueden seguir los siguientes pasos.

Opciones del Target

Opciones del Debug o depurador

Seleccionar STLINK

Page 12: Stm32f4 Discovery - Ttde-wiki

Opciones de STLINK

Seleccione SWD

Agregar las librerías y funciones de inicialización

Para agregar terminar con la configuración del proyecto es necesario agregar el archivo que contiene todas las definiciones necesarias en la utilización del microcontrolador File:Stm32f4xx.h. Descárgelo y agréguelo al proyecto. Nota: Dependiendo de la ubicación donde lo ubique es importante que la directiva #include debe apuntar a la dirección donde se encuentra este archivo. Este archivo tiene el prototipo de una función llamada void SystemInit() que define la inicialización del microcontrolador. Consulte la hoja de datos [4] (h tt p ://www. s t . c o m /in t e r n e t / c o m / T E C HN IC A L _ R E S O U RC E S / T E C HN IC A L _ L I T E R A T U R E/ R E F E R E N C E_ M A N U A L / D M 00031020. pd f ) del microcontrolador para ampliar la información de los registros usados en la siguiente función.

void SystemInit()unsigned int i;

for (i=0;i<0x00100000;i++); // Rutina de espera por el OSCRCC>CFGR |= 0x00009400; // Configurar la máxima velocidad por AHB y APBRCC>CR |= 0x00010000; // Selección del cristalwhile (!(RCC>CR & 0x00020000)); // Esperar que el Xtal se estabilice RCC->PLLCFGR = 0x07401544; // PLL en M=4, N=85, P=2 y Q=7 Velocidad de 85 Mhz RCC>CR |= 0x01000000; // Iniciar PLLwhile(!(RCC>CR & 0x02000000)); // Esperar al PLLFLASH>ACR = 0x00000605; // Iniciar ARTRCC>CFGR |= 0x00000002;while ((RCC>CFGR & 0x0000000F) != 0x0000000A);RCC>AHB1ENR |= 0x0000000F; // habilitación de clock de GPIO A,B,C,D

Ej e m p l o - B li n k i n g l e d El Led 3 de color naranja está conectado al I/O PD13 del STM32F407VGT6. Tome en cuenta que cada puerto tiene máximo 16 bits tal como se muestra en la siguiente imagen.

Page 13: Stm32f4 Discovery - Ttde-wiki

Para configurar correctamente el pin como salida primero se debe habilitar el GPIO mode register - MODER este registro configura el modo del pin como se muestra

en la siguiente figura:

Configuración del pin en modo salida

Page 14: Stm32f4 Discovery - Ttde-wiki

Para configurar como salida el pin PD13 se debe establecer en 1 el bit 26 del registro GPIOD_MODER como se muestra en la figura anterior.

Configuración de energía y habilitación del registro

Con el creciente desarrollo tecnológico y la constante integración de componentes dentro de los microcontroladores día a día se integran mas elementos operiféricos dentro estos micros; con el fin de reducir el consumo energético los fabricantes brindan la posibilidad de encender y apagar cada uno de estos periféricos de manera dinámica. En la implementación de ST se crean los registros RCC (Reset and Clock Control) para controlar los periféricos y su consumo (RCC_AHB1ENR and RCC_AHB2ENR) para ampliar la explicación recurra a la hoja de datos en pag 93 (sec 5.3). el registro RCC->AHB1ENR |= 0x0000000F; se configuró en la

función void SystemInit()

Establecimiento de Alto o Bajo un pin del puerto

Por último se debe escribir en el registro ODR del GPIO deseado para activar o desactivar un valor de salida.

Código de ejemplo:

int main(void)unsigned int i=0; GPIOD>ODR=(1<<12);

for(;;)GPIOD>MODER = (1 << 26); // set pin 13 to be general purpose output

for (;;)GPIOD>ODR ^= (1 << 13);for (i=0;i<0xFFFFFF;i++)//Rutina de espera;

Re c u r s o s www. s t . c o m / s t m 32 f 4- d i sc o ve r y h tt p ://www. m i k r o c o n t r o ll e r .n e t / a r t i c l e s / S T M 32 F 4- D i sc o ve r y

Privacy policy About TTDE-WIKI Disclaimers Powered by MediaWiki Designed by Paul Gu