3. Hardware - bibing.us.esbibing.us.es/proyectos/abreproy/12132/fichero/3.+Hardware.pdf · último...

13
Hardware 25 3. Hardware 3.1 Microcontrolador MCF51QE128 de FreeScale 3.1.1 Definición de Microcontrolador Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento (CPU), memoria y periféricos de entrada/salida. Se puede decir que es una evolución del microprocesador, al añadirle a este último las funciones que antes era necesario situar externamente con otros circuitos. El ejemplo típico esta en los puertos de entrada/salida y en la memoria RAM, en los sistemas con microprocesadores es necesario desarrollar una lógica de control y unos circuitos para implementar las funciones anteriores, con un microcontrolador no hace falta porque lo lleva todo incorporado, además en el caso de tener que ampliar el sistema ya ofrece recursos que facilitan esto. En resumen, un microcontrolador es un circuito integrado independiente, que no necesita memoria ni puertos externos pues los lleva en su interior, que facilita la tarea de diseño y reduce el espacio, traduciéndose todo a una aplicación final más económica y fiable 3.1.2 El microcontrolador MCF51QE128 Una de las mayores ventajas de los microcontroladores Freescale son los bajos precios de éstos, la alta potencia en operación y el bajo consumo cuando se opera a máxima frecuencia de trabajo, especialmente cuando se lleva la operación a baja velocidad. Para este proyecto hemos elegido el microcontrolador MCF51QE128.

Transcript of 3. Hardware - bibing.us.esbibing.us.es/proyectos/abreproy/12132/fichero/3.+Hardware.pdf · último...

Hardware

25

3. Hardware

3.1 Microcontrolador MCF51QE128 de FreeScale

3.1.1 Definición de Microcontrolador

Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado

programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de

varios bloques funcionales, los cuales cumplen una tarea específica. Un

microcontrolador incluye en su interior las tres principales unidades funcionales de

una computadora: unidad central de procesamiento (CPU), memoria y periféricos de

entrada/salida.

Se puede decir que es una evolución del microprocesador, al añadirle a este

último las funciones que antes era necesario situar externamente con otros circuitos. El

ejemplo típico esta en los puertos de entrada/salida y en la memoria RAM, en los

sistemas con microprocesadores es necesario desarrollar una lógica de control y unos

circuitos para implementar las funciones anteriores, con un microcontrolador no hace

falta porque lo lleva todo incorporado, además en el caso de tener que ampliar el

sistema ya ofrece recursos que facilitan esto.

En resumen, un microcontrolador es un circuito integrado independiente, que no

necesita memoria ni puertos externos pues los lleva en su interior, que facilita la tarea de

diseño y reduce el espacio, traduciéndose todo a una aplicación final más económica y

fiable

3.1.2 El microcontrolador MCF51QE128

Una de las mayores ventajas de los microcontroladores Freescale son los bajos

precios de éstos, la alta potencia en operación y el bajo consumo cuando se opera a

máxima frecuencia de trabajo, especialmente cuando se lleva la operación a baja

velocidad. Para este proyecto hemos elegido el microcontrolador MCF51QE128.

Hardware

26

Es un microcontrolador con procesador interno (CPU) tipo COLDFIRE V1, y

perteneciente a la familia FLEXIS, que surge con la innovación introducida por

Freescale para permitir una fácil migración del mundo de los 8 bits al de los 32

bits. Esto asegura una gran compatibilidad con microcontrolador con núcleo de 8 bits,

permitiendo migrar con muy pocos cambios en software y hardware.

Sus características más importantes son:

• Núcleo ColdFire V1 de 46 Dhrystone (2.1 MIPS) a 50 MHz.

• Rango de operación de 1.8-3.6V.

• Hasta 8K bytes SRAM y 32K bytes de flash.

• 2 Módulos Seriales de comunicación (SCI)

• 2 interfaces I2C

• 2 Interfaces Seriales Sincrónicas (SPI).

• 2 módulos de interrupciones de teclado (KBI) de ocho canales cada uno.

• Timers de 16 bits: uno de 6 canales y dos de 3 canales

• Conversor A/D de 12 bits de resolución de 20 canales.

Figura 4 El microcontrolador MCF51QE128

Hardware

27

• Dos comparadores analógicos.

• Hasta 54 Input / Output (I/O) generales.

