Vamos conocer el microcontrolador ARM MSP432P401, un Cortex-M4F muy apropiado para diseñar equipos modernos. En la actualidad, el crecimiento de microcontroladores ARM es verdaderamente muy notorio, mas, al mirar su documentación parecen complicados de entender o programar. En este artículo vamos a conocer que los microcontroladores ARM (*) son de fácil comprensión y programación.

 

(*) Para saber más sobre los microcontroladores ARM sugerimos la lectura del artículo MIC011S - EMPEZANDO A PROGRAMAR LOS MICROCONTROLADORES ARM (32 Bits) del mismo autor.

 

Programación, es una palabra que significa hacer un plan o planificar algo que se quiere o desea hacer. Esta palabra es común a todos los Microcontroladores, Microprocesadores, DSPs, etc. Cualquier equipo que tenga una potencial para procesarInstrucciones, se dice que se puede programar.

Instrucciones, es otra palabra clave dentro de la programación. Supongamos un ejemplo y imaginemos que tenemos un carro programable, podemos decirle que: Encienda, gire a la derecha 20 grados, luego avance o siga adelante 3 metros y finalmente que gire a la izquierda 15 grados, avance 2 metros y se detenga. Podemos ver en nuestro ejemplo, que el carro programable ejecuta Instrucciones como: Encender, Avanzar, Girar a la derecha, Girar a la izquierda, Parar. Esto es programar: Usar Instrucciones para ejecutar algo.

Un carro, entendemos, es un vehículo que se mueve de un lado a otro. Por lo tanto su programación es muy deductiva o intuitiva. Un microcontrolador es muy similar a un carro programable, solo que ejecuta otras clases de Instrucciones. Las Instrucciones que un Microcontrolador puede ejecutar son: Sumar, Restar, Dividir, Multiplicar, Comparar, Mover un dato de un lugar para otro, etc. La lista completa de instrucciones que cada microcontrolador puede Ejecutar, se lista en sus hojas técnicas.

Ejecutar es otra palabra clave dentro de la programación de Microcontroladores. Las instrucciones dentro de un microcontrolador son ejecutadas por la Unidad Central de Proceso o CPU. Algunas instrucciones vienen acompañadas de datos o variables. En la Figura 1 podemos observar un diagrama en bloques de un microcontrolador básico. En la memoria de programa se almacenan o guardan las instrucciones. La CPU ejecuta las instrucciones y almacena los datos o variables en la memoria RAM. Aquí comenzamos una aventura en el mundo de la programación de Microcontroladores ARM, pues la idea es entender que tienen o de que están compuestos, que pueden hacer y así poderlos programar.

 

Figura 1. Diagrama básico de un microcontrolador
Figura 1. Diagrama básico de un microcontrolador

 

 

 

CLASIFICACION DE LOS PROCESADORES ARM.

Los procesadores ARM se pueden clasificar según las instrucciones que pueden ejecutar y sus posibles aplicaciones, en 3 grandes grupos. La Figura 2 muestra esta clasificación:

 

Figura 2. Familia de procesadores ARM
Figura 2. Familia de procesadores ARM

 

 

Cortex-A Procesadores para aplicaciones: son usados en equipos o dispositivos electrónicos donde se requiere un sistema operativo (OS), como Linux, Windows, sistemas operativos para móviles y celulares (Android, Windows movile, etc.), lo que hace estos procesadores apropiados para usar en computadores, servidores, teléfonos celulares, tablets, etc.

 

Cortex-R Procesadores para Tiempo Real: son usados en equipos que requieren ejecutar instrucciones en el menor tiempo posible, como por ejemplo: control de automóviles, control de frenos para automóviles, robots, aviones, cámaras de vigilancia y fotográficas, periféricos de computadores, etc.

 

Cortex-M Procesadores para Microcontroladores: son usados en electrodomésticos, equipos de medición, electrónica de control industrial, juguetes, etc.

 

Los procesadoresCortex-M los podemos subdividir en otras categorías y las instrucciones que pueden ejecutar se muestran la Figura 3.

 

