+ All Categories
Home > Documents > Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Date post: 21-Oct-2015
Category:
Upload: edwin-javier-garavito-hernandez
View: 32 times
Download: 1 times
Share this document with a friend
Popular Tags:
62
Descripción General de un Microcontrolador (Módulos de Comunicación) Página 1 CeTAD Facultad de Ingeniería - UNLP Descripción General de un Microcontrolador (Módulos de Comunicación) (Basado en Freescale HC08 y HCS08) Cátedra de Circuitos digitales y Microprocesadores Autores: Ing. Jorge R. Osio Ing. Luis Antonini Ing. Walter Aróztegui Ing. José A. Rapallini Septiembre de 2011 Versión 1.0
Transcript
Page 1: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 1

CeTAD – Facultad de Ingeniería - UNLP

Descripción General de un

Microcontrolador

(Módulos de Comunicación)

(Basado en Freescale HC08 y HCS08)

Cátedra de Circuitos digitales y Microprocesadores

Autores:

Ing. Jorge R. Osio

Ing. Luis Antonini

Ing. Walter Aróztegui

Ing. José A. Rapallini

Septiembre de 2011 Versión 1.0

Page 2: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 2

INDICE.

1. Introducción

1.1. Módulos de Comunicación disponibles en Microcontroladores

1.2. Módulos Específicos de la Familia HCS08 1.2.1. SCI – Serial Communications Interface

1.2.2. SPI – Serial Periferal Interfaz

1.2.3. IIC – Inter-Integrated Circuits

1.2.4. USB – Universal Serial Bus

2. Interfaz de Comunicación Serie (SCI)

2.1. Descripción del Protocolo 2.1.1. Formato de Transmisión

2.1.2. Detección de error de Trama

2.2. Características del Módulo SCI

2.3. Descripción de la comunicación serie mediante el Módulo SCI

2.4. Diagrama en Bloques del Transmisor y Receptor

2.5. Registros de Configuración del SCI 2.5.1. Registros SCI de Baud Rate

2.5.2. Registro de Control 1 (SCIxC1)

2.5.3. Registro de Control 2 (SCIxC2)

2.5.4. Registro de estados 1 (SCIxS1)

2.5.5. Registro de estados 2 (SCIxS2)

2.5.6. Registro de Control 3 (SCIxC3)

2.5.7. Registro de Datos (SCIxD)

3. Interfaz de Comunicación Serie (SPI)

3.1. Descripción del Protocolo SPI

3.1.1. Breve repaso de las comunicaciones seriales sincrónicas

3.2. Características Principales del Módulo SPI

3.3. Descripción funcional del módulo SPI 3.3.1. Modo Master

3.3.2. Modo Slave

3.4. Diagrama en bloques

3.5. Registros de configuración

Page 3: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 3

3.5.1. Registro de control 1 (SPIxC1)

3.5.2. Registro de control 2 (SPIxC2)

3.5.3. Registro de Baud rate (SPIxBR)

3.5.4. Registro de Estados (SPIxS)

3.5.5. SPI Data Registers (SPIxDH:SPIxDL)

3.5.6. SPI Match Registers (SPIxMH:SPIxML)

4. Interfaz I2C (Inter – Integrated circuit)

4.1 Descripción del protocolo I

2C

4.2. Descripción del módulo I2C en el HC9S08

4.3. Diagrama de Bloques del Módulo I2C

4.4. Registros asociados al módulo I2C

4.4.1. Registro de dirección (IICA)

4.4.2. Registro divisor de frecuencia del reloj (IICF)

4.4.3. Registro de control 1 (IICC1).

4.4.4. Registro de estado (IICS).

4.4.5. Registro de datos (IICD)

4.4.6. Registro de control 2 (IICC2)

4.5. Otras funciones importantes del módulo IIC

5. Universal Serial Bus (USB)

5.1. Prestaciones del protocolo

5.2. Principales características 5.2.1. Implementación Física

5.2.1.1. Aspecto eléctrico

5.2.2. Velocidad de Transferencia

5.2.3. USB On-The-Go

5.2.4. Componentes del Bus

5.3. Elementos de una transferencia USB. 5.3.1. Endpoints

5.3.2. Pipes.

5.3.3. Tipos de transferencias

5.3.4. Trasferencias y transacciones.

5.3.5. Características de un Bloque en una transferencia

5.3.6. Fases de una transacción.

5.3.7. Chequeo de error.

5.4. Enumeración de dispositivos. 5.4.1. Proceso de enumeración.

Page 4: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 4

5.4.2. Descriptores

5.5. Registros asociados al módulo USB

5.5.1. Registro del ID del periférico (PER_ID)

5.5.2. Registro de ID complementario (ID_COMP)

5.5.3. Registro de la revisión del periférico(REV)

5.5.4. Registro de información adicional del periférico (ADD_INFO)

5.5.5. Registro del estado de la interrupción en modo OTG

(OTG_INT_STAT)

5.5.6. Registro del control de la interrupción en modo OTG

(OTG_INT_EN)

5.5.7. Registro de estado de interrupción (OTG_STAT)

5.5.8. Registro de control OTG (OTG_CTRL)

5.5.9. Registro de estado de interrupción (INT_STAT)

5.5.10. Registro de habilitación de interrupciones (INT_ENB)

5.5.11. Registro de estado de interrupción por error (ERR_STAT)

5.5.12. Registro de habilitación de interrupción por error (ERR_ENB)

Apéndice

1. Módulo Serial en la Familia HC908

1.1. Características

1.2. Descripción de la comunicación serie [2]

1.3. Registros I/O del SCI 1.3.1. Registo SCI de Baud Rate

1.3.2. Registro de Interrupciones y de configuración del Tx

1.3.3. SCI Status Register 1 (SCS1)

1.3.4. SCI Data Register (SCDR)

1.3.5. SCI Status Register 2 (SCS2)

Page 5: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 5

1. Introducción

Entre los módulos disponibles en las distintas familias de Microcontroladores se encuentra los

módulos que permiten implementar mediante la configuración de registros los protocolos de

comunicación más comunes en el diseño Digital.

1.1. Módulos de Comunicación disponibles en Microcontroladores

En la Actualidad la mayoría de los Microcontroladores contienen módulos para la

implementación de interfaces de comunicación tales como, SPI, SCI, I2C y USB. Adicionalmente,

algunas familias más potentes proveen interfaces Ethernet y CAN para el diseño de sistemas Más

avanzados. Todos estos dispositivos vienen provistos de Librerías específicas de Diseño que

felicitan la implementación del módulo.

1.2. Módulos Específicos de la Familia HCS08

Ente los módulos de comunicación más comunes en la Familia de Microcontroladores HCS08

enumeran, el SCI serial asincrónico, el SPI sería sincrónico, el I2C o IIC Inter-

Integrated Circuit y el USB (Universal Serial Bus). En este capítulo se tratarán estos módulos que

proveen una variedad de funcionalidades al microcontrolador, permitiendo su interacción con una

gran variedad de dispositivos.

1.2.1. SCI – Serial Communications Interface

La interfaz de comunicación serie es una interfaz asincrónica que permite envías datos entre

dispositivos en forma serie sobre una única línea de transmisión y una única línea de recepción. Su

característica principal es que la línea se encuentra normalmente en alto y cuando se desea enviar

información se debe enviar un bit de inicio “un cero lógico” y seguido de este los bits de datos.

1.2.2. SPI – Serial Periferal Interface

Esta interfaz permite enviar datos en forma serie, pero a diferencia de la anterior, requiere de

sincronismo para el envío de datos. Por lo que se utiliza una línea de clock para indicar cuándo se

enviará un dato, obviamente sincronizado con el clock.

Este protocolo permite comunicar un dispositivo Master con varios Slaves. Lo que quiere decir

es que el Master puede decidir con que dispositivo intercambiar datos, poniendo en cero la línea de

selección (CS – chip select) correspondiente al esclavo seleccionado.

1.2.3. IIC – Inter-Integrated Circuits

Esta interfaz es mucho más simple en cuanto a las líneas necesarias para su implementación,

pero mucho más compleja en cuanto a la configuración necesaria para el envío de datos. Se utilizan

solo 2 líneas para la implementación, una línea de clock para el sincronismo y una línea de datos.

Este protocolo permite múltiples Masters y múltiples Slaves. Cada Slave tiene asignada una

dirección específica, mediante la cual el Master dirigirá la información. Los paquetes a transmitir

siempre estarán formados por un byte de control en donde se indica la dirección del dispositivo

hacia el cual se le enviará el dato, seguido del byte de datos.

Page 6: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 6

1.2.4. USB – Universal Serial Bus

Esta interfaz es mucho más compleja que las anteriores. Es la interfaz por excelencia de las

computadoras actuales y de todos los dispositivos de última generación. Este protocolo es muy

eficiente para el envío de datos y requiere de un dispositivo Host que maneja la comunicación y de

uno o varios dispositivos Slaves que se conectan al host para iniciar una transferencia de datos. Este

protocolo permite la conexión de varios Slaves hacia el host mediante la utilización de un Hub

USB.

Una de las grandes ventajas de este protocolo es que cada dispositivo conectado se enumera

automáticamente indicando al Host sus características principales y permitiendo que este instale los

drives para permitir el correcto funcionamiento del dispositivo USB conectado.

Este protocolo tiene varios modos de transferencia, dependiendo del tipo de dispositivo que se

esté conectando y de su funcionamiento.

También se debe destacar que el protocolo soporta varias velocidades de comunicación y que las

velocidades más altas requieren un diseño de HW específico.

Para la comunicación requiere solo dos líneas de datos diferenciales, pero los paquetes de

comunicación son mucho más complejos que cualquiera de los protocolos anteriores.

Page 7: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 7

2. Interfaz de Comunicación Serie (SCI)

Este módulo no se encuentra en el HC908QY4, pero se encuentra en la mayoría de los MCUs de

la Familia HC908 ([3], [4]), cuya descripción se realiza en el Apéndice 1. En este Capítulo se

describe el protocolo serie asincrónico y la descripción de Módulo SCI que lo implementa en toda

la familia HCS08.

2.1. Descripción del Protocolo.

El protocolo serial asincrónico SCI utiliza 2 líneas, una para transmisión Tx y una para recepción

RX. Las velocidades de transmisión más comunes son: 1200, 2400, 4800, 9600, 19200, 38400,

57600 y 115200 baudios.

Figura 1. Modos de transmisión

2.1.1. Formato de Transmisión

El protocolo SCI usa el formato estándar de transmisión non-return-to-zero (NRZ), que consiste

en un bit de inicio seguido de 8 bits de datos y un bit de parada. Esto es comúnmente referenciado

como Formato 8-N-1 (8 bits de datos, sin bit de paridad, un bit de parada). El dato es transmitido y

recibido comenzando por el bit menos significativo (LSB). Cada bit tiene una duración Tp que

define el Baud Rate (tasa de baudio).

Figura 2. Formato de transmisión

tp = periodo de un bit = 1/ tasa de baudio

La comunicación serie trabaja con la línea en alto (idle line) cuando no hay transferencia de

datos, y el bit de inicio es un cero lógico. Cada bit de dato puede ser ya sea un uno o un cero lógico.

El bit de parada es un uno lógico. El bit de inicio, el bit de parada y cada bit de dato constituyen una

trama de datos, como se muestra en la Figura 2.

En la Figura 1 se muestran los distintos modos de transmisión. En la operación Half-duplex, solo

un nodo transmite a la vez. El dispositivo no puede recibir mientras está transmitiendo, y no puede

Page 8: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 8

transmitir mientras está recibiendo. La implementación del protocolo por software debe realizarse

en modo Half-duplex, por causa de la secuencialidad del software. Esta incapacidad es una

desventaja en comparación con el Hardware SCI, que puede transmitir y recibir al mismo tiempo

por ser concurrente. Esto se conoce como sistema full duplex.

2.1.2. Detección de error de Trama

El bit de parada está definido como un uno lógico, si el bit de parada recibido es un cero, quiere

decir que ocurrió un error de Trama.

2.2. Características del Módulo SCI

• Full duplex, Alta Velocidad, asincrónico, programable de 8 o 9 bit de largo de caracter.

• Dos métodos de “receiver wakeup”.

• Pedidos de Interrupción separados para Rx y Tx.

• Habilitación separada del Transmisor y el Receptor.

• Polaridad programable de la salida del Transmisor.