• Sistemas Integrados (PLL, software watchdog).

• Internal clock source

• Regulador de tensión con fast start up y regulación de baja tensión.

• Oscilador de 32 kHz de low power.

3.1.3 Modos de funcionamiento

Las máquinas ColdFire® V1 tienen la capacidad de trabajar en distintos modos

de funcionamiento (Ver tabla 2), dentro de los cuales se pueden mencionar:

• Modo de depuración para desarrollo de código: Manejado directamente por el

módulo BDC (Background Debug Controller), el trabajo importante de este

modo es el de poder analizar las operaciones del microcontrolador durante la

ejecución del software del usuario. Por medio de este modo es posible descargar

el bootloader o la aplicación del usuario dentro de la memoria FLASH. Este

modo también puede ser usado para borrar y reprogramar la FLASH después de

que esta ha sido programada con anterioridad.

• Modo seguro: Mientras que el microcontrolador se encuentre en modo seguro,

existen restricciones aplicadas a los comandos del depurador.

• Modo RUN: Es el modo normal de operación y el más común, porque es el

modo en el que el usuario puede ejecutar su código. La máquina reconoce la

solicitud de entrada al modo cuando el pin BKGD/MS es llevado a alto con el

flanco de bajada de la señal interna de RESET. Este modo presenta las

siguientes variaciones:

o Modo RUN normal: Una vez la CPU ha salido del estado de RESET,

carga el registro SR (Status Register) y el registro PC (Program Counter)

con el contenido de las direcciones 0x(00)00_0000 y 0x(00)00_0004 de

la memoria y ejecuta la primera instrucción apuntada por el PC. Es

importante saber que la arquitectura ColdFire® V1 usa

direccionamientos por byte en el modo big endian.

Hardware

28

o Modo RUN en bajo consumo (LPRUN: low Power RUN): En este

modo el regulador interno se lleva al estado de standby y de esta manera

ubicar la CPU en modo de bajo consumo. Es importante saber que el

sistema queda alimentado de manera no regulada y que todos los

periféricos no usados son privados de la señal de reloj, vía los registros

SCGC1 y SCGC2. También es importante saber que la CPU no puede

entrar en modo LPRUN cuando el sistema se encuentra en uso del BDM

(Background Debug Module).

Tabla 2 Modos de funcionamiento del microprocesador

Hardware

29

Antes de ingresar al modo LPRUN, las siguientes acciones deberán ser

ejecutadas:

- El FLL (Frecuency Loop Locked) del módulo ICS (Internal Clock Source) es

llevado a un estado de bypass, para la adopción de un modo de operación de

bajo consumo llamado FBELP (FLL Bypassed External Low Power)

- El bit HGO del registro ICSC2 es aclarado, para configurar un oscilador

externo de bajo consumo.

- La frecuencia del bus es menor que 125 kHz.

- El módulo conversor análogo a digital (ADC) deberá trabajar en baja potencia

o ser deshabilitado.

- El módulo de detección de bajo voltaje deberá ser deshabilitado, debido a la

condición de standby del regulador interno.

- No se tiene disponibilidad sobre la programación o borrado de la FLASH.

Finalmente, se puede ingresar al modo, llevando un “1” al bit LPR del registro

SPMSC2 (System Power Management Status and Control 2 Register).

Para regresar al modo normal de RUN, es necesario aclarar el bit LPR. El bit

LPRS indicará si el regulador está en modo normal de funcionamiento y la

máquina podrá correr a la máxima velocidad configurada. Si una interrupción se

presenta, la máquina podrá salir del estado de LPRUN, esto se puede lograr

poniendo en”1” el bit LPWUI del registro SPMSC2 y dentro de la rutina de

atención a la interrupción se podrá habilitar la operación del ICS (Internal Clock

Source) a máxima velocidad.

• Modos de WAIT: Para entrar en este modo de bajo consumo es necesario

ejecutar la instrucción STOP, después de configurar la máquina como se ilustra

en la Tabla 2.

Hardware

30

o Modo normal de WAIT: La CPU queda en modo STOP y el consumo

se reduce significativamente, dado a que el reloj es interrumpido. La

arquitectura ColdFire® V1 no hace diferencia entre elmodo STOP y el

modo WAIT, ambos son catalogados como modos de STOP, desde la