Figura 3 . Set de Instrucciones soportados por Cortex-M
Figura 3 . Set de Instrucciones soportados por Cortex-M

 

 

Cortex-M0 y Cortex-M0+: son procesadores de muy bajo consumo y bajo costo.

Cortex-M1: Un procesador pequeño optimizado para FPGA (Fiel Programable Gate Array).

Cortex-M3: un procesador de bajo consumo con un rico set de instrucciones, divisiones y multiplicaciones acumulativas por hardware y capacidades de depuración y trace.

Cortex-M4: con instrucciones para tareas de DPS, multiplicaciones acumulativas más rápidas y capacidades para depuración y trace.

Cortex-M4F: con la mismas capacidades que el Cortex-M4 mas una unidad para aritmética de coma flotante de presión simple.

Podemos ver en la Figura 2 y Figura 3, que el microcontrolador MSP432P401 pertenece a la familia Cortex-M4F, es decir uno los mejores de la familia Cortex-M (Microcontroladores).

 

EL MICROCONTROLADOR MSP432P401.

El microcontrolador MSP430P401 cuenta con las siguientes características:

CPU ARM Coter-M4F.

Frecuencia hasta 48 MHz

Memoria de Programa de hasta 256 KBytes

Memoria RAM de 64 KBytets.

Memoria ROM de 32 KBytes con Librerías de periféricos.

RTC (Real Time Clock)

4 Timers de 16 Bits

2 Timers de 32 Bits

UART

SPI

I2C.

Conversor Analógico para Digital de 14 bits (ADC).

2 Comparadores Analógicos

48 I/O con capacidad de interrupción.

Hardware para criptografía de datos.

Monitor de voltaje.

Módulos para depuración y seguimiento (Trace).

Muy bajo consumo, ideal para equipos a batería.

 

Entre las muchas aplicaciones donde se puede usar este microcontrolador se encuentran:

Medidores de flujo.

Medidores eléctricos.

Automatización de casas.

Automatización industrial.

Termostatos inteligentes.

Paneles de Acceso.

Monitores de gas.

Módulos de comunicación.

Relojes.

Medidores digitales wireless.

Equipos médicos portátiles.

Medidores de glucosa.

Dispositivos portátiles.

 

La Figura 4 muestra el diagrama en bloques del microcontrolador MSP432P401. Podemos notar la CPU ARM Cotex-M4F, las memorias Flash, RAM, ROM, los GPIO, ADC, Comparadores Analógicos, Timers, UARTs, SPI, I2C, etc. Los microcontroladores ARM para tener mejor desempeño, usan varios buses para interconectar sus memorias y periféricos, pero en el diagrama de la Figura 4, se han omitido para facilitar el entendimiento. Gracias a las funciones y librerías que la Texas Instruments ha desarrollado y que entrega al programador en un kit de desarrollo de software (SDK) llamado SimpleLink, estos buses son transparentes a la hora de programar.

 

Figura 4.Diagrama  en bloques del microcontrolador MSP432P401
Figura 4.Diagrama en bloques del microcontrolador MSP432P401

 

 

TARJETA DE DESARROLLO

La Texas Instruments ha creado un kit de desarrollo de fácil uso llamado MSP-EXP432P401R LaunchPad. Con este kit podemos comenzar a programar el microcontrolador MSP432P401 y testar sus múltiples periféricos y capacidades.

La Figura 5 muestra una imagen de este kit. Como una nota a tener en cuenta, existen 2 kits del MSP-EXP432P401R, llamados Rev 1.0 (Black) y Rev. 2.0 (Red). La diferencia en estas 2 versiones, es, principalmente estética y para mejorar su uso por parte del programador o usuario. La mostrada en la Figura 5 es la Rev 2.0.

Muchas herramientas de desarrollo o IDE (Editores y Compiladores) están disponibles para programar el kit, como: el IDE Code Composer Studio, el IDE IAR Embedded Workbench, el IDE Keil uVision.

 

Figura 5. Kit de Desarrollo MSP-EXP432P401R
Figura 5. Kit de Desarrollo MSP-EXP432P401R

 

 

La Figura 6 muestra un diagrama en bloques del Kit MSP-EXP432P401R.