•Operación dirigida por interrupciones con ocho Flags de interrupción.

Transmitter Empty

Transmission Complete

Receiver Full

Idle Receiver Input

Receiver Overrun

Noise Error

Framing Error

Parity Error

•Modo de operación “Low power”

•Detección de Error de frame en el receptor

•Baud rate programable

•Chequeo de Paridad por Hardware

2.3. Descripción de la comunicación serie mediante el Módulo SCI

Utiliza el sistema doble buffer, como muestra la figura 3. El flag SCTE se setea cada vez que un

nuevo dato es transferido desde el buffer TDR al “shift register” de transmisión serie. El flag SCRF

se setea cada vez que un nuevo dato es transferido desde el “shift register” al buffer RDR. El

registro SCDR es un solo registro que al escribirlo, se escribe el buffer TDRx y al leerlo, se lee el

buffer RDRx.

Page 9: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 9

Figura 3. Sistema de comunicación SCI doble buffer.

Se pueden seleccionar 2 formatos de datos diferentes a transmitir, uno de ellos es de 8 bits

(Figura 4), donde hay un bit de inicio, un bit de stop y 8 bit de datos. El otro Formato es de 9 bits

(Figura 5), con 1 bit de inicio, un bit de stop, un bit de paridad extra u otro stop y 8 bit de datos.

Figura 4. Formato de datos de 8 bits.

Figura 5. Formato de datos de 9 bits.

Caracteres de Datos Especiales:

Break - No tiene bits de Start o Stop, existe como un “cero” lógico por un tiempo de 10 ó 11 bit

(Formato de Datos de 8 o 9 bits respectivamente)

Idle - No tiene bits de Start o Stop, existe como un “uno” lógico por un tiempo de 10 ó 11 bit

(Formato de Datos de 8 o 9 bits respectivamente)

Preámbulo - Un caracter “idle” de sincronismo

Page 10: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 10

2.4. Diagrama en bloques del Transmisor y Receptor

El diagrama de transmisión de la figura 6 muestra como el dato almacenado en el buffer SCID se

envía a un registro de desplazamiento para ser transmitido por el puerto de transmisión TXD.

También se observa un bloque de Control, desde donde se envían los requerimientos de las

interrupciones seleccionadas y se selecciona la velocidad de transmisión “Baud rate”.

Figura 6. Diagrama en bloques del transmisor

La Figura 7 muestra el diagrama en bloques receptor, en donde los datos recibidos por el registro

de desplazamiento son almacenados en el buffer SCID. El bloque receptor también tiene una lógica

de Hardware para el chequeo de error de paridad, en donde si se detecta error en la paridad, se envía

un aviso al transmisor pidiendo la retransmisión de datos. Adicionalmente se cuenta con la lógica

para enviar el requerimiento de interrupción al microprocesador, por la llegada de un dato al puerto

RX.

Page 11: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 11

Figura 7. Diagrama en bloques del receptor.

2.5. Registros de Configuración del SCI

Ocho registros I/O controlan y monitorean la operación del SCI:

• SCI Control Register 1 (SCIxC1)

Page 12: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 12

• SCI Control Register 2 (SCIxC2)

• SCI Control Register 3 (SCIxC3)

• SCI Status Register 1 (SCIxS1)

• SCI Status Register 2 (SCIxS2)

• SCI Data Register (SCIxD)

• SCI Baud Rate Register (SCIxBDH y SCIxBDL)

2.5.1. Registros SCI de Baud Rate

Este par de registros permite seleccionar el baud rate mediante el control del divisor de

preescaler. Para actualizar los 13 bits del seteo de baud rate [SBR12:SBR0], primero se escribe el

SCIxBDH para almacenar la parte alta del nuevo valor y luego escribe el SCIxBDL.

Figura 8. Registro de selección de tasa de baudios (SCIxBDH).

LBKDIE (Habilita interrupción por detección de break LIN): Si este bit está en 1 lógico, Se

produce un requerimiento de interrupción por HW cuando el flag LBKIF está en 1.

RXEDGIE (Habilita interrupción por detección por flanco activado por entrada RxD): Si

este bit está en 1, se produce un requerimiento de interrupción por HW cuando el flag RXEDGIF

está en 1.

Figura 9. Registro de selección de tasa de baudios, parte baja (SCIxBDL).

SBR[ bits (12:0)](Divisor de módulo de Baud rate): estos 13 bits representan el valor de BR, que

representa el divisor del módulo generador de baud rate. Cuando BR=0, el generador de baud rate

es deshabilitado a bajo consumo. Cuando BR toma un valor entre 1 y 8191, el baud rate será SCI =

BUSCLK/(16xBR).

2.5.2. Registro de Control 1

Este registro es usado para configurar varias características de control del sistema SCI.

Figura 10. Registro de Control 1 - SCIxC1

Page 13: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 13

LOOPS: Selección del modo loop. Este bit en 1 conecta el bus RX con el TX

SCISWAI: detiene el SCI en modo wait. Este bit en 1 detiene el clock SCI en modo wait

RSRC: selección de fuente de recepción. Este bit en 1 conecta el pin TxD a la salida del transmisor

y a la entrada del receptor.

M: Selección de modo 8 bit o 9 bit de datos. Si este bit está en 1 se selecciona el modo de 9 bits de

datos.

WAKE: selecciona el método de recepción wakeup.

ILT: Selección de tipo de línea Idle.

PE: Habilita paridad. El bit en 1 habilita paridad

PT: Selección del tipo de paridad. El bit en 1 selecciona la paridad impar.

2.5.3. Registro de Control 2

Este registro puede ser leído o escrito en cualquier momento.

Figura 11. Registro de Control - SCIxC2

TIE: Habilita la interrupción de transmisión

TCIE: Habilita interrupción por transmisión completa

RIE: Habilita la interrupción del recepto

ILIE: habilita la interrupción de línea IDLE

TE: Habilita el Transmisor

RE: Habilita Recepción

RWU: Control wakeup del receptor

SBK: envía un break

2.5.4. Registro de Estados 1

Este registro tiene 8 flags de solo lectura.

Figura 12. Registro de Estados - SCIxS1.

TDRE: Flag de registro de datos del transmisor vacio

TC: Flag de transmisión completa

RDRF: Flag de registro de datos del receptor vacio

IDLE: Flag de línea IDLE.

OR: Flag de sobre ejecución del receptor.

NF: Flag de ruido

Page 14: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 14

FE: Flag de error de Frame

PF: Flag de error de paridad

2.5.5. Registro de Estados 2

Este registro tiene un flag de estados de solo lectura.

Figura 13. Registro de Estados - SCIxS2.

LBKDIF: Flag de interrupción de detección de break LIN

RXEDGIF: Flag de interrupción activo por flanco en el pin RxD

RXINV: Inversión de datos del receptor

RWUID: Detecta activación de IDLE en el receptor

BRK13: Generación de break de carácter extensa

LBKDE: Habilita detección de break LIN

RAF: Flag de receptor activo

2.5.6. Registro de Control 3 (SCIxC3)

Figura 14. Registro de Control - SCIxC3.

L8: Recepción de 9 bits de datos

T8: Transmisión de 9 bits de datos

TXDIR: Configuración de dirección del pin TxD en el modo simple línea

TXINV: Inversión de datos de Transmisión.

ORIE: Habilitación de interrupción por sobre escritura

NEIE: Habilitación de interrupción por error de ruido

FEIE: Habilitación de interrupción por error de Frame

PEIE: Habilitación de interrupción por error de paridad

2.5.7. Registro de Datos (SCIxD)

Este registro cumple dos funciones diferentes. Cuando se lee devuelve el valor del buffer de

recepción RX. Cuando se escribe guarda el valor en el Buffer de transmisión TX.

Page 15: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 15

Figura 15. Registro de Datos (SCIxD).

Page 16: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 16

3. Interfaz de Comunicación Serie (SPI)

3.1. Descripción del Protocolo SPI

La interfaz periférica serie es una interfaz sincrónica master-slave que se basa en un registro de

desplazamiento de 8 bits. El master SPI genera una señal de clock usada por todos los dispositivos

SPI para coordinar la transferencia de datos. Como muestra la Figura 16, el dispositivo periférico

conectado al SPI también incluye un registro de desplazamiento. Juntos, los 2 registros de

desplazamiento de 8 bits son conectados desde un registro de rotación a izquierda de 16 bits. Una

transferencia de datos consiste de un desplazamiento de 8 bits, el cual resulta en una transferencia

de datos entre el dispositivo master y el slave. Muchos dispositivos, tales como los conversores AD,

conversores DA y Chips de memoria Flash, SRAM, FRAM, SD, etc, poseen interfaz SPI.

Figura 16. Diagrama de conexión Master – Slave.

3.1.1. Breve repaso de las comunicaciones seriales sincrónicas

Una comunicación sincrónica es aquella en donde los datos se envían sincronizados con una

señal de clock, ya sea como una línea independiente o embebida dentro de la misma.

Generalmente existe un dispositivo maestro, que es el generador de la sincronía de la

comunicación. De tal manera que el reloj es generado en una línea independiente del sistema y es el

maestro quien lo presenta en el canal de comunicación.

Los demás dispositivos del sistema actúan como esclavos de la comunicación y la señal de reloj

entra por un pin a cada uno de ellos, estableciendo el sincronismo de los bits de información que

llegan o salen.

Otros sistemas utilizan la misma señal de datos, para generar el sincronismo de los bits. La

Figura 17 ilustra el protocolo Manchester, del cual se puede extraer el reloj del sistema.

Basta con tomar cualquier flanco de la señal de clock para lograr una relación entre, (utilizando

el flanco) el reloj y los datos.

Page 17: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 17

Figura 17. Sincronismo entre señal de clock y datos.

En los sistemas seriales sincrónicos para la interconexión de periféricos, se manejan distancias

cortas y modos de un solo maestro y múltiples esclavos.

Un maestro podría perder su función y convertirse en un esclavo, mediante un mecanismo de

arbitraje de bus. De esta manera cualquier dispositivo podría ser maestro en un momento

determinado.

Las tramas de comunicación son de variada presentación y algunas sólo involucran la carga útil,

sin adicionar bits que permitan el handshaking (coordinación) entre esclavos y maestro. Para estos

protocolos deberá existir una línea tanto para el dato saliente (TxD) como para el dato entrante

(RxD), así como la posibilidad de hacer comunicación simultánea y bidireccional (Full Duplex)

(Ejemplo: SPI).

Figura 18. Diferentes Configuraciones en el envío de datos durante el primer flanco de clock

Page 18: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 18

Figura 19. Diferentes Configuraciones en el envío de datos durante el segundo flanco de clock.

En la figura 18 se muestra la configuración del módulo en donde el dato a enviar se mantiene

estable durante el primer flanco de clock y el siguiente bit se envía en el segundo flanco de clock,

tenga este cualquiera de las 2 polaridades posibles (línea normalmente en alto o en bajo).

En la figura 19 se muestra la configuración del módulo en donde cada dato se establece en el

primer flanco del pulso de clock y el dato se mantiene estable durante el segundo flanco del clock.

3.2. Características del Módulo SPI

El modulo SPi incluye las siguientes características:

• Operación en modo master o slave

• Modo bidireccional en Full-duplex o simple línea

• Tasa de bit de transmisión programable

• Registro de datos de transmisión y recepción de Doble buffer

• Opciones de polaridad y fase del clock

• Salida de selección de slave

• Flag de modo de error por falla con posibilidad de interrupción de CPU

• Control de operación de SPI durante el modo wait

• Desplazamiento de datos primero MSB o primero LSB seleccionable

• Longitud de datos de transmisión programable a 8 o 16 bits

3.3. Descripción Funcional del módulo SPI

El módulo se habilita seteando el bit “SPI enable” (SPE) en el Registro “SPI Control Register

1”. Mientras el bit SPE esté seteado, los cuatro pines asociados al módulo SPI cumpliendo las

funciones de:

• Selector de esclavo (SS)

• clock serial (SPSCK)

• Master out/slave in (MOSI)

Page 19: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 19

• Master in/slave out (MISO)

Una transferencia SPI se inicia en el dispositivo master leyendo el registro de estados SPI

(SPIxS) cuando SPTEF = 1 y escribiendo el dato en el buffer de transmisión de datos (escribiendo

SPIxDH:SPIxDL). Cuando se completa una transferencia, el dato recibido se almacena en el buffer