perspectiva del núcleo. La diferencia entre ambos modos sólo se aprecia

desde el suministro del reloj a los periféricos del sistema. En modo

STOP, la mayoría de los periféricos son desalimentados de reloj,

mientras que en modo WAIT el reloj alimenta la mayoría de los módulos.

Si es necesario que el sistema responda a comandos en el modo BDM,

será prioritario poner a “1” el bit ENBDM.

Al presentarse un evento de interrupción, estando la máquina en modo

WAIT, la CPU ejecuta un proceso de excepción, comenzando con un

servicio de apilamiento de información valiosa y luego conduciendo la

máquina a un servicio de atención a la interrupción.

o Modo LPWAIT: La diferencia respecto al modo normal de WAIT es

que el regulador de la CPU sale de regulación y queda en estado de

standby. Lo anterior reduce enormemente el consumo de la máquina,

consumo que puede ser reducido aún más deshabilitando los módulos

que no se utilicen. Esta última operación se puede lograr poniendo a cero

los bits de los módulos a inactivar en el registro SCGC.

Las restricciones vistas en el modo LPRUN se aplican al modo LPWAIT.

Si el bit LPWUI es puesto a “1”, cuando la máquina ha ejecutado la

instrucción STOP, el regulador regresa a su estado de regulación y el ICS

puede ser llevado a su máxima velocidad en la entrada a la rutina de

atención a la interrupción, que determinó la salida del estado de WAIT.

Si el bit LPWUI es puesto a “0”, cuando la máquina ha ejecutado la

instrucción STOP, la CPU regresa al modo LPRUN.

• Modos de STOP: Existen tres modos de operación en STOP, siempre y cuando

el bit STOPE del registro SOPT1 se encuentre en “1”. El bit WAITE del registro

SOPT1 deberá ser aclarado, excepto cuando se desee trabajar en modo WAIT.

Hardware

31

En el modo STOP3 las fuentes de reloj de la CPU son interrumpidas.

Los diferentes modos de STOP son seleccionados mediante el bit PPDC del

registro SPMSC2.

La mayoría de los comandos del modo background (BDM) no son reconocidos

en los modos de STOP, pero el comando BACKGROUND puede sacar la CPU

del modo STOP4 y entrar en modo HALT. Quedando la CPU en el modo HALT

y estando el bit ENBDM en “1”, todos los comandos del BDM se podrán

utilizar.

o Modo STOP2: La tabla 2 detalla la forma de ingresar al modo STOP2,

en donde la mayoría de los módulos de la CPU son apagados, con

excepción de la memoria RAM y el módulo RTC (Real Time Clock) de

manera opcional. Al entrar a este modo, la CPU almacena el estado de

los pines I/O en la RAM, con el propósito de recuperar su estado una vez

se decida salir del modo.

Para salir de este modo, es necesario introducir un flanco de bajada en el

pin de RESET del sistema o generar un evento de excepción por

interrupción en el módulo RTC, siempre y cuando esté habilitado.

También, al salir del modo STOP2, la máquina ejecuta un estado de POR

(Power On Reset) conformado por los siguientes eventos:

- Todos los módulos de control y los registros de estado son

inicializados por el controlador de manejo de la potencia, por el

RTC y por el buffer de trazo del depurador (Debug Trace Buffer).

Más adelante, en el texto, serán tratados otros registros afectados

por este evento.

- La función de RESET por LVD será habilitada y la CPU se

quedará en estado de RESET si el voltaje de la fuente VDD queda

por debajo del voltaje de comparación (LVD trip point).

- La CPU comienza un proceso de excepción por RESET,

realizando la captura de los vectores en las direcciones

Hardware

32

0x(00)00_0000 y 0x(00)00_0004.

Adicionalmente la bandera PPDF del registro SPMSC2 es puesta a “1”.

Esta bandera es servida para que el usuario pueda ejecutar una rutina de

recuperación por salida del modo STOP2.

Para mantener el estado de los pines de I/O antes de entrar al modo

STOP2, es necesario recuperar su estado desde la memoria RAM hacia

los registros de los puertos. Esta acción exige que se escriba un “1”, antes

de la recuperación, sobre el bit PPDACK del registro SPMSC2. En caso

de no escribirse un “1” sobre el bit PPDACK, el estado de los pines I/O