Podemos observar en este diagrama que se usa un cristal externo de 48 MHz, 40 pines para conexión, botones y LEDs para interactuar con el usuario, una interface JTAG para propósitos de depuración, un conector USB para conexión con el computador. Las Figura 7 y 8 muestran el mapa de pines de la tarjeta de desarrollo. Podemos observar las varias entradas analógicas, GPIOs, UART, SPI, I2C, PWM, Timers, Entradas con Captura, etc. Este mapa de pines es un estándar compatible con una serie de módulos diseñados para esta tipo de placas. Es importante estar atento y verificar si el modulo es cien por ciento compatible o si hay que hacer alguna modificación.

 

Figura 6. Diagrama en bloques del Kit MSP-EXP432P401R
Figura 6. Diagrama en bloques del Kit MSP-EXP432P401R

 

 

 

Figura 7. Mapa de pines de los conectores J1 y J3 del kit MSP-EXP432P401R
Figura 7. Mapa de pines de los conectores J1 y J3 del kit MSP-EXP432P401R

 

 

Figura 8. Mapa de pines de los conectores J2 y J4 del kit MSP-EXP432P401R
Figura 8. Mapa de pines de los conectores J2 y J4 del kit MSP-EXP432P401R

 

 

La Figura 9 muestra los pines del microcontrolador MSP432P401RIPZ y podemos observar su rico set de periféricos nombrado anteriormente.

 

 

Figura 9. Pines del microcontrolador MSP432P401RIPZ
Figura 9. Pines del microcontrolador MSP432P401RIPZ

 

 

HERRAMIENTAS DE PROGRAMACION.

La Texas Instruments desarrollo un Kit de Desarrollo de Software o SDK (Software Development Kit) para facilitar el uso y programación del microcontrolador. La Figura 10 muestra los componentes que forman el SDK:

 

Figura 10. Componentes del SDK SimpleLink
Figura 10. Componentes del SDK SimpleLink

 

 

OS/Kernel : es un sistema operativo de tiempo real (RTOS – Real Time Operating System) muy útil para simplificar la tarea de programación.

POSIX : son funciones (API – Application Programming Interface) para habilitar el código de la aplicación ser portable y tener compatibilidad con otros OS/Kernels.

DriveLib : es una librería (HAL – Hardware Abstraction Layer) que crea una capa entre el acceso más bajo de los periféricos y la aplicación.

TI Drivers : son funciones (API) que permite acceder a los periféricos de forma fácil.

Graphics : Una librería para manejar displays (LCDs) e imágenes.

BLE/WiFi : Librería para conexiones Blueth y WiFi.

Sub-1 GHz: Librería par conexiones Sub-1 GHz.

Examples: Código ejemplo para demostrar el uso de las anteriores librerías.

 

A todas estas funciones o rutinas (SDK), la Texas Instruments le dio el nombre de SimpleLink. Con la práctica veremos su fácil uso y su utilidad, pues el programador no se tiene que preocupar con crear rutinas para controlar los periféricos. Así, el programador se puede concentrar en el aplicativo y ganar tiempo para terminar el diseño.

 

PROGRAMA EXEMPLO.

Uno de los programas ejemplo más utilizados para microcontroladores, es encender y apagar (blinking) un LED. En las librerías (SDK) del microcontrolador MSP432P401, también encontramos este ejemplo para encender y apagar un LED.

 

int main(void)

{

volatile uint32_t i;

 

// Stop watchdog timer

WDT_A_hold(WDT_A_BASE);

 

// Set P1.0 to output direction

GPIO_setAsOutputPin(

GPIO_PORT_P1,

GPIO_PIN0

);

 

while(1)

{

// Toggle P1.0 output

GPIO_toggleOutputOnPin(

GPIO_PORT_P1,

GPIO_PIN0

);

 

// Delay

for(i=100000; i>0; i--);

}

}

 

Explicando el programa, podemos decir que la primera función que el programa llama, es main(). La siguiente línea de código, declara una variable entera llamada i:

volatile uint32_t i;

 

La siguiente línea de código, para el timer watchdog:

WDT_A_hold(WDT_A_BASE);

 

La siguiente línea de código, configura el pin 0, del puerto P1 como salida:

GPIO_setAsOutputPin(

GPIO_PORT_P1,

GPIO_PIN0

);

 

La siguiente línea de código, es usada para que el programa siempre se repita, es decir entre en un loop infinito:

while(1)

 

La siguiente línea de código, es usado para cambiar el estado (toggle), del pin 0, del puerto P1:

GPIO_toggleOutputOnPin(

GPIO_PORT_P1,

GPIO_PIN0

);

La siguiente línea de código es usada para retardar (delay) el programa por un tiempo y poder observar el parpadeo (blink) del LED:

for(i=100000; i>0; i--);

 

Para compilar y editar el ejemplo anterior fue usado el IDE Keil. La Figura 11 muestra este entorno de desarrollo.

 

Figura 11. Entorno de desarrollo Keil
Figura 11. Entorno de desarrollo Keil

 

 

Otra ventaja de usar los microcontroladores MSP432P401, es su compatibilidad con el modelo de programación Arduino. La Texas Instrumental ofrece una IDE de desarrollo llamada Energía, la que es muy parecida al IDE de Arduino. La Figura 12 muestra el IDE Energía, entorno de desarrollo para la tarjeta MSP-EXP432P401R. Es necesario instalar la tarjeta en IDE, para hacer esto, vaya al menú: Herramientas->Placa->Gestor De Targetas. El siguiente es un ejemplo para encender y apagar un LED, usando el IDE Energia:

 

Figura 12. Ambiente de Desarrollo IDE Energia
Figura 12. Ambiente de Desarrollo IDE Energia

 

 

#define LED RED_LED

 

void setup() {

pinMode(LED, OUTPUT);

}

 

void loop() {

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

delay(1000);

}

 

Podemos observar que el programa es muy simple. Primero, en la función void setup(), se configura el pin del puerto para ser salida:

pinMode(LED, OUTPUT);

 

Luego, en la función del loop infinito, la salida del LED, se coloca a nivel alto (HIGH), con la siguiente línea de código:

digitalWrite(LED, HIGH);

 

Luego, retardamos por 1000 milisegundos (1 segundo), con la siguiente línea de código:

delay(1000);

 

Luego, se coloca a nivel bajo (LOW) la salida del LED, con la siguiente línea de código:

digitalWrite(LED, LOW);

 

Y luego, se vuelve a retardar por 1000 milisegundos (1 segundo), con la siguiente línea de código:

delay(1000);

 

Este código, el que se encuentra dentro de la función void loop(), se repite infinitamente y así el LED va a prender y apagar (blinking).

 

Como podemos observar, comenzar a programar un microcontrolador ARM MSP432P401 es muy sencillo; esto también es válido para cualquier microcontrolador ARM de la familia Cortex-M.

 

VENTAJAS DE USAR EL SDK SimpleLink

La Texas Instruments ha desarrollado todo un ecosistema o portafolio alrededor del SDK SimpleLink para facilitar el diseño wireless con los microcontroladores MSP432P401. La Figura 13 muestra un ejemplo de lo dicho anteriormente. Como podemos ver, si se ha desarrollado un termostato y se quiere adicionar algún tipo de conexión wireless, solo hay que adicionar, al código original, las funciones (librerías) y el hardware necesario para la necesidad requerida. SimpleLink da soporte para las conexiones wireless: WiFi, Bluetooth, Sub-1 GHz. Esto permite el reusó del código y la escalabilidad a un cien por ciento.

Como conclusión podemos decir que conocer un microcontrolador ARM, es una cuestión de práctica y de conocer la terminología que está envuelta alrededor de los microcontroladores ARM. En próximos artículos podemos hacer uso de los diferentes recursos que ofrece el microcontrolador ARM MSP432P401 y el SKD SimpleLink.

 

 

Figura 13. Ejemplo de reuso de código con el SDK SimpleLink
Figura 13. Ejemplo de reuso de código con el SDK SimpleLink

 

 

Buscador de Datasheets



N° de Componente