de datos recibidos. Los Registros SPIxDH:SPIxDL actúan como el buffer de datos de recepción SPI

cuando es leido y como el buffer de datos de transmisión SPI cuando se escribe.

El bit de control de fase de clock (CPHA) y el bit de control de polaridad de clock (CPOL)

ubicados en el registro de control 1 SPI (SPIxC1) permiten seleccionar uno de los cuatro posibles

formatos de clock a ser usados por el sistema SPI. El bit CPOL selecciona una inversión o no de

polaridad en el clock. El bit CPHA se usa para coordinar dos protocolos para el muestreo de datos

sobre los flancos impares llamados SPSCK o sobre los flancos pares llamados SPSCK.

El SPI puede configurarse como master o como slave. Cuando se setea el bit MSTR del registro

de control 1, se habilita como master, cuando se borra el bit MSTR, se selecciona el modo slave.

3.3.1. Modo Master

El Módulo SPI opera en modo master cuando el l bit MSTR se encuentra seteado. Solo en modo

master se pueden iniciar transmisiones. Una transmisión se inicia leyendo el registro SPIxS

mientras el SPTEF = 1 y escribiendo el registro de datos SPI. Si el registro de desplazamientos está

vacío, el byte se transfiere inmediatamente al a este registro para ser enviado.

El dato comienza a desplazarse hacia el pin de salida MOSI bajo la referencia del clock de

control serial.

• SPSCK: Los bits de selección de baud rate SPR2, SPR1, y SPR0 conjuntamente con los bits de

preselección de baud rate SPPR2, SPPR1, y SPPR0 en el registro de control generan un baud rate y

determinan la velocidad de transmisión. El pin SPSCK es la salida de clock SPI. A través de este

pin el generador de baud rate del master controla el registro de desplazamiento del periférico slave.

• Los pines MOSI, MISO en modo master, tienen la función de pin de datos de salida (MOSI) y

pin de datos de entrada (MISO), esto está definido por los bits de control SPC0 y BIDIROE.

• El pin SS cuando los bits MODFEN y SSOE están seteados, se configura como selector de

slave de salida. El pin SS de salida se pone en bajo para una transmisión y en alto cuando la línea

está en estado desocupado “idle”.

Si el bit MODFEN está seteado y el SSOE borrado, el pin SS se configura como entrada para

detectar el modo de error por falla en la transmisión.

Si la entrada SS está en bajo, indica un error por falla error cuando otro master trata de manejar

las líneas de MOSI y SPSCK. En este caso, el SPI cambia a modo slave, borrando el bit MSTR y

deshabilitando el buffer de salida slave MISO.

3.3.2. Modo Slave

El SPI funciona en modo slave cuando el bits MSTR en el registro de control 1 está borrado.

• SPSCK: En modo slave, SPSCK es el clock entrada que llega desde el master.

• Pines MISO, MOSI: En modo slave, el pin (MISO) tiene la función de salida de datos y el pin

(MOSI) tiene la función de entrada de datos, esto se determina por los bits SPC0 y BIDIROE en el

registro de control 2.

• Pin SS: El pin SS es la entrada de selección del slave. Antes de una transmisión de datos, el pin

SS del slave debe estar en bajo y debe mantenerse en este estado hasta que finalice dicha

transmisión. Si el pin SS está en alto, el SPI se fuerza a estado idle.

Page 20: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 20

La entrada SS también controla el pin de salida de datos seriales, Si el SS está en alto (no

detectado), el pin de salida de datos estará en alta impedancia, y, si SS está en bajo el primer bit en

el registro de datos SPI se enviará a al pin de salida de datos seriales. También si el SS del slave

está en alto, se ignora la señal de clock enviada por el master.

Con el sistema de varios slaves, es posible implementar una comunicación serial enviando a

varios slaves la misma transmisión desde el master, aunque el master no recibirá información de

todos los slaves a la vez.

Si el bit CPHA en el registro de control 1 está borrado, un número impar de flancos sobre la

entrada SPSCK causará que el dato se mantenga en el pin de entrada de datos. Un número par de

flancos causará que el valor previamente almacenado desde el pin de entrada de datos seriales se

displace en el LSB o MSB del registro de desplazamientos del SPI, dependiendo del bit LSBFE.

Si se setea el bit CPHA, un numero par de flancos en la entrada del SPSCK causará que el dato

se mantenga en el pin de entrada de datos serie. Un número impar de flancos casará que el valor

previamente almacenándose displace desde el pin de entrada serie al LSB o MSB del registro de

desplazamientos, dependiendo del bit LSBFE.

Cuando el CPHA es seteado, el primer flanco se usa para enviar el primer bit de datos al pin de

salida serie. Cuando el CPHA es borrado y la entrada SS está en bajo (slave seleccionado), e primer

bit de datos del SPI se envía por el pin de salida de datos. Después del octavo (SPIMODE = 0) o el

dieciseisavo (SPIMODE = 1) deslazamiento, la transferencia se considera finalizada y el dato

recibido es transferido a registro de dat6s del SPI. Para indicar que la transferencia se completó, se

setea el flag SPRF en el Registro de estados del SPI.

Page 21: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 21

3.4. Diagrama en bloques

Figura 20. Diagrama en bloques del módulo SPI

3.5. Registros de configuración

3.5.1. Registro de control 1 (SPIxC1)

Figura 21. Registro de control 1 - SPIxC1

SPIE: Habilitación de interrupción (para SPRF y MODF)

SPE: Habilitación de sistema

Page 22: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 22

SPTIE; Habilitación de interrupción por transmisión

MSTR: Selección de modo Master/Slave

CPOL: polaridad de Clock

CPHA: Fase de clock

SSOE: habilitación de salida de selección de slave

LSBFE: primer bit LSB (dirección de desplazamiento)

Tabla 1. Bits de selección de modo Master o Slave MODFEN SSOE Modo Master Modo Slave

0 0 I/O de propósito general Entrada de selección de slave

0 1 I/O de propósito general Entrada de selección de slave

1 0 Entrada SS para modo falla Entrada de selección de slave

1 1 Salida SS automática Entrada de selección de slave

3.5.2. Registro de control 2 (SPIxC2)

Figura 22. Registro de control 2 (SPIxC2)

SPMIE: Habilitación de interrupción por coincidencia

SPIMODE: Modo 8 o 16 bits

MODFEN: Habilita función en modo falla como master

BIDIROE: habilita salida en modo bidireccional

SPISWAI: Stop en modo wait

SPC0: Control de pin 0

Tabla 2. Modos de Operación

Modo de Pin SPC0 BIDIROE MISO MOSI

Operación de Modo Master

NORMAL 0 X Entrada Master Salida Master

BIDIRECCIONAL 1 0 MISO no usado

por SPI

Entrada Master

1 Master E/S

Operación de Modo slave

NORMAL 0 X Salida Slave Slave

BIDIRECCIONAL 1 0 Entrada Slave MOSI no usado

por SPI 1 Slave E/S

Page 23: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 23

3.5.3. Registro de Baud rate (SPIxBR)

Tabla 3. Selección de baud rate de Transferencia

Figura 23. Registro de Baud rate (SPIxBR)

6:4 SPPR[2:0]: Preescalador Divisor de Baud Rate

2:0 SPR[2:0]: Divisor de Baud

Tabla 4. Divisor de Baud Rate SPR2:SPR1:SPR0 Divisor de tasa

0:0:0 2

0:0:1 4

0:1:0 8

0:1:1 16

1:0:0 32

1:0:1 64

1:1:0 128

1:1:1 256

Baud rate= CGMOUT/(2xBD)

3.5.4. Registro de Estados (SPIxS)

Figura 24. Registro de estados (SPIxS)

SPRF: Flag de buffer de lectura lleno

SPPR2:SPPR1:SPPR0 Preescalador Divisor

0:0:0 1

0:0:1 2

0:1:0 3

0:1:1 4

1:0:0 5

1:0:1 6

1:1:0 7

1:1:1 8

Page 24: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 24

SPMF: Flag de Match. Cuando el valor en el buffer de recepción coincide con el

valor en SPIMH:SPIML

SPTEF: Flag de buffer de transmisión vacio

MODF: Flag modo master por falla

3.5.5. SPI Data Registers (SPIxDH:SPIxDL)

Figura 25. Registro de Datos parte alta (SPIxDH)

Figura 26. Registro de Datos parte baja (SPIxDL)

En modo 8-bit, solo está disponible SPIxDL. La lectura de SPIxDH retornará todos ceros. La

escritura en SPIxDH será ignorada.

En modo 16-bit, leyendo cualquier byte (SPIxDH o SPIxDL) se guarda el contenido de ambos

bytes en el buffer en donde se mantiene hasta que se leo otro byte. Escribiendo cualquier byte

(SPIxDH o SPIxDL) se mantiene el valor en el buffer. Cuando ambos bytes han sido escritos, se

transferirá como un valor de 16 bits en el buffer de datos de transmisión.

3.5.6. Registros de Coincidencia (SPIxMH:SPIxML)

Figura 27. Registro de Coincidencia parte alta (SPIxMH)

Figura 28. Registro de Coincidencia parte baja (SPIxML)

En modo 8-bit, solo está disponible SPIxML. La lectura de SPIxMH retornará ceros. La

escritura a SPIxMH será ignorada.

En modo 16-bit, leyendo cualquier byte (SPIxMH o SPIxML) se mantiene el contenido

de ambos bytes en un bufferen donde se conservará hasta la lectura de otro byte.

Escribiendo cualquier byte (SPIxMH o SPIxML) se transfiere el valor a un buffer. Cuando

Page 25: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 25

ambos buffer hayan sido escritos, se transferirá el contenido como un valor a los registros

de coincidencia del SPI.

Page 26: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 26

4. Interfaz I2C (Inter – Integrated circuit)

4.1 Descripción del protocolo I

2C

Este sistema de comunicaciones fue desarrollado por Philips como un sistema multi-master, para la

conexión de periféricos a distancias relativamente cortas y velocidades de unos cientos de Kbps.

El protocolo se implementa sobre dos líneas, una línea de clock de sincronismo (SCL: Serial Clock)

y otra para los datos (SDA: Serial Data). Como los datos se transmiten por una sola línea, el

sistema es bidireccional del tipo maestro/esclavo.

Las Líneas de Clock SCL y de Datos SDA son manejadas por el master durante una comunicación

típica.

La Figura 29 muestra una trama, para la transmisión de datos en 8 bits (también existe en 10 bits).

En la trama se puede apreciar que el protocolo requiere una condición de inicio, seguido por los bits

de datos, después se presenta un bit para la señal de reconocimiento (ACK) y finalmente la

condición de stop.

En un Bus I2C típico cada esclavo tiene asignada una dirección de entre 7 y 10 bits que se usa para

seleccionar el esclavo con el que se desea entablar una comunicación.

Figura 29. Trama de una transmisión I

2C

Condición de start: La condición de inicio se produce mediante un flanco descendente en la Señal

SDA cuando la señal de clock SCL se encuentra en estado alto.

Bits de datos: Luego de haberse dado la condición de start, los bits de datos se transmiten

comenzando por el más significativo (MSb), manteniendo el valor del bit durante todo el periodo

alto de la señal de clock SCL. El cambio de bit se debe realizar durante el estado bajo de la línea de

clock o durante el flanco ascendente del mismo.

Bit de comando (R/W): Cuando se está direccionando el dispositivo con el cual se va a establecer

una comunicación I2C, este bit no pertenece al dato como tal, sino a la acción de escritura o lectura

sobre el dispositivo en cuestión (Lectura (R) = nivel alto y Escritura (W) = nivel bajo).

Bit de reconocimiento (ACK = Acknowledge): Este bit es verdadero en estado bajo y lo envía

quien recibe el dato.

Condición de stop: Se produce cuando estando la señal de SCL en estado alto, se presenta un

flanco de subida de la señal de SDA.

Dependiendo del tipo de transferencia que se desee realizar, las tramas I

2C se pueden configurar de

la siguiente manera:

Page 27: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 27

Transmisión de un byte de datos: La Figura 30 detalla las tramas para el envío de un byte hacia

un esclavo. En la primera trama la carga útil conforma la dirección de destino de la información.

También se especifica la acción sobre el esclavo, que en este caso detalla una escritura sobre el

destino (nivel bajo en el bit R/W).

La dirección del dispositivo puede estar representada en 8 o 10 bits, de tal manera que podría