será asumido como el indicado para un RESET normal o por defecto.

Para aquellos pines que están trabajando como servicio a los módulos, es

necesario reconfigurar el periférico antes de escribir en el bit PPDACK.

Si en el modo STOP2 se tiene la opción de oscilador para bajo rango (bit

RANGE = 0 del registro ICSC2), como reloj para el RTC, es necesario

reconfigurar el registro ICSC2 antes de escribir en el bit PPDACK. Para

deshabilitar el reloj en el modo STOP2, es necesario conmutarse al modo

FBI o FEI del módulo SCI, antes de ejecutar la instrucción STOP.

o Modo STOP3: La tabla 2 detalla la forma de ingresar al modo STOP3,

en donde el estado de todos los registros internos, el contenido de la

memoria RAM y el estado de los pines I/O, se mantienen. El regulador

interno entra a operar en modo de standby.

Para salir de este modo, es necesario introducir un flanco de bajada en el

pin de RESET del sistema o generarse un evento de excepción por

interrupción de los siguientes módulos: RTC, ADC, ACMP, IRQ, SCI o

KBI. Si se sale del modo STOP3 vía evento de RESET, el MCU es

reinicializado y las operaciones son resumidas después de cargarse el

vector de RESET. Si se sale del modo STOP3 vía evento de excepción

por fuente de interrupción, el MCU cargará el vector adecuado,

dependiendo del módulo que generó la interrupción.

Hardware

33

o Modo STOP4: A diferencia de los modos STOP2 y STOP3, en este

modo el regulador trabaja a plena regulación. Este modo es también

llamado modo HALT y está relacionado directamente con la entrada a

modo BDM desde STOP o por un evento de LVD desde STOP.

Si el bit ENBDM está en “1” cuando la CPU ejecuta la instrucción

STOP, el sistema suministra reloj a la lógica de control del modo

background (BDM) de modo que ésta permanece activa durante el modo

STOP. Si el usuario intenta entrar a STOP2 o STOP3 cuando el bit

ENBDM está en “1”, el sistema queda en STOP4 (ver Tabla 2 para

detalles).

El ingreso a este modo también se obtiene si los bits LVDE o LVDSE del

registro SPMSC1 están en “1” y se presenta un evento por de bajo voltaje

con el módulo LVD, previamente habilitado. Es importante anotar que el

LVD trabajará correctamente si el regulador interno se encuentra

operando a plena regulación, lo cual descarta los modos STOP2 y STOP3

para esta condición. El LVD puede generar un evento de excepción de

RESET o de interrupción.

Para salir del modo STOP4 es necesario que se produzca un evento de

RESET o alguna de las siguientes excepciones de interrupción: RTC,

LVD, LVW, ADC, ACMP, IRQ, SCI o KBI.

3.1.4 Registros de la CPU

Heredando de la máquina M68000, la arquitectura ColdFire® V1 no especifica

registros acumuladores ni registros punteros (índices o bases), para la manipulación de

datos y decodificación de las instrucciones en memoria. Esta arquitectura contiene un

juego de registros generales, que cumplen con funciones de manipulación de datos y

direccionamiento de memoria llamados los Dn y An, respectivamente.

Hardware

34

El modelo de programación depende del concepto de nivel de privilegio, que el

programador elige de la máquina. Existen dos niveles de privilegio llamados nivel de

usuario y nivel de supervisor, que a continuación se describen.

• Registros para nivel de supervisor únicamente: Están restringidos para el

software de control de programa, en donde son implementadas funciones

restringidas sobre la operación del sistema, funciones de control sobre los pines

I/O y manipulación de la memoria. Los registros relacionados con el nivel de

supervisor son:

o Registro de Estado (SR: State Register): Utilizado para almacenar el

estado del procesador y que a su vez incluye:

- El registro CCR (Code Condition Register), que no es más que

el registro de las banderas principales de la CPU.

- Los bits de máscara de prioridad para los eventos de excepción

por interrupción.

- Otros bits de control en el nivel de supervisión.

o Registro de Configuración de la CPU (CPUCR: CPU Configuration

Register): Este registro suministra al nivel de supervisor la opción de

configuración de funciones del núcleo. Ciertas características del

hardware pueden ser habilitadas o inhibidas de forma individual, según

sea el valor de los bits del CPUCR

