Interface Switch e Led com LPC1768- (Parte 4/21)

Interruptor e interfaz LED con LPC1768- (Parte 4/21)

Este es otro artículo que presenta la programación del microcontrolador ARM Cortex-M3 LPC1768. Aquí realizaremos funciones de entrada y salida del GPIO del LPC1768. Para una mejor comprensión utilizaremos un botón y el LED. Nuestra idea es programarlo para que al pulsar el botón se encienda el LED. La configuración del entorno para el desarrollo de ARM Cortex M3 se analiza detalladamente en este artículo.

El LPC 1768 es un microcontrolador basado en ARM Cortex-M3 para capacidades de aplicaciones integradas con bajo consumo de energía y un alto nivel de integración. El ARM Cortex M3 está diseñado para mejorar las capacidades de depuración y un mayor nivel de integración del sistema. Funciona a una frecuencia de CPU de 100 MHz e incorpora una canalización de 3 etapas y utiliza una arquitectura Harvard con buses de datos e instrucciones locales separados para periféricos de tercer bus. La CPU ARM Cortex-M3 tiene una unidad de captación previa interna para admitir ramas especulativas. Los componentes periféricos incluyen memoria flash de 512 KB, memoria de datos de 64 KB, Ethernet MAC, USB OTG, 4 UART, controlador DMA de uso general de 8 canales, 2 controladores SSP, DAC de 10 bits, interfaz de codificador de cuadratura, interfaz SPI, 3 buses I2C interfaz, interfaz de bus I2S de 2 entradas más 2 salidas, 4 temporizadores de uso general, reloj en tiempo real (RTC) de potencia ultrabaja con suministro de batería independiente y hasta 70 pines de E/S de usuario General, 6 salidas generales -propósito PWM. Los LPC1768/66/65/64 son compatibles con los pines de la serie de microcontroladores basados ​​en LPC236x ARM7 de 100 pines.

Interface Switch e Led com Protótipo LPC1768

Fig. 1: Interfaz de interruptor y LED con el prototipo LPC1768

Antes de comenzar a codificar el LED y la interfaz del interruptor, se proporciona una introducción a los registros en el LPC1768 y su configuración.

Configuración del registro (lpc17xx.h):

Como LPC1768 es una arquitectura de 32 bits con memoria asignada a la ubicación 0x2009 C000 a 0x2009 FFFF. Los registros de función especial LPC1768 se definen en lpc17xx.h, que se incluye al comienzo del proyecto. Hay 5 puertos (PORT0 – PORT4). Cada PUERTO no tendrá 32 pines físicos. Se define una estructura en el archivo del sistema LPC_GPIOn(n= 0,1,2,3) que contiene todos los registros necesarios para la operación GPIO. Consulte el archivo lpc17xx.h para obtener más información sobre los registros.

PINSEL: Pines GPIO Seleccionar Registrar:

El registro PINSEL debe configurarse antes de utilizar PIN, ya que casi todos los pines tienen un máximo de cuatro funciones alternativas. La siguiente tabla explica la función de un pin específico utilizando dos bits del registro PINSEL.

Valor

Función

Enumeración

00

Función principal (predeterminada), normalmente puerto GPIO

PINSEL_FUNC_0

01

Primera función alternativa

PINSEL_FUNC_1

10

Segunda función alternativa

PINSEL_FUNC_2

11

Tercera función alternativa

PINSEL_FUNC_3

Fig. 2: Valor del bit de registro PINSEL para seleccionar pines GPIO en LPC1768

FIODIR: Registro rápido de control de dirección GPIO.

Este registro controla individualmente la dirección de cada pin de puerto.

Valores

Dirección

0

Prohibido

1

Salida

Fig. 3: Valor de bit del registro FIODIR para controlar la dirección de los puertos en el LPC1768