existir un byte adicional para completar la dirección (este byte carecería de bit de start y de stop).

La segunda trama, carece de bit de start y representa el byte de Dato a transferir.

Figura 30. Envío de un Byte de Datos a una dirección de esclavo de 8 y 10 bits de

largo.

Envío de n bytes a un destino: La Figura 31 detalla las tramas para el envío de n bytes hacia un

destino. Es idéntico al caso anterior, sólo que los datos se presentan uno a continuación del otro.

Page 28: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 28

Figura 31. Envío de varios byte de datos a una dirección de esclavo de 8 y 10 bits de largo.

Lectura de un byte desde un dispositivo: La Figura 32 detalla las tramas para la lectura de un byte

desde un dispositivo. En este caso el bit de lectura/escritura (R/W) va al estado “1”. Las primeras

tramas envían la dirección del dispositivo a leer y las siguientes la acción de lectura sobre el mismo.

Figura 32. Lectura de un byte de datos enviado desde un dispositivo esclavo.

Lectura de n bytes desde un dispositivo: La Figura 33 detalla las tramas para la lectura de n bytes

desde un dispositivo.

Page 29: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 29

Figura 33. Lectura de n bytes de datos enviados desde u dispositivo esclavo.

La conexión de varios dispositivos en un bus I2C, obedece al modelo maestro/esclavo y puede

existir la posibilidad de que varios maestros manipulen el bus. Esto último se logra mediante un

mecanismo de arbitraje de bus definido para resolver conflictos de acceso cuando dos masters tratan

de acceder al bus simultáneamente. Para facilitar la conexión de múltiples masters, SCL y SDA son

líneas open-drain, lo que facilita el arbitraje y el control de flujo, que requieren pull-ups externos

para generar un estado lógico alto en la línea.

Todos los masters monitorean el bus y solo uno puede accede cuando la línea está desocupada

(idle) (cuando ambas líneas están en alto entre un bit de stop y uno de start). Si un master no está

manejando la línea SDA en bajo pero sensa que está en bajo, entonces interpreta que otro master

está usando el bus y se detiene la transmisión; en este caso el master perdió el arbitraje. De manera

similar, si un master sense que SCL está en bajo cuando debería estar en alto, esto indica que un

esclavo está extendiendo el clock para indicar que todavía no está listo para proceder con la

transferencia del siguiente byte, proveyendo un mecanismo de control de flujo básico.

La Figura 34 muestra una conexión maestro/esclavo I2C típica.

Page 30: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 30

Figura 34. Configuración maestro-esclavo Típica

4.2. Descripción del módulo I

2C en el HC9S08

Las características más importantes del módulo I

2C son:

o Trabaja hasta 100Kbps con máxima carga.

o El número máximo de dispositivos que se pueden conectar al bus I2C está limitado por la

capacitancia de carga máxima de 400pF.

o Compatible con el bus I2C estándar.

o Operación en modo multi-maestro.

o Hasta 64 frecuencias distintas de clock del maestro.

o Generación y detección de bit de aknnowledge, seleccionable por software.

o Posibilidad de generar una interrupción por:

_ La transferencia de cada byte.

_ Pérdida del arbitraje del bus por parte del maestro.

_ Identificación de un llamado a una dirección.

o Generación y detección de señal de start y stop.

Page 31: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 31

o Repetición de la señal de start.

o Detección de bus ocupado.

o Reconocimiento de llamado general.

o Extensión de la dirección a 10 bits.

4.3. Diagrama de Bloques del Módulo I2C

La Figura 35 detalla el diagrama en bloques del módulo I

2C. El dato en el módulo I

2C se recibe y

se envía sobre el mismo registro (configuración double buffered), el bloque shift register controla

esta función.

Figura 35. Diagrama en bloques funcional

4.4. Registros asociados al módulo I2C

4.4.1. Registro de dirección (IICA)

La Figura 36 muestra el registro de dirección del módulo IIC.

Page 32: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 32

Figura 36. Registro de direcciones

AD1:AD7: Bits que conforman la dirección baja del esclavo en un bus IIC.

4.4.2. Registro divisor de frecuencia del reloj (IICF) La Figura 37 ilustra sobre el registro para dividir la frecuencia del reloj de bus, que controla la tasa

de baudios del módulo I2C.

Figura 37. Registro divisor de Frecuencias

MULT: Bits para definir un factor multiplicador de la rata de baudios IIC.

00: Multiplica por 1

01: Multiplica por 2

10: Multiplica por 4

11: Reservado

ICR: Bits para definir la rata de baudios IIC. La siguiente ecuación define la tasa de baudios de una

comunicación IIC y los tiempos de las señales de start y stop.

Tasa de Baudios = Frecuencia del reloj de BUS / ( MULT x Divisor_SCL)

Tabla 5. Tabla de valores del divisor de frecuencias de bus

ICR (Hex) Divisor SCL ICR (Hex) Divisor SCL 00 20 20 160

01 22 21 192

02 24 22 224

03 26 23 256

04 28 24 288

05 30 25 320

06 34 26 384

07 40 27 480

08 28 28 320

09 32 29 384

0A 36 2A 448

0B 40 2B 512

0C 44 2C 576

0D 48 2D 640

0E 56 2E 768

0F 68 2F 960

Page 33: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 33

10 48 30 640

11 56 31 768

12 64 32 896

13 72 33 1024

14 80 34 1152

15 88 35 1280

16 104 36 1536

17 128 37 1920

18 80 38 1280

19 96 39 1536

1A 112 3A 1792

1B 128 3B 2048

1C 144 3C 2304

1D 160 3D 2560

1E 192 3E 3072

1F 240 3F 3840

4.4.3. Registro de control 1 (IICC1).

La Figura 38 ilustra sobre el registro de control 1 del módulo I2C.

Figura 38. Registro de control 1.

IICEN: Bit para habilitar la operación del módulo IIC.

0: Inhibe la operación del módulo IIC

1: Habilita la operación del módulo IIC

IICIE: Bit para habilitar un posible evento de interrupción del módulo IIC.

0: Inhibe la interrupción del módulo IIC

1: Habilita la interrupción del módulo IIC

MST: Bit para asignar la operación del módulo como maestro.

0: Modo esclavo

1: Modo Maestro

TX: Bit para seleccionar la dirección de la transferencia en modo maestro y esclavo. En modo

maestro este bit deberá estar de acuerdo con el tipo de transferencia requerida. Para ciclos de envío

de direcciones, este bit siempre estará en “1”. En caso de un direccionamiento sobre un esclavo,

este bit se llevará a “1”, vía software y depende del estado del bit SRW.

0: Receptor

1: Transmisor

TXACK: Bit para determinar el valor del espacio de bit dedicado al

acknowledge (ACK), en la recepción de el esclavo o el maestro.

0: Una señal de ACK es enviada fuera del BUS, después de recibirse un byte de dato

1: No se envía ACK como respuesta

RSTA: Bit para insertar un evento de start en el BUS, dada por el maestro. El maestro podría

perder el arbitramiento del BUS si inyecta esta señal en un momento no indicado.

Page 34: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 34

4.4.4. Registro de estado (IICS). La Figura 39 ilustra sobre el registro de estado del módulo IIC.

Figura 39. Registro de Estados

TCF: Bandera para indicar cuándo se ha completado la transferencia de un byte. Esta bandera se

aclara cuando se lee el registro de datos IICD, en modo receptor o cuando se escribe un nuevo dato

en el IICD, en modo transmisor.

0: Transferencia en progreso

1: Se ha completado una transferencia

IAAS: Esta bandera indica cuando un esclavo, solicitado por coincidencia en dirección, ha

respondido al llamado o cuando el bit GCAEN es “1” y un evento de llamada general ha sido

recibido. Escribir en el registro IICC1, aclara esta bandera.

0: No se ha dado un direccionamiento

1: Ha coincidido un direccionamiento

BUSY: Esta bandera indica el estado del BUS sin importar si se es maestro o esclavo. Esta bandera

es “1” cuando se ha detectado un evento de start y es “0” cuando se detecta un evento de stop.

0: El BUS está desocupado (IDLE)

1: El BUS está ocupado

ARBL: Esta bandera indica cuando un maestro ha perdido el arbitramiento del BUS. Esta bandera

se aclara escribiendo un “1” en ella.

0: Sistema en operación normal

1: Se ha perdido el arbitramiento

SRW: Cuando se está direccionando un esclavo, este bit indica el valor del bit R/W de la dirección

a la que se llama y que fue enviada por el maestro.

0: Esclavo recibiendo, el maestro escribe sobre el esclavo

1: Maestro recibiendo, el esclavo escribe sobre el maestro

IICIF: Este bit indica cuando hay una interrupción pendiente. Esta bandera se aclara escribiendo un

“1” en ella, durante la rutina a la atención de interrupción. Los eventos que ponen a “1” esta

bandera son:

_ Se ha completado la transferencia de un byte

_ Se ha dado una coincidencia en la solicitud de dirección sobre un esclavo

_ Se ha perdido el arbitramiento

0: No hay interrupción pendiente

1: Hay interrupción pendiente

RXAK: Bandera que indica que se ha dado una señal de acknowledge (ACK), desde el dispositivo

que ha recibido el dato enviado.

Page 35: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 35

0: Se recibió señal de ACK

1: No se recibió señal de ACK

4.4.5. Registro de datos (IICD)

La Figura 40 ilustra sobre el registro de datos del módulo I

2C. La lectura sobre este registro

devuelve el byte que acaba de llegar y la escritura deposita el byte siguiente a enviarse.

Figura 40. Registro de Datos

4.4.6. Registro de control 2 (IICC2)

La Figura 41 ilustra sobre el registro de control 2 del módulo IIC.

Figura 41. Registro de control 2

GCAEN: Bit para habilitar generación de una llamada general en el BUS IIC.

0: Inhibe una llamada general

1: Habilita una llamada general

ADEXT: Bit para determinar el formato de la dirección de los dispositivos.

0: Direcciones en 7 bits

1: Direcciones en 10 bits

AD8:AD10: Bits que configuran la parte alta de la dirección del dispositivo, en modo de 10 bits

4.5. Otras funciones importantes del módulo IIC

o Repetición de la condición de start: Esta propiedad del módulo IIC permite que se genere, en

cualquier momento, una condición de start sin necesidad de haber sucedido una condición de stop

anterior.

o Procedimiento de arbitraje: Esta propiedad permite que varios maestros estén conectados al

BUS IIC. Cuando dos o más maestros tratan de acceder al BUS al mismo tiempo, un proceso de

sincronización determinará si el maestro pierde esta propiedad.

Un maestro pierde el arbitramiento si este transmite un “1” mientras otro maestro está

transmitiendo un “0”, en ese momento el maestro perdedor se deberá conmutar como esclavo. Para

Page 36: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 36

este caso, la trama hacia el esclavo no llevará condición de stop. Esta acción es indicada por el bit

IICS[ARBL] = 1.

o Procedimiento de llamada general: Esta propiedad permite al maestro encuestar sobre la

presencia de un esclavo con una dirección determinada. Una llamada general se puede hacer en

formato de 7 o 10 bits de dirección.

Cuando un esclavo identifica que el llamado coincide con su propia dirección, el bit IICS[IAAS]

es puesto a “1” y el llamado deja de ser general.

Si la dirección llamada es la 0x00, se tratará entonces de una llamada general y el software del

usuario determinará la acción a tomar.

Si el bit IICC2[GCAEN] = 0, el bit de ACK no es devuelto y el dato es ignorado.

Page 37: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 37

5. Universal Serial Bus (USB)

Una interfaz para muchos dispositivos. Este protocolo es muy versátil para una variedad de

dispositivos periféricos. Dispositivos de almacenamiento, mouse, teclado, impresora, etc.

Configuración automática. Cuando se conecta el dispositivo a una PC, este es detectado

automáticamente, indicando a la PC que drivers necesita para su funcionamiento.

Cables estándar. Utiliza cables para conexión estándar y de variadas longitudes

No requiere seteos ni configuraciones. Cuando se conecta un dispositivo, automáticamente

se configura y se reporta a la PC indicando las características de funcionamiento.

No requiere suministro de potencia. El protocolo provee un pin de 5V, y permite

suministrar hasta 500mA.

5.2. Principales características

5.2.1. Implementación Física

5.2.1.1. Aspecto eléctrico