o Registro Base a Vector (VBR: Vector Base Register): Este registro

contiene la dirección base a los vectores de excepción localizados en la

memoria. Para acceder a la tabla de vectores, el desplazamiento de un

vector es adicionado al VBR. Para los procesadores ColdFire®, los 20

bits de menor peso del VBR no son utilizados. Esto fuerza a que la tabla

de vectores esté alineada con 16 bloques de 1MB

Los 8 bits superiores del registro VBR son forzados a cero debido a que

el núcleo del ColdFire® direcciona en 24 bits, es decir hasta 16 MB. El

VBR puede ser utilizado para relocalizar la tabla de vectores de

Hardware

35

excepción, desde su dirección inicial dentro de la FLASH

(0x(00)00_0000) hacia la base de la RAM (0x(00)80_0000), si fuera

necesario.

• Registros para nivel de supervisor y usuario: Se acceden desde el nivel de

supervisor o usuario, sin ninguna restricción. Estos registros son:

o Registros de Dato (D0 – D7): Estos registros son para hacer

operaciones sobre datos en formatos de 8, 16 o 32 bits. También, estos

registros pueden ser usados como registro índice.

Ante un evento de excepción por RESET, los registros D0 y D1 se

precargan con un valor de configuración del hardware implementado en

el núcleo ColdFire® V1.

o Registros de Dirección (A0 – A6): Estos registros son usados como

punteros pila por software, registro índice o registros base a direcciones.

También, estos registros pueden ser usados como registros tipo dato para

operaciones de 16 o 32 bits

o Puntero a Pila del Usuario y el Supervisor (A7 y OTHER A7): El MCU

ColdFire® V1 soporta dos punteros a pila de manera independiente. El

puntero a pila para el nivel de supervisor es conocido como SSP

(Supervisor Stack Pointer). Para el nivel de usuario el puntero a pila es

USP (User Stack Pointer).

El modelo de programación del BDM soporta lecturas y escrituras

directas sobre el SSP y el USP, siendo responsabilidad del sistema de

desarrollo externo, basado en el estado del bit S del registro SR, hacer la

elección apropiada.

o Registro de Código de Condiciones (CCR: Condition Code

Register):Configura el byte de menor peso del registro SR e informa

sobre el resultado de operaciones aritméticas y lógicas de la CPU

Hardware

36

o Contador de Programa (PC: Program Counter): Este registro contiene

la dirección de la siguiente instrucción a ser ejecutada (ver Figura 5.10).

Durante la ejecución de una instrucción, el procesador incrementa

automáticamente la dirección del PC (el incremento no necesariamente es

1, depende de la posición de la siguiente instrucción) o localiza un nuevo

valor de dirección en el PC, si se trata de un salto, llamado a subrutina o

atención a un proceso de excepción.

El PC será cargado durante el proceso de excepción por RESET con el

contenido de la dirección 0x(00)00_0004 (recordar que la carga es en

modo big endian).

3.2 Módulo LCD

La pantalla se trata de un módulo LCD ST7066U, cuyo fabricante es Powertip

Technology Corporation, de 4 líneas de 20 caracteres que va alimentado a 5 V.

Figura 5: Módulo LCD ST7066U

Hardware

37

La pantalla cuenta con 16 patas, de las cuales, y según el manual que se nos ha

facilitado, sólo 14 de ellas cuentan con una funcionalidad concreta que pasamos a

detallar a continuación:

Pin Símbolo Descripción

1 Vss Tierra de alimentación

2 Vdd Alimentación de +5V

3 V0 Contraste del cristal líquido. Normalmente se conecta a un

potenciómetro a través del cual se aplica una tensión variable

entre 0 y +5V que permite regular el contraste del cristal líquido.

4 RS Selección del registro de control/registro de datos:

RS=0 Selección del registro de control

RS=1 Selección del registro de datos

5 R/W Señal de lectura/escritura

R/W=0 El Módulo LCD es escrito

R/W=1 El Módulo LCD es leído

6 E Señal de activación del módulo LCD:

E=0 Módulo desconectado y no funcionan las demás señales

E=1 Modulo conectado

7-14 D0-D7 Bus de datos bidireccional. A través de estas líneas se realiza la

transferencia de información entre el módulo LCD y el sistema

informático que lo gestiona

Tabla 3: Descripción de los pines del módulo LCD