FIOSET: Registro de configuración de salida de puerto rápido.
Este registro controla el estado de los pines de salida. Escribir 1 produce máximos en los pines del puerto correspondiente. Escribir 0 no tiene ningún efecto. La lectura de este registro devuelve el contenido actual del registro de salida del puerto y no el valor del puerto físico.

Valores

FIOSET

0

Sin efecto

1

Se coloca en lo alto del pin

FIOCLR: Registro de limpieza rápida de salida de puerto.

Este registro controla el estado de los pines de salida. Escribir 1 produce mínimos en los pines del puerto correspondiente. Escribir 0 no tiene ningún efecto.

Valores

FIOCLR

0

Sin efecto

1

Establece el bajo en el pin

Fig. 4: Valor del bit de registro FIOCLR para controlar el estado de los pines de salida en el LPC1768

FIOPIN: Registro de valor de pin de puerto rápido.
Este registro se utiliza para leer y escribir datos hacia/desde el PUERTO.
Salida: escribir en este registro coloca los valores correspondientes en todos los bits de los pines del PUERTO específicos.
Entrada: el estado actual de los pines del puerto digital se puede leer desde este registro independientemente de la dirección del pin o la selección de función alternativa (siempre que los pines no estén configurados como entrada al ADC).
Nota: Se recomienda configurar la dirección PORT y la función pin antes de usarlo.

Cree un proyecto usando Keil uvision4 para el microcontrolador LPC1768:

En esta sección, comenzaremos a crear un proyecto en Keil MDK, ya hemos instalado Keil µVision y Co-MDK Plug-in + CoLinkEx Drivers necesarios para el adaptador de programación CoLinkEx. Puede comenzar descargando los archivos del proyecto y comenzar su experimento práctico.

Código.rar

Descripción del código:

La programación ARM requiere un buen manejo de la manipulación de bits en lenguaje C. Aquí hay una pequeña nota sobre cómo introducir la manipulación de bits para un novato. C tiene soporte directo para operaciones bit a bit que pueden usarse para manipulación de bits. En los siguientes ejemplos, n es el índice del bit que se va a manipular dentro de la variable bit_fld, que es un carácter sin signo que se utiliza como campo de bits. La indexación de bits comienza en 0, no en 1. El bit 0 es el bit menos significativo.

definir un poco

bit_fld = (1 <

Limpiar un poco

bit_fld &= ~(1 <

alternar un poco

bit_fld ^ = (1 << n)

prueba un poco

bit_fld & (1 <

El LED está conectado al puerto 2.0 y el conmutador está conectado al puerto 1.0. A continuación se muestran los fragmentos de código utilizados para que funcione.

LPC_GPIO2->FIODIR = 0x000000FF; /* P2.xx establecido como Salidas */

LPC_GPIO2->FIOCLR = 0x000000FF; /* apaga todos los LED */

LPC_GPIO1->FIODIR = 0x00000000; /* P1.xx definido como entradas */

LPC_GPIO1->FIOCLR = 0x000000FF; /* Disminuciones */

Las líneas anteriores son para configurar los pines del puerto 2 como salida y borrarlos. La estructura LPC_GPIO2 consta de miembros FIODIR, FIOCLR y FIOSET.

estado del interruptor = (LPC_GPIO1->FIOPIN>>0) & 0x01; //Leer el estado del interruptor

si (estado del cambio == 1)

{

LPC_GPIO2->FIOPIN = (1<<0);

}

otro

{

LPC_GPIO2->FIOPIN = (0<<0);

}

El bucle if anterior es para verificar el estado del pin de entrada y cambiar la salida del pin de salida en consecuencia.

Código fuente del proyecto

 ###
Los códigos están vinculados en la Descripción ###

Diagramas de circuito

Interfaz de interruptor y LED con LPC1768

Componentes del proyecto

  • CONDUJO
  • Resistor

Vídeo del proyecto

Volver al blog

Deja un comentario

Los comentarios deben ser aprobados antes de su publicación.