A nivel eléctrico, el cable USB transfiere la señal y la alimentación sobre 4 hilos.

Figura 42. Líneas de comunicación USB 1.1 y 2.0

A nivel de alimentación, el cable proporciona la tensión nominal de 5 V. Es necesario definir

correctamente el diámetro del hilo con el fin de que no se produzca una caída de tensión demasiado

importante en el cable. Una resistencia de terminación instalada en la línea de datos permite detectar

el puerto y conocer su configuración (1,5 o 12 Mbits/s).

A nivel de señal, se trata de un par trenzado con una impedancia característica de 90 Ω. La

velocidad puede ser tanto de 12 Mbits/s como de 1,5 Mbits/s. La sensibilidad del receptor puede ser

de, al menos, 200mV y debe poder admitir un buen factor de rechazo de tensión en modo común. El

reloj se transmite en el flujo de datos, la codificación es de tipo NRZI, existiendo un dispositivo que

genera un bit de relleno (bit stuffing) que garantiza que la frecuencia de reloj permanezca constante.

Cada paquete va precedido por un campo de sincronismo.

Consumo:

Cada sección puede proporcionar una determinada potencia máxima siendo el PC el encargado de

suministrar la energía. Además, el periférico puede estar autoalimentado (self powered).

Page 38: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 38

Control de consumo:

El ordenador gestiona el consumo, teniendo capacidad de poner en reposo (suspend) o en marcha a

un periférico USB. En reposo, este reduce su consumo (si puede), quedándose la parte USB

funcional.

Esta gestión está orientada especialmente a los equipos portátiles.

5.2.2. Velocidad de Transferencia

El protocolo USB puede funcionar comúnmente a 3 velocidades. Dichas velocidades tiene

características específicas de implementación dependiendo de la especificación USB:

La especificación USB 1.0 define low and full speed. Low speed permite una velocidad de bus

de 1,5 Mbits/seg. A full speed el bus USB puede funcionar a 12 Mbits/seg.

La especificación USB 2.0 permite una velocidad de Bus de 480 Mbits/seg, lo que permite una

tasa de transferencia de datos de 53 MBytes/seg. Hay una diferencia notable entre esta

especificación y la anterior. Se debe aclarar que para implementar el USB 2.0 se requiere un diseño

de HW especial, mediante 2 líneas diferenciales de datos. Cada línea tiene una impedancia

característica de 45 Ohms a tierra o de 90 ohms diferenciales y componentes para el filtrado de

ruido.

5.2.3. USB On-The-Go

Como USB se convirtió en la interfaz preferida para todo tipo de periféricos, los desarrolladores

empezaron a pedir una forma de conectar sus periféricos directamente entre sí y con

otros periféricos USB. Por ejemplo, un usuario puede querer conectar una impresora directamente a

una cámara o conectar dos unidades en conjunto para el intercambio de archivos.

On-The-Go (OTG) Suplemento para la especificación USB 2.0 lanzado en 2001define

una limitada capacidad de función de host que pueden implementar los dispositivos para permitir la

comunicación con los periféricos.

5.2.4. Componentes del Bus

Los componentes físicos del Universal Serial Bus consisten de los circuitos, conectores, y cables

entre un host y uno o más dispositivos.

El host es una PC u otro dispositivo que contenga un controlador host USB y un hub root. Estos

componentes trabajan juntos para habilitar el sistema operativo que permite la comunicación con

los dispositivos del bus. El formato de datos del controlador del host para transmitir sobre el bus y

traducir el dato recibido a un formato que los componentes del sistema operativo puedan entender.

A hub has one or more ports for connecting devices. Each device must contain circuits and code

that know how to communicate with the host. The USB specification defines the cables and

connectors that connect devices to hubs.

El controlador host también realiza otras funciones relacionadas con la gestión de las

comunicaciones en el bus. El hub root tiene uno o más conectores para conexión de

dispositivos. El Hub root, en combinación con el controlador host, detecta y remueve

los dispositivos, lleva a cabo las solicitudes desde el controlador host, y transfiere los datos entre los

dispositivos y el controlador de host.

Los dispositivos son los periféricos y hubs adicionales que se conectan al bus.

Page 39: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 39

Un Hub tiene uno o más puertos para conectar dispositivos. Cada dispositivo debe contener los

circuitos y el código que le indique cómo comunicarse con el host. La

especificación USB define los cables y conectores que conectan los dispositivos a los Hubs.

Figura 43. Diagrama en bloques de un bus típico.

5.3. Elementos de una transferencia USB.

Cada transferencia USB está integrada por una o más transacciones, y a su vez, cada transacción

contiene paquetes. Antes de explicar cómo está conformada una transferencia, se definen algunos

términos.

5.3.1. Endpoints

Todo el tráfico del bus viaja desde o hacia los “endpoint” de cada dispositivo. Un endpoint es un

buffer que almacena datos. Típicamente es un bloque de memoria o un registro ubicado en el chip

Page 40: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 40

del controlador del dispositivo. Los datos almacenados en un endpoint son datos recibidos o datos

que están esperando ser transmitidos.

El host también tiene buffers que almacenan los datos recibidos y los datos que esperan ser

transmitidos, pero no tienen endpoint. En su lugar, el host da inicio o fin a las comunicaciones con

los endpoints de los dispositivos.

La especificación USB define a un endpoint como una porción única direccionable del

dispositivo USB que es origen o destino de la información en el flujo de comunicación entre el host

y el dispositivo.

La dirección de un endpoint está compuesta por el número de endpoint y su sentido. El número

de endpoint es un valor entre 0 a 15, y el sentido está definido desde la perspectiva del host. Un

endpoint de entrada (“IN”) proporciona datos para ser enviados al host, y un endpoint salida

(“OUT”) almacena datos recibidos del host.

Un endpoint configurado para transferencias de control debe transferir datos en ambos sentidos,

por lo que está compuesto por un endpoint cuya sentido es de entrada y salida, compartiendo el

mismo número. Los endpoints de control son una clase especial por ser bidireccionales.

Cada dispositivo debe tener un endpoint cero configurado como endpoint de control. Raramente

se necesitan adicionales.

Otros tipos de transferencias envían datos en un solo sentido. Un número simple de endpoint

puede soportar los dos tipos de sentidos, entrada o salida. Un dispositivo, por ejemplo, puede tener

un endpoint 1 de entrada para enviar datos al host y otro endpoint 1 de salida para recibir datos del

host.

Adicionalmente al endpoint 0, un dispositivo full o high speed tiene hasta 30 endpoint

adicionales, el número del endpoint desde uno a quince y el sentido de transmisión, entrada o salida.

En cambio un dispositivo low speed está limitado a dos endpoint adicionales con cualquier

combinación de sentidos.

Cada transacción en el bus comienza con un paquete que contiene un número de endpoint y un

código que indica el sentido del flujo de datos y si se inicia o no una transferencia de control. Los

códigos utilizados son “IN”, “OUT” y “SETUP”.

Una transacción del tipo SETUP es similar a una OUT por la razón de que los datos viajan desde

el host al dispositivo, pero es especial porque inicia una transferencia de control. Los dispositivos

deben identificar este tipo de transacción porque esta es el único tipo de transacción que un

dispositivo siempre debe aceptar, además porque el dispositivo necesita identificarse y responder

las solicitudes contenidas en los datos recibidos.

5.3.2. Pipes.

Antes de que una transferencia pueda realizarse, se debe establecer entre el host y el dispositivo

lo que se denomina una tubería o “pipe”. Es una asociación entre el endpoint de un dispositivo y el

software del controlador del host.

Durante el proceso de enumeración se establecen pipes. Si el dispositivo es removido del bus, el

host remueve las tuberías que no son necesarias. Cada dispositivo tiene un control por defecto de

pipe utilizando el endpoint cero.

La información de configuración recibida por el host incluye un descriptor de endpoint para cada

endpoint que el dispositivo quiera usar. Este descriptor de endpoint es un bloque de información

que le dice al host todo lo que necesita saber sobre el endpoint del dispositivo para poder

comunicarse con él. La información incluye la dirección del endpoint, el tipo de transferencia a

usar, el tamaño máximo de los paquetes de datos, y cuando sea necesario, el intervalo deseado para

las trasferencias.

Page 41: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 41

5.3.3. Tipos de transferencias

La interfaz USB está diseñada para manejar distintos tipos de dispositivos con una gran

variedad de requerimientos en relación a la frecuencia de transferencia, tiempo de respuesta y

corrección de errores. En la especificación USB se definen cuatro tipos de transferencias de datos,

cada uno de estos tipos de transferencias manejan diferentes necesidades, y cada dispositivo puede

utilizar la forma de transferencias que mejor se adecuen a sus necesidades.

Los tipos de transferencias USB son de “control”, “bulk”, “interrupt”, y por último

“isochronous”. En la tabla 6 se muestra, para cada tipo de transferencia, diferentes características.

La transferencia de control es la única que está definida en la especificación USB, es

utilizada por el host para aprender sobre el dispositivo. Permite al host obtener información sobre el

dispositivo, establecer su dirección, seleccionar configuraciones, entre otras características. Las

transferencias de control también pueden enviar pedidos específicos del fabricante del dispositivo.

Todo dispositivo USB debe dar soporte a este tipo de transferencia.

Las transferencias Bulk son usadas cuando la velocidad de transferencia no es crítica; como

enviar datos a una impresora o cuando se quiere acceder a archivos de un dispositivo de

almacenamiento. Para estas aplicaciones son necesarias las transferencias rápidas pero los datos

pueden esperar de ser necesario. Si el bus se encuentra muy ocupado la transferencia se demora

pero de encontrarse libre la transferencia es la más rápida. Únicamente dispositivos full o high

speed pueden realizar transferencias de este tipo. Los dispositivos de la clase “Mass storage”

utilizan estas transferencias.

Transferencias Interrupt son utilizadas por dispositivos que necesitan en forma periódica, la

atención del host o de otros dispositivos. Aparte de las transferencias de control, este tipo de

transferencia es la única forma de transferir datos para dispositivos low speed. Dispositivos como

teclados o mouse utilizan este tipo de transferencias para enviar datos.

Finalmente, las transferencias isochronous, tienen asegurado el tiempo de envió pero no

posee corrección de errores. Esta transferencia es utilizada para audio o video reproducido en

tiempo real. Es el único tipo de transferencia que no soporta retransmisión automática por detección

de errores en los datos recibidos, a causa de esto se aceptan errores en forma ocasional. Únicamente

dispositivos full y high speed soportan estas transferencias.

Tabla 6. Características principales para cada tipo de transferencia

Tipo de

transferencia Control Bulk Interrupt Isochronous

Uso Típico Identificación y

configuración.

Escáner,

dispositivos

mass storage.

Mouse,

keyboard.

Audio y video

en tiempo real.

Requerido Sí. No. No. No.

¿Usa low speed? Sí. No. Sí. No.

Dirección del

flujo de datos IN y OUT. In - OUT. In - OUT IN - OUT

Page 42: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 42

Corrección de

errores Sí. Sí. Sí. No.

¿Tasa de

transferencia

garantizada?

No. No. No. Sí.

¿Latencia

garantizada? No. No. Sí. Sí.

5.3.4. Trasferencias y transacciones.

La especificación USB define trasferencia como el proceso de establecer y transportar las

solicitudes de comunicación. Una transferencia puede ser muy corta, enviando unos pocos bits de

datos de una aplicación, o muy larga enviando el contenido de archivos muy extensos.

Cada transferencia está compuesta por una o más transacciones, a su vez cada transacción está

formada por uno, dos o tres paquetes.

La especificación USB define transacción como la prestación de un servicio a un endpoint. En

este caso servicio puede significar que el host envía información a un dispositivo, o que el host

solicita y recibe información de un dispositivo.

Cada transacción incluye identificación, chequeo de errores e información de control, así como

todos los datos a enviar. Una transferencia completa puede estar compuesta por múltiples frames o

microframes. Una transacción no puede ser interrumpida ni puede establecerse otra comunicación

en el bus que pueda interrumpir una transacción.

Una transferencia con una pequeña cantidad de datos puede requerir únicamente una

transacción, en cambio otras transferencias pueden requerir múltiples transacciones con una

pequeña cantidad de datos cada una.

5.3.5. Características de un Bloque en una transferencia

La figura siguiente muestra los elementos de una transferencia típica. Hay transferencias y

transacciones, etapas y fases, transacciones de datos y paquetes de datos, etapas de estados y fases

de handshake. Las Etapas de Datos tienen paquetes de handshake y las etapas de estados tienen

paquetes de datos. La Tabla 7 muestra los elementos de cada uno de los 4 tipos de transferencias.

Cada transferencia consiste de una o más transacciones, y cada transacción consiste de uno,

dos o tres paquetes. Los tres tipos de transacción se definen por su propósito y dirección en cuanto

al flujo de datos. El Setup de una transacción envía requerimientos de transferencia de control a un

dispositivo. Las transacciones OUT envían otra información de datos o estados al dispositivo. Las

transacciones IN envían información de datos o estados al host. La especificación USB define una

transacción como el suministro de servicios a un endpoint. En este caso se define “servicio” como

el envío de información desde el host al dispositivo, o requerimientos del host y recepción de

información desde el dispositivo.

Cada transacción incluye identificación, chequeo de error, estados, y control de información en

todo intercambio de datos. Una transferencia completa quizás requiera múltiples frames o micro

frames, pero una transacción se debe completar sin interrupciones. Ninguna otra comunicación

puede irrumpir en el bus en el medio de una transacción. En una transacción el dispositivo debe

responder rápidamente con los requerimientos de información de datos o estados. El firmware del

Page 43: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 43

dispositivo configura típicamente, un endpoint para responder a los paquetes recibidos, y el

hardware responde a los paquetes cuando llegan.

Figura 44. Características de una trama de Datos

Una transferencia con una pequeña cantidad de datos, tal vez requiere solo una transacción.

Otras transferencias requieren múltiples transacciones con un conjunto de datos en cada.

5.3.6. Fases de una transacción.

Cada uno de los tipos de transferencias definidos, están compuesto por una o más transacciones,

a su vez cada transacción está integrada por dos o tres fases, en la tabla 7 se muestra las fases

integrantes para cada tipo de transferencia.

Una transacción tiene hasta tres fases o partes que ocurren en secuencia, token, datos y

handshake. A su vez en cada fase se transmiten en uno o dos paquetes. Cada uno es un bloque de

información con un formato definido. Al comienzo de cada paquete se coloca información de

identificación llamado “Packet ID” (PID). Dependiendo de la transacción, el PID puede estar

seguido por una dirección de endpoint, datos, información de estado o el número de frame junto con

los bits de chequeo de error.

Fase token: el host inicia la comunicación enviando este paquete. El PID indica el tipo de

transacción: SETUP, IN, OUT o comienzo del frame.

Fase de datos: el host o el dispositivo trasfiere cualquier tipo de información en el

paquete de datos. El PID incluye un valor de secuencia de datos (“data toggle”) que es

Page 44: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 44

usado para proteger a datos perdidos o duplicados cuando la transferencia tiene múltiples

paquetes.

Fase de handshake: el host o el dispositivo envía un código que indica el estado de la

transferencia, si resultó exitosa u ocurrió algún tipo de error. En transferencias

isochronous no se utiliza esta fase. Los códigos utilizados en el PID son ACK, NAK,

STALL o NYET.

Tabla 7: fases integrantes de cada tipo de transferencia.

Tipo de transferencia Transacción Fases (Paquetes)

Control.

Setup. Una transacción.

Token.

Data.

Handshake.

Data. Cero o más transacciones

Token.

Data.

Handshake.

Estado. Una transacción.

Token.

Data.

Handshake.

Bulk.

Una o más transacciones.

(IN - OUT).

Token.

Data.

Handshake.

Interrupt.

Una o más transacciones.

(IN - OUT).

Token.

Data.

Handshake.

Isochronous.

Una o más transacciones.

(IN - OUT).

Token.

Data.

Las señales de handshake son transmitidas en los paquetes de handshake o datos. En todos los

casos, quien recibe la información de handshake, la utiliza para decidir qué hacer a continuación.

Page 45: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 45

ACK: indica que el host o el dispositivo ha recibido los datos sin errores.

NACK: significa que el dispositivo está ocupado o no hay datos que devolver. El host

nunca utiliza este código.

STALL: tiene tres significados: solicitud de control no soportado, pedido de control

fallido o fallo del endpoint.

NYET: únicamente dispositivos high speed lo utilizan. Después que un paquete de datos

es recibido por el endpoint en un dispositivo, este puede devolver este tipo de handshake.

Significa que el endpoint acepta los datos pero no está listo para recibir otro paquete de

datos. Cuando el host piensa que el dispositivo puede estar listo, envía un paquete con un

token especial llamado PING. El endpoint retorna un ACK para indicar que el dispositivo

está listo para recibir el siguiente paquete de datos o devuelve un NAK o STALL de no

estarlo. Este procedimiento es más eficiente que enviar todo el paquete de datos, encontrar

que el dispositivo no está listo, y tener que reenviar más tarde.

ERR: The ERR handshake is used only by high-speed hubs in complete-split transactions.

ERR indicates the device didn’t return an expected handshake in the transaction the hub is

completing with the host.

5.3.7. Chequeo de error.

La especificación USB da los requerimientos de hardware necesarios para reducir el ruido en

las líneas, y de esta forma reducir la probabilidad de errores. De todas formas cualquier

perturbación, como la desconexión de un cable USB, puede alterar otra transmisión. Por esa razón,

se incorpora a cada paquete, bits para el chequeo de errores. Adicionalmente, para transferencias

que requieren múltiples transacciones, se incorpora un valor llamado “data toggle” que mantiene al

transmisor y al receptor en forma sincronizada de manera de no omitir una transacción.

Los bits para el chequeo de errores son calculados utilizado el algoritmo llamado

comprobación de redundancia cíclica (CRC). El dispositivo transmisor realiza el cálculo y envía el

resultado con los datos transmitidos, luego el dispositivo receptor realiza un cálculo similar con los

datos recibidos. Si el resultado coincide significa que no han ocurrido errores por lo que se devuelve

un ACK. En caso de no coincidir no se envía el handshake, lo que significa que se debe

retransmitir.

5.4. Enumeración de dispositivos.

Antes de que una aplicación pueda comunicarse con un dispositivo, el host necesita aprender

de este. En el proceso de enumeración es cuando ocurre el intercambio de información que cumple

con esta tarea, para esta tarea se utiliza las transferencias del tipo de control utilizando el endpoint

cero. El proceso completo incluye asignarle una dirección al dispositivo, leer los descriptores del

dispositivo, asignar y cargar el controlador del dispositivo, y finalmente seleccionar la

configuración de alimentación requerida por el dispositivo, endpoints y otras características. Una

vez finalizado este proceso, el dispositivo está listo para trasferir o recibir datos utilizando los

endpoint del dispositivo.

5.4.1. Proceso de enumeración.

Una de las capacidades del hub es detectar cuando un dispositivo se conecta o desconecta.

Cada hub tiene un endpoint IN para reportar estos eventos al host. En el arranque del sistema el host

Page 46: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 46

interroga a su root hub si hay dispositivos conectados, después del arranque periódicamente se

realiza esta acción.

En el proceso de reconocimiento de un nuevo dispositivo, el host envía una serie de solicitudes

al hub donde se conecto el dispositivo. El hub establece la comunicación entre el dispositivo y el

host. Luego, el host intenta enumerar el dispositivo realizando transferencias de control, las cuales

contienen solicitudes estándar dirigidas al endpoint cero del dispositivo.

Para que este proceso termine satisfactoriamente, el dispositivo debe responder a cada solicitud

retornando la información pedida y realizando las tareas solicitadas. Típicamente el firmware de un

dispositivo contiene toda la información que el host puede solicitar pero no debe asumir que el

proceso va a ocurrir en un orden determinado.

5.4.2. Descriptores.

Los descriptores son estructuras de datos o bloques de información, que le permiten al host

aprender del dispositivo. Cada descriptor contiene información del dispositivo en su totalidad o de

un elemento del dispositivo. Son solicitados durante el proceso de enumeración por el host

utilizando transferencias del tipo de control.

A medida que el proceso de enumeración progresa la solicitud de descriptores se concentra en

características más específicas: primero en todo el dispositivo, después en cada configuración,

posteriormente en la configuración de cada interfaz, y finalmente, en los endpoint de cada interfaz.

El descriptor tiene un registro que indica el tamaño en bytes del mismo llamado bLength. En la

tabla 8 se muestran los distintos tipos de descriptores, en dicha tabla la columna “bDescriptor Type”

contiene un valor hexadecimal que identifica el tipo de descriptor.

Tabla 8. Se muestran los tipos de descriptores

bDescriptor Tipo descriptor. ¿Requerido?

01h Dispositivo. Sí.

02h Configuración. Sí.

03h “string” No. Texto descriptivo

opcional.

04h Interfaz. Sí.

05h Endpoint. No, si el dispositivo

únicamente usa endpoint 0.

06h “device qualifier”. Sí, para dispositivos que

soportan full y high speed.

07h “other_speed_configuration” Sí, para dispositivos que

soportan full y high speed.

08h “interface_power” No.

Page 47: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 47

09h OTG Solo para dispositivos OTG.

0Ah “debug” No.

0Bh “interface_association” Para dispositivos

compuestos.

A continuación se describen los principales tipos de descriptores:

Descriptor de dispositivo: contiene información básica acerca del dispositivo, al

conectarse un dispositivo, este es el primer descriptor que el host solicita. Un dispositivo

puede tener un sólo descriptor de este tipo. Estos descriptores proveen información

general acerca del fabricante, número de producto, número de serie, clase de dispositivo y

el número de configuraciones admitidas. A continuación se indican los elementos que

forma parte del descriptor de dispositivo:

- bcdUSB: indica la versión en BCD, ej versión 2.0 se indica 0200h

- idVendor: el host tiene un archivo .inf que contiene este valor

- idProduct: identificación del producto

- bcdDevice: versión del producto en BCD

- iManufacturer: es un índice que apunta a una descripción del fabricante

- iProduct: índice que apunta a una descripción del producto

- iserialnumber: un índice que apunta al número de serie del dispositivo

Descriptor de configuración: Provee información acerca de los requerimientos de

alimentación del dispositivo y cuantas interfaces son soportadas. Puede existir más de una

configuración para un dispositivo, aunque típicamente se utiliza una.

- bNumConfigurations: número de configuraciones que soporta el dispositivo

- bMaxPacketSize0: el tamaño máximo de paquete para el endpoint 0. Para full

speed se puede usar hasta 64

- bDeviceClass: para dispositivos cuya función es definida a nivel de dispositivo.

Por Ejemplo un hub o un controlador wireless

- bDeviceSubclass: es una subclase de una clase, ejemplo controlador RF es una

subclase del controlador wireless

- bDeviceProtocol: indica el protocolo de la clase, ejemplo bluetooth para un

controlador wireless.

Descriptor de endpoint: identifican el tipo de transferencia, su sentido y otros datos

específicos de un endpoint. En un dispositivo puede haber varios endpoints y pueden

compartir distintas configuraciones.

Descriptor “String”: son descriptores opcionales, proveen información descriptiva

acerca de una característica del dispositivo.

Adicionalmente a los descriptores estándar, un dispositivo puede contener descriptores

específicos del fabricante. Estos descriptores ofrecen una vía estructurada para que el dispositivo

pueda proporcionar información detallada sobre sí mismo.

Page 48: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 48

5.5. Registros asociados al módulo USB 5.5.1. Registro del ID del periférico (PER_ID)

La Figura 45 ilustra sobre el registro del ID del periférico del módulo USB.

Figura 45. Registro de ID del Periférico

IDx: Bits para la identificación del periférico. Por defecto siempre se lee como un periférico 0x04.

5.5.2. Registro de ID complementario (ID_COMP)

La Figura 46 ilustra sobre el registro de ID complementario del módulo USB.

Figura 46. Registro ID complementario

NIDx: Bits como complemento a “1” del ID del periférico.

5.5.3. Registro de la revisión del periférico(REV)

La Figura 47 ilustra sobre el registro de revisión del módulo USB.

Figura 47. Registro de Revisión del USB

REVx: Bits que indican el número de revisión del núcleo del USB.

5.5.4. Registro de información adicional del periférico (ADD_INFO)

La Figura 48 muestra el registro de información adicional del módulo USB.

Page 49: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 49

Figura 48. Registro de Información Adicional del Periférico

IRQ_NUM: Número de interrupción asignada al periférico.

IEHOST: Este bit es puesto a “1” cuando está habilitado el modo HOST.

5.5.5. Registro del estado de la interrupción en modo OTG (OTG_INT_STAT)

Este registro almacena los cambios en el ID y las señales del VBUS (Bus de alimentación USB).

El software deberá leer este registro, para determinar que evento ha generado esta interrupción. Sólo

los bits que han cambiado desde la última lectura se ponen a ”1”. Para borrar el estado de un bit,

basta con escribir un “1” en este. La Figura 49 muestra el registro del estado de interrupción en

modo OTG.

Figura 49. Registro de Estado de Interrupción en modo OTG

ID_CHG: Este bit es puesto a “1” cuando se presenta un cambio de estado en el pin ID del

conector USB.

0: No se ha presentado un cambio en el pin ID del conector USB.

1: Se ha presentado un cambio en el pin ID del conector USB.

1_MSEG: Este bit indica cuando ha pasado un milisegundo. Este bit debe ser aclarado cada que se

necesite verificar el milisegundo.

0: No se ha completado un tiempo de 1ms.

1: Se ha completado un tiempo de 1ms.

LINE_STAT_CHG: Este bit indica cuando la línea de estado del USB cambia. La interrupción

asociada a este bit se puede utilizar para detectar un estado de RESET, resumen, conexión y datos

como señales pulsantes.

0: No se ha detectado un cambio en la línea de estado USB.

1: detectado un cambio en la línea de estado USB.

SESS_VLD_CHG: Este bit indica cuando se ha detectado un cambio en la línea VBUS indicando

que hay una sesión válida.

0: No se ha detectado una sesión válida.

1: Se ha detectado una sesión válida.

Page 50: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 50

B_SESS_CHG: Este bit indica cuando se ha detectado un cambio en la línea VBUS por un

terminal tipo B.

0: No se ha detectado un cambio por un terminal tipo B.

1: Se ha detectado un cambio por un terminal tipo B.

A_SESS_CHG: Este bit indica cuando se ha detectado un cambio en la línea VBUS por un

terminal tipo A.

0: No se ha detectado un cambio por un terminal tipo A.

1: Se ha detectado un cambio por un terminal tipo A.

5.5.6. Registro del control de la interrupción en modo OTG (OTG_INT_EN)

Este registro habilita bit a bit las posibles interrupciones del modo OTG. La Figura 50 muestra el

registro de control de interrupción en modo OTG.

Figura 50. Registro del control de la interrupción en modo OTG

ID_EN: Habilita la interrupción por evento ID.

0: La interrupción por evento ID está deshabilitada.

1: La interrupción por evento ID está habilitada.

1_MSEG_EN: Habilita la interrupción por evento 1_MSEG.

0: La interrupción por evento 1_MSEG está deshabilitada.

1: La interrupción por evento 1_MSEG está habilitada.

LINE_STAT_EN: Habilita la interrupción por evento LINE_STAT_CHG.

0: La interrupción por evento LINE_STAT_CHG está deshabilitada.

1: La interrupción por evento LINE_STAT_CHG está habilitada.

SESS_VLD_CHG: Habilita la interrupción por evento SESS_VLD_CHG.

0: La interrupción por evento SESS_VLD_CHG está deshabilitada.

1: La interrupción por evento SESS_VLD_CHG está habilitada.

B_SESS_EN: Habilita la interrupción por evento B_SESS _CHG.

0: La interrupción por evento B_SESS _CHG está deshabilitada.

1: La interrupción por evento B_SESS _CHG está habilitada.

A_SESS_EN: Habilita la interrupción por evento A_SESS _CHG.

0: La interrupción por evento A_SESS _CHG está deshabilitada.

1: La interrupción por evento A_SESS _CHG está habilitada.

Page 51: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 51

5.5.7. Registro de estado de interrupción (OTG_STAT)

Este registro muestra el valor actual desde las salidas del comparador externo del pin ID y el

VBUS. La Figura 51 muestra el registro de control de interrupción en modo USB A/B.

Figura 51. Registro de estado de interrupción

ID: Este bit es puesto a “1” cuando se presenta un cambio de estado en el pin ID del conector USB.

0: Indica que un cable tipo A ha sido conectado al conector USB.

1: Indica que no se ha establecido una conexión o que un cable tipo B ha sido

conectado al conector USB.

1_MSEG_EN: Este bit no se usa.

LINE_STATE_STABLE: Este bit indica que las líneas internas, que controlan el

LINE_STAT_CHG se han estabilizado por al menos 1 milisegundo. Primero se lee el bit

LINE_STAT_CHG y luego se lee el LINE_STATE_STABLE.

0: La línea LINE_STAT_CHG no está estable.

1: La línea LINE_STAT_CHG está estable.

SESS_VLD: Este bit indica cuando una sesión es válida.

0: El voltaje VBUS está por debajo del umbral de una sesión válida tipo B.

1: El voltaje VBUS corresponde al umbral de una sesión válida tipo B.

B_SESS_END: Este bit indica cuando una sesión tipo B ha terminado.

0: El voltaje VBUS corresponde al umbral de un final de una sesión tipoB.

1: El voltaje VBUS está por debajo del umbral de un final de una sesióntipo B.

A_VBUS_VLD: Este bit indica cuando el VBUS tipo A es válido.

0: El voltaje VBUS está por debajo del umbral válido del VBUS tipo A.

1: El voltaje VBUS corresponde al umbral válido del VBUS tipo A.

5.5.8. Registro de control OTG (OTG_CTRL)

Este registro controla la operación del VBUS y de las resistencias asociadas a la línea de datos del

USB. La Figura 52 muestra el registro de control OTG.

Page 52: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 52

Figura 52. Registro de control OTG

DP_HIGH: Habilita el pullup para la línea D+.

0: El pullup para la línea D+ no está habilitado.

1: El pullup para la línea D+ está habilitado.

DP_LOW: Habilita el puldlown para la línea D+.

0: El pulldown para la línea D+ no está habilitado.

1: El pulldown para la línea D+ está habilitado.

DM_LOW: Habilita el pulldown para la línea D-.

0: El pulldown para la línea D- no está habilitado.

1: El pulldown para la línea D- está habilitado.

VBUS_ON: Señal de encendido del VBUS.

0: La señal de encendido del VBUS no está puesta.

1: El VBUS está encendido.

OTG_EN: Habilita una resistencia pullup/pulldown para el modo OTG.

0: Si el bit USB_EN está en “1” y el bit HOST_MODE es “0”, se habilita una

resistencia de pullup para el pin D+. Si el bit HOST_MODE es “1”, se ubican

pulldown’s para las líneas D+ y D-.

1: Los controles sobre los pullup’s y pulldown’s son usados.

VBUS_CHG: Inserta una resistencia a la señal de VBUS.

0: No inserta una resistencia a la señal de VBUS.

1: Inserta una resistencia a la señal de VBUS.

VBUS_DSCHG: Inserta una resistencia de descarga a la señal de VBUS.

0: No inserta una resistencia de descarga a la señal de VBUS.

1: Inserta una resistencia de descarga a la señal de VBUS.

5.5.9. Registro de estado de interrupción (INT_STAT)

Contiene una serie de bits para cada evento de interrupción del módulo USB y pertenecen a una

sola fuente de interrupción del microcontrolador ColdFire® V1. Para aclarar cada bit, es necesario

escribirlo a “1” una vez se haya atendido el evento de interrupción. La Figura 53 muestra el registro

de estado de interrupción.

Page 53: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 53

Figura 53. Registro de estado de interrupción

STALL: Cuando el dispositivo está en modo objetivo (Target), este bit se pone a “1” cuando el SIE

(Serial Interface Engine) envía una señal de STALL. Cuando se está en modo HOST, este bit se

pone a ”1” cuando el módulo USB detecta una señal de STALL. Esta interrupción puede ser usada

para determinar si la última transacción USB fue completada con éxito o si paró (STALL).

ATTACH: Interrupción por enganche. Este bit es puesto a “1” cuando el módulo USB detecta un

enganche de un dispositivo USB. Esta señal sólo será válida si el bit HOST_MODE_EN =1. esta

interrupción indica que un periférico está conectado y deberá ser configurado.

RESUME: Este bit es puesto a “1” dependiendo de las señales DP/DM y puede ser usado como

una señal remota para despertar el dispositivo pegado al bus USB.

SLEEP: Este bit es puesto a “1” cuando el módulo USB detecta un evento de modo vago (IDLE),

durante 3 milisegundos. Este temporizador es aclarado al detectarse actividad en el bus USB.

TOK_DNE: Este bit se pone a “1” cuando se ha completado el proceso actual de testigo (TOKEN).

El núcleo del ColdFire® V1 deberá leer, inmediatamente, el registro STAT para determinar el

terminal y el BD usados para el TOKEN. Aclarar este bit causa que el registro STAT sea borrado o

que el estado retenido del registro STAT sea almacenado en el registro STAT.

SOFT_TOK: Este bit se pone a “1” cuando módulo USB recibe una señal de TOKEN de inicio de

trama (Start Of Frame).

ERROR: Este bit es puesto a “1” cuando alguna de las condiciones de error en el registro

ERR_STAT ocurre. El núcleo del ColdFire® V1 deberá leer, inmediatamente, el registro

ERR_STAT para determinar la fuente del error.

USB_RST: Este bit es puesto a “1” cuando el módulo USB a decodificado un RESET válido. La

acción anterior informa al microcontrolador que podrá escribir un 0x00 dentro del registro de

direcciones y habilitar el terminal 0.

5.5.10. Registro de habilitación de interrupciones (INT_ENB)

Contiene una serie de bits para habilitar cada fuente de interrupción del módulo USB. La Figura 54

muestra el registro de habilitación de las interrupciones.

Page 54: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 54

Figura 54. Registro de habilitación de interrupciones (INT_ENB)

STALL_EN: Bit para habilitar interrupción por un evento tipo STALL.

0: Inhibe interrupción por evento STALL.

1: Habilita interrupción por evento STALL.

ATTACH_EN: Bit para habilitar interrupción por un evento tipo ATTACH.

0: Inhibe interrupción por evento ATTACH.

1: Habilita interrupción por evento ATTACH.

RESUME_EN: Bit para habilitar interrupción por un evento tipo RESUME.

0: Inhibe interrupción por evento RESUME.

1: Habilita interrupción por evento RESUME.

SLEEP_EN: Bit para habilitar interrupción por un evento tipo SLEEP.

0: Inhibe interrupción por evento SLEEP.

1: Habilita interrupción por evento SLEEP.

TOK_DNE_EN: Bit para habilitar interrupción por un evento tipo TOK_DNE.

0: Inhibe interrupción por evento TOK_DNE.

1: Habilita interrupción por evento TOK_DNE.

SOF_TOK_EN: Bit para habilitar interrupción por un evento tipo SOF_TOK.

0: Inhibe interrupción por evento SOF_TOK.

1: Habilita interrupción por evento SOF_TOK.

ERROR_EN: Bit para habilitar interrupción por un evento tipo ERROR.

0: Inhibe interrupción por evento ERROR.

1: Habilita interrupción por evento ERROR.

USB_RST_EN: Bit para habilitar interrupción por un evento tipo USB_RST.

0: Inhibe interrupción por evento USB_RST.

1: Habilita interrupción por evento USB_RST.

5.5.11. Registro de estado de interrupción por error (ERR_STAT)

Contiene una serie de bits para detectar cada fuente de interrupción por error en el módulo USB.

Todos estos bits conforman una OR alambrada y esta a su vez afecta el bit INT_STAT [ERROR].

Los bits pueden ser borrados escribiendo un “1” en estos. La Figura 55 muestra el registro de

detección de las interrupciones.

Page 55: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 55

Figura 55. Registro de estado de interrupción por error (ERR_STAT)

BTS_ERR: Este bit se pone a “1” en la detección de error por evento de BIT

STUFF (Bit de relleno para sincronía).

DMA_ERR: Este bit se pone a “1” si el módulo USB hace un requerimiento al DMA de la lectura

de un nuevo BDT, pero no fue posible obtener el dato desde el bus, tanto para lectura como para

escritura. Si se está procesando una transferencia tipo TX (IN), esta puede causar una condición de

bajo-flujo (underflow). Si se está procesando una transferencia tipo RX (IN), esta puede causar una

condición de sobreflujo (overflow). Este tipo de condición es muy usada en el desarrollo de

arbitramiento de dispositivos, tanto para el microprocesador como para el módulo USB. Lo anterior

minimiza la demanda en el requerimiento de bus y tiempos de inactividad muy grandes (grand

latency). Este bit también es puesto a “1” si un paquete de datos supera el tamaño máximo

especificado en el BDT, para este caso la máquina trunca el paquete y lo almacena en el buffer de

memoria.

BTO_ERR: Este bit se pone a “1” en la detección de error por evento de un tiempo por fuera

(timeout) en la devolución del bus (bus turnaround). El módulo USB contiene un temporizador para

el bus turnaround.

DFN8: Este bit se pone a “1” si el campo del dato recibido no tiene 8 bits de longitud.

CRC16: Este bit se pone a “1” cuando un paquete es rechazado por un error en el chequeo cíclico

redundante CRC16.

CRC5_EOF: Este bit tiene dos funciones: La primera es que si el Módulo USB está operando en

modo periférico (HOST_MODE_EN = 0) y se detecta un error de redundancia cíclica tipo CRC5, el

bit se pone a “1”. La segunda función es que si el módulo está operando en modo HOST

(HOST_MODE_EN = 1) y se detecta un error por fin de trama (EOF), este bit se pone a ”1”. Este

tipo de interrupción se usa en el software para el despacho de paquetes de información y garantizar

que no ocurran cruces en las transacciones, al comienzo de una nueva trama.

PID_ERR: Este bit se pone a “1” cuando el PID de una transacción falla.

5.5.12. Registro de habilitación de interrupción por error (ERR_ENB)

Contiene una serie de bits para habilitar cada fuente de interrupción por error en el módulo USB.

Poniendo a “1” uno de estos bits, habilita la respectiva interrupción en el registro ERR_STAT. La

Figura 56 muestra el registro de habilitación de las interrupciones.

Page 56: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 56

Figura 56. Registro de habilitación de interrupción por error

BTS_ERR_EN: Bit para habilitar la interrupción por evento de BTS_ERR.

0: Inhibe interrupción por evento BTS_ERR.

1: Habilita interrupción por evento BTS_ERR.

DMA_ERR_EN: Bit para habilitar la interrupción por evento de DMA_ERR.

0: Inhibe interrupción por evento DMA_ERR.

1: Habilita interrupción por evento DMA_ERR.

BTO_ERR_EN: Bit para habilitar la interrupción por evento de BTO_ERR.

0: Inhibe interrupción por evento BTO_ERR.

1: Habilita interrupción por evento BTO_ERR.

DFN8_EN: Bit para habilitar la interrupción por evento de DFN8.

0: Inhibe interrupción por evento DFN8_EN.

1: Habilita interrupción por evento DFN8_EN.

CRC16_EN: Bit para habilitar la interrupción por evento de CRC16.

0: Inhibe interrupción por evento CRC16_EN.

1: Habilita interrupción por evento CRC16_EN.

CRC5_EOF_EN: Bit para habilitar la interrupción por evento de CRC5_EOF.

0: Inhibe interrupción por evento CRC5_EOF.

1: Habilita interrupción por evento CRC5_EOF.

PID_ERR_EN: Bit para habilitar la interrupción por evento de PID_ERR.

0: Inhibe interrupción por evento PID_ERR.

1: Habilita interrupción por evento PID_ERR.

Page 57: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 57

Apéndice

1. Módulo Serial en la Familia HC908

Este modulo no se encuentra en el HC908QY4, pero se encuentra en la mayoría de los MCUs de

la Familia HC908 [3] y [4].

1.1. Características

• Full duplex, Alta Velocidad, asincrónico, programable de 8 o 9 bit de largo de caracter.

• Dos métodos de “receiver wakeup”.

• Pedidos de Interrupción separados para Rx y Tx.

• Habilitación separada del Transmisor y el Receptor.

• Polaridad programable de la salida del Transmisor.

•Operación dirigida por INT’S con ocho Flags de interrupción.

Transmitter Empty

Transmission Complete

Receiver Full

Idle Receiver Input

Receiver Overrun

Noise Error

Framing Error

Parity Error

•Modo de operación “Low power”

•Framing Error Detection en el receptor

•Chequeo de Paridad por Hardware

1.2. Descripción de la comunicación serie [2]

Utiliza el sistema doble buffer. El flag SCTE se setea cada vez que un nuevo dato es transferido

desde el buffer TDR al “shift register” de transmisión serie. El flag SCRF se setea cada vez que un

nuevo dato es transferido desde el “shift register” al buffer RDR. El registro SCDR es un solo

registro que al escribirlo, se escribe el buffer TDRx y al leerlo, se lee el buffer RDRx.

Se pueden seleccionar 2 formatos de datos diferentes a transmitir, uno de ellos es de 8 bits,

donde hay un bit de inicio, un bit de stop y 8 bit de datos. El otro Formato es de 9 bits, con 1 bit de

inicio, un bit de stop, un bit de paridad extra u otro stop y 8 bit de datos.

Caracteres de Datos Especiales:

Break - No tiene bits de Start o Stop bits, existe como un “cero” lógico por un tiempo de 10 ó 11

bit (Formato de Datos de 8 o 9 bits respectivamente)

Idle - No tiene bits de Start o Stop, existe como un “uno” lógico por un tiempo de 10 ó 11 bit

(Formato de Datos de 8 o 9 bits respectivamente)

Preámbulo - Un carácter “idle” de sincronismo

Page 58: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 58

1.3. Registros I/O del SCI

Siete registros I/O controlan y monitorean la operación del SCI:

• SCI Control Register 1 (SCC1)

• SCI Control Register 2 (SCC2)

• SCI Control Register 3 (SCC3)

• SCI Status Register 1 (SCS1)

• SCI Status Register 2 (SCS2)

• SCI Data Register (SCDR)

• SCI Baud Rate Register (SCBR)

El módulo de SCI de la flia. HC908 tiene un mejor manejo automático de la recepción de

información serial con paridad (implementada por hardware interno), mayor velocidad de TX / RX

por medio de dos alternativas de Clocks de sincronismo (Fbus y External Clock) y hasta un mejor

manejo de comunicaciones serial del tipo “Network” o Red con múltiples nodos.

1.3.1. Registo SCI de Baud Rate

Este registro permite seleccionar el baud rate para el transmisor del SCI. Los bits SCI “baud

rate prescaler” (SCP1,SCP0) dividen la frecuencia del BUS (fBus) por un múltiplo de 64, 1, 3, 4,

o 13. Los bits SCI “baud rate select bits” (SCR2 - SCR0) permiten seleccionar el baud rate de

transmisión desde el “prescaler output” y dividen la frecuencia de la salida del preescalador por 1,

2, 4, 8, 16, 32, 64, o 128.

Figura 57. Registro de selección de tasa de baudios.

Para una frecuencia de BUS = 4,9152 MHz se pueden obtener los siguientes Baud rates:

Tabla 9. Configuración de los bits SCR

Frecuencia de Bus = 4.9152 Mhz Máximo Baud Rate

(desde tabla prescalador )

SCR2 SCR1 SCR0 Divisor 76.80K Baud 19.20K Baud

0 0 0 1 76.80K Baud 19.20K Baud

0 0 1 2 38.40K Baud 9600 Baud

0 1 0 4 19.20K Baud 4800 Baud

0 1 1 8 9600 Baud 2400 Baud

1 0 0 16 4800 Baud 1200 Baud

1 0 1 32 2400 Baud 600 Baud

1 1 0 64 1200 Baud 300 Baud

1 1 1 128 600 Baud 150 Baud

Page 59: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 59

Tabla 10. Configuración de los Bits SCP

SCP1 SCP0 Divisor Máximo Baud Rate

0 0 1 76.80K Baud

0 1 3 25.833K Baud

1 0 4 19.20K Baud

1 1 13 5.908K Baud

1.3.2. Registro de Interrupciones y de configuración del Tx

El bit SCI Transmit Interrupt Enable (SCTIE) produce una interrupción cuando el registro

de datos Tx queda vacío. El próximo byte puede ser cargado en el registro de datos Tx.

1 = Habilita interrupción

0 = Deshabilita interrupción

El bit Transmission Complete Interrupt Enable (TCIE) produce una interrupción cuando Tx

está Completa. Un byte ha sido enviado.

1 = Habilita interrupción

0 = Deshabilita interrupción

El bit Transmitter Enable (TE) habilita la operación de TX y envía un “preámbulo”.

1 = Habilita el transmisor

0 = Deshabilita el transmisor

El bit SCI Enable (ENSCI) habilita al SCI y al generador de baud rate SCI y permite al SCI

ser deshabilitado para baja potencia.

1 = SCI habilitado

0 = SCI deshabilitado

El bit Character Length Select (M)

1 = Caracteres SCI de 9-bit

0 = Caracteres SCI de 8-bit

El bit Parity Enable (PEN)

1 = habilitado

0 = Deshabilitado

El bit Parity Type (PTY) 1 = paridad impar

0 = paridad par

Con los 3 últimos bits (M,PEN, PTY), en el módulo de SCI, se puede setear el “largo del

caracter”, si lleva paridad o no y de qué tipo, y si se utiliza 1 o 2 bits de stop.

Se debe destacar que, en los módulos de SCI de los MCUs HC908, cuando se trabaja con

paridad (par ó impar), la misma es generada (en la TX) y decodificada (en la RX) en forma

automática por el mismo.

Page 60: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 60

Figura 58. Registro SCC1

Figura 59. Registro SCC2

Tabla 11. Selección del largo de caracter

1.3.3. SCI Status Register 1 (SCS1)

Figura 60. Flags de estado del transmisor.

El SCI Transmitter Empty (SCTE) indica que el contenido del registro de datos SCI ha sido

movido al serial shift register Tx. Este bit es limpiado por la lectura del SCS1 seguida de la

escritura del SCDR.

1 = Data register vacío

0 = Data register no vacío

El Transmission Complete (TC) indica que el SCDR está vacío y no hay transmisión en

progreso. Este bit es limpiado por la lectura del SCS1 seguida de la escritura del SCDR

1 = No hay transmisión en progreso

0 = Transmisión en progreso

1.3.4. SCI Data Register (SCDR)

Figura 61. Registro de Datos SCI.

M PEN PTY Character Length

0 0 x 1 start + 8 (7) data + 1 (2) stop

1 0 x 1 start + 9 (8) data + 1 (2) stop

0 1 0 1 start + 7 data + Even +1 stop

0 1 1 1 start + 7 data + Odd +1 stop

1 1 0 1 start + 8 data + Even +1 stop

1 1 1 1 start + 8 data + Odd +1 stop

Page 61: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 61

Tiene Buffers de datos para el shift Register TX/RX. En el SCDR se escriben datos a ser

transmitidos. Inicia la operación de transmisión.

1.3.5. SCI Status Register 2 (SCS2)

Figura 62. Registro de Estado 2.

El Status Register 2 tiene 2 bits, el bit Break (BKF) – Seteado cuando se detecta un “break

character”. Se limpia por lectura del SCS2 luego de leer el SCDR y el bit Reception in Progress

(RPF) – Seteado durante la búsqueda del “start bit”–Reseteado después de se detecta un bit de stop

o falsos bit de start”.

Page 62: Descripcion de Un Microcontrolador (Modulos de Comunicacion) HC908

Descripción General de un Microcontrolador (Módulos de Comunicación) Página 62

Referencias.

[1] Douglas H. Summerville, “Embedded Systems Interfacing for Engineers using the Freescale

HCS08 Microcontroller II: Digital and Analog Hardware Interfacing”, State University of New

York at Binghamton, Morgan y Claypool Publishers, 2009.

[2] Data sheet: MC68HC908QY4 Microcontrolers, Rev. 5, 07/2005

[3] Daniel Di Lella, Curso de Microcontroladores HC908, Electrocomponentes S.A., 2005

[4] MCF51JM128 ColdFire® Integrated Microcontroller Reference Manual. Freescale

Semiconductor. Rev 1, 2008.

[5] Microcontroller MCF51JM128 ColdFire Data Sheet. Freescale Semiconductor. Rev 0, 2008.

[6] “OpenHCI for USB”, Compaq, Microsoft, National Semiconductor, septiembre de 1999.

[7] Axelson, Jan. “USB Complete”, Segunda edición, USA. 2001.

[8] Jan Axelson, “Serial Port Complete”, tercera edición, Madison, Lakeview research, 2007.


Recommended