Académique Documents
Professionnel Documents
Culture Documents
Autores: Ing. Jorge R. Osio Ing. Luis Antonini Ing. Walter Arztegui Ing. Jos A. Rapallini
Septiembre de 2011
Descripcin General de un Microcontrolador (Mdulos de Comunicacin)
Versin 1.0
Pgina 1
INDICE.
1. Introduccin
1.1. Mdulos de Comunicacin disponibles en Microcontroladores 1.2. Mdulos Especficos 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.2. Caractersticas del Mdulo SCI 2.3. Descripcin de la comunicacin serie mediante el Mdulo SCI 2.4. Diagrama en Bloques del Transmisor y Receptor 2.5. Registros de Configuracin 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.2. Caractersticas Principales del Mdulo SPI 3.3. Descripcin funcional del mdulo SPI
3.3.1. Modo Master 3.3.2. Modo Slave
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.
4.5.
5.
5.2.2. Velocidad de Transferencia 5.2.3. USB On-The-Go 5.2.4. Componentes del Bus
5.3.
5.4.
Enumeracin de dispositivos.
5.4.1. Proceso de enumeracin.
Pgina 3
5.4.2. Descriptores
5.5.
Apndice
1. Mdulo Serial en la Familia HC908
1.1. Caractersticas 1.2. Descripcin de la comunicacin 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 configuracin 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)
Pgina 4
1. Introduccin
Entre los mdulos disponibles en las distintas familias de Microcontroladores se encuentra los mdulos que permiten implementar mediante la configuracin de registros los protocolos de comunicacin ms comunes en el diseo Digital.
1.1.
En la Actualidad la mayora de los Microcontroladores contienen mdulos para la implementacin de interfaces de comunicacin tales como, SPI, SCI, I2C y USB. Adicionalmente, algunas familias ms potentes proveen interfaces Ethernet y CAN para el diseo de sistemas Ms avanzados. Todos estos dispositivos vienen provistos de Libreras especficas de Diseo que felicitan la implementacin del mdulo.
Pgina 6
Figura 2. Formato de transmisin tp = periodo de un bit = 1/ tasa de baudio La comunicacin serie trabaja con la lnea en alto (idle line) cuando no hay transferencia de datos, y el bit de inicio es un cero lgico. Cada bit de dato puede ser ya sea un uno o un cero lgico. El bit de parada es un uno lgico. 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 transmisin. En la operacin Half-duplex, solo un nodo transmite a la vez. El dispositivo no puede recibir mientras est transmitiendo, y no puede Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 7
transmitir mientras est recibiendo. La implementacin del protocolo por software debe realizarse en modo Half-duplex, por causa de la secuencialidad del software. Esta incapacidad es una desventaja en comparacin con el Hardware SCI, que puede transmitir y recibir al mismo tiempo por ser concurrente. Esto se conoce como sistema full duplex.
Pgina 8
Figura 3. Sistema de comunicacin 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 5. Formato de datos de 9 bits. Caracteres de Datos Especiales: Break - No tiene bits de Start o Stop, existe como un cero lgico 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 lgico por un tiempo de 10 11 bit (Formato de Datos de 8 o 9 bits respectivamente) Prembulo - Un caracter idle de sincronismo
Pgina 9
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 tambin tiene una lgica de Hardware para el chequeo de error de paridad, en donde si se detecta error en la paridad, se enva un aviso al transmisor pidiendo la retransmisin de datos. Adicionalmente se cuenta con la lgica para enviar el requerimiento de interrupcin al microprocesador, por la llegada de un dato al puerto RX.
Pgina 10
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)
Figura 8. Registro de seleccin de tasa de baudios (SCIxBDH). LBKDIE (Habilita interrupcin por deteccin de break LIN): Si este bit est en 1 lgico, Se produce un requerimiento de interrupcin por HW cuando el flag LBKIF est en 1. RXEDGIE (Habilita interrupcin por deteccin por flanco activado por entrada RxD): Si este bit est en 1, se produce un requerimiento de interrupcin por HW cuando el flag RXEDGIF est en 1.
Figura 9. Registro de seleccin de tasa de baudios, parte baja (SCIxBDL). SBR[ bits (12:0)](Divisor de mdulo de Baud rate): estos 13 bits representan el valor de BR, que representa el divisor del mdulo 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).
Figura 10. Registro de Control 1 - SCIxC1 Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 12
LOOPS: Seleccin 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: seleccin de fuente de recepcin. Este bit en 1 conecta el pin TxD a la salida del transmisor y a la entrada del receptor. M: Seleccin 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 mtodo de recepcin wakeup. ILT: Seleccin de tipo de lnea Idle. PE: Habilita paridad. El bit en 1 habilita paridad PT: Seleccin del tipo de paridad. El bit en 1 selecciona la paridad impar.
Figura 11. Registro de Control - SCIxC2 TIE: Habilita la interrupcin de transmisin TCIE: Habilita interrupcin por transmisin completa RIE: Habilita la interrupcin del recepto ILIE: habilita la interrupcin de lnea IDLE TE: Habilita el Transmisor RE: Habilita Recepcin RWU: Control wakeup del receptor SBK: enva un break
Figura 12. Registro de Estados - SCIxS1. TDRE: Flag de registro de datos del transmisor vacio TC: Flag de transmisin completa RDRF: Flag de registro de datos del receptor vacio IDLE: Flag de lnea IDLE. OR: Flag de sobre ejecucin del receptor. NF: Flag de ruido Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 13
Figura 13. Registro de Estados - SCIxS2. LBKDIF: Flag de interrupcin de deteccin de break LIN RXEDGIF: Flag de interrupcin activo por flanco en el pin RxD RXINV: Inversin de datos del receptor RWUID: Detecta activacin de IDLE en el receptor BRK13: Generacin de break de carcter extensa LBKDE: Habilita deteccin de break LIN RAF: Flag de receptor activo
Figura 14. Registro de Control - SCIxC3. L8: Recepcin de 9 bits de datos T8: Transmisin de 9 bits de datos TXDIR: Configuracin de direccin del pin TxD en el modo simple lnea TXINV: Inversin de datos de Transmisin. ORIE: Habilitacin de interrupcin por sobre escritura NEIE: Habilitacin de interrupcin por error de ruido FEIE: Habilitacin de interrupcin por error de Frame PEIE: Habilitacin de interrupcin por error de paridad
Pgina 14
Pgina 15
Pgina 16
Figura 17. Sincronismo entre seal de clock y datos. En los sistemas seriales sincrnicos para la interconexin de perifricos, se manejan distancias cortas y modos de un solo maestro y mltiples esclavos. Un maestro podra perder su funcin y convertirse en un esclavo, mediante un mecanismo de arbitraje de bus. De esta manera cualquier dispositivo podra ser maestro en un momento determinado. Las tramas de comunicacin son de variada presentacin y algunas slo involucran la carga til, sin adicionar bits que permitan el handshaking (coordinacin) entre esclavos y maestro. Para estos protocolos deber existir una lnea tanto para el dato saliente (TxD) como para el dato entrante (RxD), as como la posibilidad de hacer comunicacin simultnea y bidireccional (Full Duplex) (Ejemplo: SPI).
Figura 18. Diferentes Configuraciones en el envo de datos durante el primer flanco de clock
Pgina 17
Figura 19. Diferentes Configuraciones en el envo de datos durante el segundo flanco de clock. En la figura 18 se muestra la configuracin del mdulo en donde el dato a enviar se mantiene estable durante el primer flanco de clock y el siguiente bit se enva en el segundo flanco de clock, tenga este cualquiera de las 2 polaridades posibles (lnea normalmente en alto o en bajo). En la figura 19 se muestra la configuracin del mdulo 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.3.
El mdulo 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 mdulo SPI cumpliendo las funciones de: Selector de esclavo (SS) clock serial (SPSCK) Master out/slave in (MOSI) Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 18
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 transmisin 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 actan como el buffer de datos de recepcin SPI cuando es leido y como el buffer de datos de transmisin 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 inversin 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.
Pgina 19
La entrada SS tambin 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. Tambin si el SS del slave est en alto, se ignora la seal de clock enviada por el master. Con el sistema de varios slaves, es posible implementar una comunicacin serial enviando a varios slaves la misma transmisin desde el master, aunque el master no recibir informacin de todos los slaves a la vez. Si el bit CPHA en el registro de control 1 est borrado, un nmero impar de flancos sobre la entrada SPSCK causar que el dato se mantenga en el pin de entrada de datos. Un nmero 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 nmero impar de flancos casar que el valor previamente almacenndose 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 enva por el pin de salida de datos. Despus 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.
Pgina 20
3.4.
Diagrama en bloques
3.5.
Registros de configuracin
Figura 21. Registro de control 1 - SPIxC1 SPIE: Habilitacin de interrupcin (para SPRF y MODF) SPE: Habilitacin de sistema Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 21
SPTIE; Habilitacin de interrupcin por transmisin MSTR: Seleccin de modo Master/Slave CPOL: polaridad de Clock CPHA: Fase de clock SSOE: habilitacin de salida de seleccin de slave LSBFE: primer bit LSB (direccin de desplazamiento) Tabla 1. Bits de seleccin de modo Master o Slave
MODFEN SSOE Modo Master Modo Slave
0 0 1 1
0 1 0 1
I/O de propsito general I/O de propsito general Entrada SS para modo falla Salida SS automtica
Entrada de seleccin de slave Entrada de seleccin de slave Entrada de seleccin de slave Entrada de seleccin de slave
Figura 22. Registro de control 2 (SPIxC2) SPMIE: Habilitacin de interrupcin por coincidencia SPIMODE: Modo 8 o 16 bits MODFEN: Habilita funcin en modo falla como master BIDIROE: habilita salida en modo bidireccional SPISWAI: Stop en modo wait SPC0: Control de pin 0 Modo de Pin NORMAL BIDIRECCIONAL NORMAL BIDIRECCIONAL SPC0 0 1 0 1 Tabla 2. Modos de Operacin BIDIROE MISO Operacin de Modo Master X Entrada Master 0 MISO no usado por SPI 1 Operacin de Modo slave X Salida Slave 0 1 Entrada Slave Slave E/S MOSI Salida Master Entrada Master Master E/S Slave MOSI no usado por SPI
Pgina 22
3.5.3. Registro de Baud rate (SPIxBR) Tabla 3. Seleccin de baud rate de Transferencia
SPPR2:SPPR1:SPPR0 Preescalador Divisor
1 2 3 4 5 6 7 8
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
2 4 8 16 32 64 128 256
Figura 24. Registro de estados (SPIxS) SPRF: Flag de buffer de lectura lleno Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 23
SPMF: Flag de Match. Cuando el valor en el buffer de recepcin coincide con el valor en SPIMH:SPIML SPTEF: Flag de buffer de transmisin vacio MODF: Flag modo master por falla
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 transmisin.
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
Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 24
ambos buffer hayan sido escritos, se transferir el contenido como un valor a los registros de coincidencia del SPI.
Pgina 25
Transmisin de un byte de datos: La Figura 30 detalla las tramas para el envo de un byte hacia un esclavo. En la primera trama la carga til conforma la direccin de destino de la informacin. Tambin se especifica la accin sobre el esclavo, que en este caso detalla una escritura sobre el destino (nivel bajo en el bit R/W). La direccin del dispositivo puede estar representada en 8 o 10 bits, de tal manera que podra existir un byte adicional para completar la direccin (este byte carecera 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. Envo de un Byte de Datos a una direccin de esclavo de 8 y 10 bits de largo.
Envo de n bytes a un destino: La Figura 31 detalla las tramas para el envo de n bytes hacia un destino. Es idntico al caso anterior, slo que los datos se presentan uno a continuacin del otro.
Pgina 27
Figura 31. Envo de varios byte de datos a una direccin 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 envan la direccin del dispositivo a leer y las siguientes la accin 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.
Pgina 28
Figura 33. Lectura de n bytes de datos enviados desde u dispositivo esclavo. La conexin 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 simultneamente. Para facilitar la conexin de mltiples masters, SCL y SDA son lneas open-drain, lo que facilita el arbitraje y el control de flujo, que requieren pull-ups externos para generar un estado lgico alto en la lnea. Todos los masters monitorean el bus y solo uno puede accede cuando la lnea est desocupada (idle) (cuando ambas lneas estn en alto entre un bit de stop y uno de start). Si un master no est manejando la lnea SDA en bajo pero sensa que est en bajo, entonces interpreta que otro master est usando el bus y se detiene la transmisin; en este caso el master perdi el arbitraje. De manera similar, si un master sense que SCL est en bajo cuando debera estar en alto, esto indica que un esclavo est extendiendo el clock para indicar que todava no est listo para proceder con la transferencia del siguiente byte, proveyendo un mecanismo de control de flujo bsico. La Figura 34 muestra una conexin maestro/esclavo I2C tpica.
Pgina 29
o Repeticin de la seal de start. o Deteccin de bus ocupado. o Reconocimiento de llamado general. o Extensin de la direccin a 10 bits.
4.3.
La Figura 35 detalla el diagrama en bloques del mdulo I2C. El dato en el mdulo I2C se recibe y se enva sobre el mismo registro (configuracin double buffered), el bloque shift register controla esta funcin.
4.4.
Pgina 31
Figura 36. Registro de direcciones AD1:AD7: Bits que conforman la direccin baja del esclavo en un bus IIC.
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 ecuacin define la tasa de baudios de una comunicacin IIC y los tiempos de las seales 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)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Divisor SCL
20 22 24 26 28 30 34 40 28 32 36 40 44 48 56 68
ICR (Hex)
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
Divisor SCL
160 192 224 256 288 320 384 480 320 384 448 512 576 640 768 960
Pgina 32
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
640 768 896 1024 1152 1280 1536 1920 1280 1536 1792 2048 2304 2560 3072 3840
4.4.3. Registro de control 1 (IICC1). La Figura 38 ilustra sobre el registro de control 1 del mdulo I2C.
Pgina 33
Figura 39. Registro de Estados TCF: Bandera para indicar cundo 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 direccin, 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 operacin 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 direccin 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 interrupcin pendiente. Esta bandera se aclara escribiendo un 1 en ella, durante la rutina a la atencin de interrupcin. 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 direccin sobre un esclavo _ Se ha perdido el arbitramiento 0: No hay interrupcin pendiente 1: Hay interrupcin pendiente RXAK: Bandera que indica que se ha dado una seal de acknowledge (ACK), desde el dispositivo que ha recibido el dato enviado. Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 34
Figura 41. Registro de control 2 GCAEN: Bit para habilitar generacin 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 direccin de los dispositivos. 0: Direcciones en 7 bits 1: Direcciones en 10 bits AD8:AD10: Bits que configuran la parte alta de la direccin del dispositivo, en modo de 10 bits
4.5.
o Repeticin de la condicin de start: Esta propiedad del mdulo IIC permite que se genere, en cualquier momento, una condicin de start sin necesidad de haber sucedido una condicin de stop anterior. o Procedimiento de arbitraje: Esta propiedad permite que varios maestros estn conectados al BUS IIC. Cuando dos o ms maestros tratan de acceder al BUS al mismo tiempo, un proceso de sincronizacin 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 Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 35
este caso, la trama hacia el esclavo no llevar condicin de stop. Esta accin 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 direccin determinada. Una llamada general se puede hacer en formato de 7 o 10 bits de direccin. Cuando un esclavo identifica que el llamado coincide con su propia direccin, el bit IICS[IAAS] es puesto a 1 y el llamado deja de ser general. Si la direccin llamada es la 0x00, se tratar entonces de una llamada general y el software del usuario determinar la accin a tomar. Si el bit IICC2[GCAEN] = 0, el bit de ACK no es devuelto y el dato es ignorado.
Pgina 36
Figura 42. Lneas de comunicacin USB 1.1 y 2.0 A nivel de alimentacin, el cable proporciona la tensin nominal de 5 V. Es necesario definir correctamente el dimetro del hilo con el fin de que no se produzca una cada de tensin demasiado importante en el cable. Una resistencia de terminacin instalada en la lnea de datos permite detectar el puerto y conocer su configuracin (1,5 o 12 Mbits/s). A nivel de seal, se trata de un par trenzado con una impedancia caracterstica 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 tensin en modo comn. El reloj se transmite en el flujo de datos, la codificacin 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 seccin puede proporcionar una determinada potencia mxima siendo el PC el encargado de suministrar la energa. Adems, el perifrico puede estar autoalimentado (self powered).
Pgina 37
Control de consumo: El ordenador gestiona el consumo, teniendo capacidad de poner en reposo (suspend) o en marcha a un perifrico USB. En reposo, este reduce su consumo (si puede), quedndose la parte USB funcional. Esta gestin est orientada especialmente a los equipos porttiles.
Pgina 38
Un Hub tiene uno o ms puertos para conectar dispositivos. Cada dispositivo debe contener los circuitos y el cdigo que le indique cmo comunicarse con el host. La especificacin USB define los cables y conectores que conectan los dispositivos a los Hubs.
5.3.
Cada transferencia USB est integrada por una o ms transacciones, y a su vez, cada transaccin contiene paquetes. Antes de explicar cmo est conformada una transferencia, se definen algunos trminos.
5.3.1.
Endpoints
Todo el trfico del bus viaja desde o hacia los endpoint de cada dispositivo. Un endpoint es un buffer que almacena datos. Tpicamente es un bloque de memoria o un registro ubicado en el chip
Pgina 39
del controlador del dispositivo. Los datos almacenados en un endpoint son datos recibidos o datos que estn esperando ser transmitidos. El host tambin 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 especificacin USB define a un endpoint como una porcin nica direccionable del dispositivo USB que es origen o destino de la informacin en el flujo de comunicacin entre el host y el dispositivo. La direccin de un endpoint est compuesta por el nmero de endpoint y su sentido. El nmero 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 nmero. 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 envan datos en un solo sentido. Un nmero 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 nmero del endpoint desde uno a quince y el sentido de transmisin, entrada o salida. En cambio un dispositivo low speed est limitado a dos endpoint adicionales con cualquier combinacin de sentidos. Cada transaccin en el bus comienza con un paquete que contiene un nmero de endpoint y un cdigo que indica el sentido del flujo de datos y si se inicia o no una transferencia de control. Los cdigos utilizados son IN, OUT y SETUP. Una transaccin del tipo SETUP es similar a una OUT por la razn 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 transaccin porque esta es el nico tipo de transaccin que un dispositivo siempre debe aceptar, adems 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 tubera o pipe. Es una asociacin entre el endpoint de un dispositivo y el software del controlador del host. Durante el proceso de enumeracin se establecen pipes. Si el dispositivo es removido del bus, el host remueve las tuberas que no son necesarias. Cada dispositivo tiene un control por defecto de pipe utilizando el endpoint cero. La informacin de configuracin 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 informacin que le dice al host todo lo que necesita saber sobre el endpoint del dispositivo para poder comunicarse con l. La informacin incluye la direccin del endpoint, el tipo de transferencia a usar, el tamao mximo de los paquetes de datos, y cuando sea necesario, el intervalo deseado para las trasferencias.
Pgina 40
Uso Tpico
Identificacin y configuracin. S. S.
IN y OUT.
In - OUT.
In - OUT
IN - OUT
Pgina 41
S.
S.
S.
No.
No.
No.
No.
S.
No.
No.
S.
S.
dispositivo configura tpicamente, un endpoint para responder a los paquetes recibidos, y el hardware responde a los paquetes cuando llegan.
Figura 44. Caractersticas de una trama de Datos Una transferencia con una pequea cantidad de datos, tal vez requiere solo una transaccin. Otras transferencias requieren mltiples transacciones con un conjunto de datos en cada.
5.3.6.
Cada uno de los tipos de transferencias definidos, estn compuesto por una o ms transacciones, a su vez cada transaccin est integrada por dos o tres fases, en la tabla 7 se muestra las fases integrantes para cada tipo de transferencia. Una transaccin 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 informacin con un formato definido. Al comienzo de cada paquete se coloca informacin de identificacin llamado Packet ID (PID). Dependiendo de la transaccin, el PID puede estar seguido por una direccin de endpoint, datos, informacin de estado o el nmero de frame junto con los bits de chequeo de error. Fase token: el host inicia la comunicacin enviando este paquete. El PID indica el tipo de transaccin: SETUP, IN, OUT o comienzo del frame. Fase de datos: el host o el dispositivo trasfiere cualquier tipo de informacin en el paquete de datos. El PID incluye un valor de secuencia de datos ( data toggle) que es Pgina 43
usado para proteger a datos perdidos o duplicados cuando la transferencia tiene mltiples paquetes. Fase de handshake: el host o el dispositivo enva un cdigo que indica el estado de la transferencia, si result exitosa u ocurri algn tipo de error. En transferencias isochronous no se utiliza esta fase. Los cdigos utilizados en el PID son ACK, NAK, STALL o NYET. Tabla 7: fases integrantes de cada tipo de transferencia. Tipo de transferencia Transaccin Fases (Paquetes) Token. Setup. Una transaccin. Data. Handshake. Token. Control. Data. Cero o ms transacciones Data. Handshake. Token. Estado. Una transaccin. Data. Handshake. Token. Una o ms transacciones. Bulk. Data. (IN - OUT). Handshake. Token. Una o ms transacciones. Interrupt. Data. (IN - OUT). Handshake. Una o ms transacciones. Isochronous. (IN - OUT). Token. Data.
Las seales de handshake son transmitidas en los paquetes de handshake o datos. En todos los casos, quien recibe la informacin de handshake, la utiliza para decidir qu hacer a continuacin. Descripcin General de un Microcontrolador (Mdulos de Comunicacin) Pgina 44
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 cdigo. STALL: tiene tres significados: solicitud de control no soportado, pedido de control fallido o fallo del endpoint. NYET: nicamente dispositivos high speed lo utilizan. Despus 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, enva 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 ms eficiente que enviar todo el paquete de datos, encontrar que el dispositivo no est listo, y tener que reenviar ms tarde. ERR: The ERR handshake is used only by high-speed hubs in complete-split transactions. ERR indicates the device didnt return an expected handshake in the transaction the hub is completing with the host.
5.3.7.
Chequeo de error.
La especificacin USB da los requerimientos de hardware necesarios para reducir el ruido en las lneas, y de esta forma reducir la probabilidad de errores. De todas formas cualquier perturbacin, como la desconexin de un cable USB, puede alterar otra transmisin. Por esa razn, se incorpora a cada paquete, bits para el chequeo de errores. Adicionalmente, para transferencias que requieren mltiples transacciones, se incorpora un valor llamado data toggle que mantiene al transmisor y al receptor en forma sincronizada de manera de no omitir una transaccin. Los bits para el chequeo de errores son calculados utilizado el algoritmo llamado comprobacin de redundancia cclica (CRC). El dispositivo transmisor realiza el clculo y enva el resultado con los datos transmitidos, luego el dispositivo receptor realiza un clculo 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 enva el handshake, lo que significa que se debe retransmitir.
5.4.
Enumeracin de dispositivos.
Antes de que una aplicacin pueda comunicarse con un dispositivo, el host necesita aprender de este. En el proceso de enumeracin es cuando ocurre el intercambio de informacin 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 direccin al dispositivo, leer los descriptores del dispositivo, asignar y cargar el controlador del dispositivo, y finalmente seleccionar la configuracin de alimentacin requerida por el dispositivo, endpoints y otras caractersticas. Una vez finalizado este proceso, el dispositivo est listo para trasferir o recibir datos utilizando los endpoint del dispositivo.
5.4.1.
Proceso de enumeracin.
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
Pgina 45
interroga a su root hub si hay dispositivos conectados, despus del arranque peridicamente se realiza esta accin. En el proceso de reconocimiento de un nuevo dispositivo, el host enva una serie de solicitudes al hub donde se conecto el dispositivo. El hub establece la comunicacin entre el dispositivo y el host. Luego, el host intenta enumerar el dispositivo realizando transferencias de control, las cuales contienen solicitudes estndar dirigidas al endpoint cero del dispositivo. Para que este proceso termine satisfactoriamente, el dispositivo debe responder a cada solicitud retornando la informacin pedida y realizando las tareas solicitadas. Tpicamente el firmware de un dispositivo contiene toda la informacin 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 informacin, que le permiten al host aprender del dispositivo. Cada descriptor contiene informacin del dispositivo en su totalidad o de un elemento del dispositivo. Son solicitados durante el proceso de enumeracin por el host utilizando transferencias del tipo de control. A medida que el proceso de enumeracin progresa la solicitud de descriptores se concentra en caractersticas ms especficas: primero en todo el dispositivo, despus en cada configuracin, posteriormente en la configuracin de cada interfaz, y finalmente, en los endpoint de cada interfaz. El descriptor tiene un registro que indica el tamao 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 01h 02h 03h 04h 05h Tipo descriptor. Dispositivo. Configuracin. string Interfaz. Endpoint. Requerido? S. S. No. Texto descriptivo opcional. S. No, si el dispositivo nicamente usa endpoint 0. S, para dispositivos que soportan full y high speed. S, para dispositivos que soportan full y high speed. No.
06h
device qualifier.
07h 08h
other_speed_configuration interface_power
Pgina 46
A continuacin se describen los principales tipos de descriptores: Descriptor de dispositivo: contiene informacin bsica acerca del dispositivo, al conectarse un dispositivo, este es el primer descriptor que el host solicita. Un dispositivo puede tener un slo descriptor de este tipo. Estos descriptores proveen informacin general acerca del fabricante, nmero de producto, nmero de serie, clase de dispositivo y el nmero de configuraciones admitidas. A continuacin se indican los elementos que forma parte del descriptor de dispositivo: bcdUSB: indica la versin en BCD, ej versin 2.0 se indica 0200h idVendor: el host tiene un archivo .inf que contiene este valor idProduct: identificacin del producto bcdDevice: versin del producto en BCD iManufacturer: es un ndice que apunta a una descripcin del fabricante iProduct: ndice que apunta a una descripcin del producto iserialnumber: un ndice que apunta al nmero de serie del dispositivo
Descriptor de configuracin: Provee informacin acerca de los requerimientos de alimentacin del dispositivo y cuantas interfaces son soportadas. Puede existir ms de una configuracin para un dispositivo, aunque tpicamente se utiliza una. bNumConfigurations: nmero de configuraciones que soporta el dispositivo bMaxPacketSize0: el tamao mximo de paquete para el endpoint 0. Para full speed se puede usar hasta 64 bDeviceClass: para dispositivos cuya funcin 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 especficos de un endpoint. En un dispositivo puede haber varios endpoints y pueden compartir distintas configuraciones. Descriptor String: son descriptores opcionales, proveen informacin descriptiva acerca de una caracterstica del dispositivo.
Adicionalmente a los descriptores estndar, un dispositivo puede contener descriptores especficos del fabricante. Estos descriptores ofrecen una va estructurada para que el dispositivo pueda proporcionar informacin detallada sobre s mismo.
Pgina 47
5.5.
Figura 45. Registro de ID del Perifrico IDx: Bits para la identificacin del perifrico. Por defecto siempre se lee como un perifrico 0x04.
Figura 46. Registro ID complementario NIDx: Bits como complemento a 1 del ID del perifrico.
Figura 47. Registro de Revisin del USB REVx: Bits que indican el nmero de revisin del ncleo del USB.
Pgina 48
Figura 48. Registro de Informacin Adicional del Perifrico IRQ_NUM: Nmero de interrupcin asignada al perifrico. IEHOST: Este bit es puesto a 1 cuando est habilitado el modo HOST.
Figura 49. Registro de Estado de Interrupcin 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 lnea de estado del USB cambia. La interrupcin asociada a este bit se puede utilizar para detectar un estado de RESET, resumen, conexin y datos como seales pulsantes. 0: No se ha detectado un cambio en la lnea de estado USB. 1: detectado un cambio en la lnea de estado USB. SESS_VLD_CHG: Este bit indica cuando se ha detectado un cambio en la lnea VBUS indicando que hay una sesin vlida. 0: No se ha detectado una sesin vlida. 1: Se ha detectado una sesin vlida.
Pgina 49
B_SESS_CHG: Este bit indica cuando se ha detectado un cambio en la lnea 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 lnea 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.
Figura 50. Registro del control de la interrupcin en modo OTG ID_EN: Habilita la interrupcin por evento ID. 0: La interrupcin por evento ID est deshabilitada. 1: La interrupcin por evento ID est habilitada. 1_MSEG_EN: Habilita la interrupcin por evento 1_MSEG. 0: La interrupcin por evento 1_MSEG est deshabilitada. 1: La interrupcin por evento 1_MSEG est habilitada. LINE_STAT_EN: Habilita la interrupcin por evento LINE_STAT_CHG. 0: La interrupcin por evento LINE_STAT_CHG est deshabilitada. 1: La interrupcin por evento LINE_STAT_CHG est habilitada. SESS_VLD_CHG: Habilita la interrupcin por evento SESS_VLD_CHG. 0: La interrupcin por evento SESS_VLD_CHG est deshabilitada. 1: La interrupcin por evento SESS_VLD_CHG est habilitada. B_SESS_EN: Habilita la interrupcin por evento B_SESS _CHG. 0: La interrupcin por evento B_SESS _CHG est deshabilitada. 1: La interrupcin por evento B_SESS _CHG est habilitada. A_SESS_EN: Habilita la interrupcin por evento A_SESS _CHG. 0: La interrupcin por evento A_SESS _CHG est deshabilitada. 1: La interrupcin por evento A_SESS _CHG est habilitada.
Pgina 50
Figura 51. Registro de estado de interrupcin 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 conexin 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 lneas 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 lnea LINE_STAT_CHG no est estable. 1: La lnea LINE_STAT_CHG est estable. SESS_VLD: Este bit indica cuando una sesin es vlida. 0: El voltaje VBUS est por debajo del umbral de una sesin vlida tipo B. 1: El voltaje VBUS corresponde al umbral de una sesin vlida tipo B. B_SESS_END: Este bit indica cuando una sesin tipo B ha terminado. 0: El voltaje VBUS corresponde al umbral de un final de una sesin tipoB. 1: El voltaje VBUS est por debajo del umbral de un final de una sesintipo B. A_VBUS_VLD: Este bit indica cuando el VBUS tipo A es vlido. 0: El voltaje VBUS est por debajo del umbral vlido del VBUS tipo A. 1: El voltaje VBUS corresponde al umbral vlido del VBUS tipo A.
Pgina 51
Figura 52. Registro de control OTG DP_HIGH: Habilita el pullup para la lnea D+. 0: El pullup para la lnea D+ no est habilitado. 1: El pullup para la lnea D+ est habilitado. DP_LOW: Habilita el puldlown para la lnea D+. 0: El pulldown para la lnea D+ no est habilitado. 1: El pulldown para la lnea D+ est habilitado. DM_LOW: Habilita el pulldown para la lnea D-. 0: El pulldown para la lnea D- no est habilitado. 1: El pulldown para la lnea D- est habilitado. VBUS_ON: Seal de encendido del VBUS. 0: La seal 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 pulldowns para las lneas D+ y D-. 1: Los controles sobre los pullups y pulldowns son usados. VBUS_CHG: Inserta una resistencia a la seal de VBUS. 0: No inserta una resistencia a la seal de VBUS. 1: Inserta una resistencia a la seal de VBUS. VBUS_DSCHG: Inserta una resistencia de descarga a la seal de VBUS. 0: No inserta una resistencia de descarga a la seal de VBUS. 1: Inserta una resistencia de descarga a la seal de VBUS.
Pgina 52
Figura 53. Registro de estado de interrupcin STALL: Cuando el dispositivo est en modo objetivo (Target), este bit se pone a 1 cuando el SIE (Serial Interface Engine) enva una seal de STALL. Cuando se est en modo HOST, este bit se pone a 1 cuando el mdulo USB detecta una seal de STALL. Esta interrupcin puede ser usada para determinar si la ltima transaccin USB fue completada con xito o si par (STALL). ATTACH: Interrupcin por enganche. Este bit es puesto a 1 cuando el mdulo USB detecta un enganche de un dispositivo USB. Esta seal slo ser vlida si el bit HOST_MODE_EN =1. esta interrupcin indica que un perifrico est conectado y deber ser configurado. RESUME: Este bit es puesto a 1 dependiendo de las seales DP/DM y puede ser usado como una seal remota para despertar el dispositivo pegado al bus USB. SLEEP: Este bit es puesto a 1 cuando el mdulo 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 ncleo 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 mdulo USB recibe una seal 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 ncleo 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 mdulo USB a decodificado un RESET vlido. La accin anterior informa al microcontrolador que podr escribir un 0x00 dentro del registro de direcciones y habilitar el terminal 0.
Pgina 53
Figura 54. Registro de habilitacin de interrupciones (INT_ENB) STALL_EN: Bit para habilitar interrupcin por un evento tipo STALL. 0: Inhibe interrupcin por evento STALL. 1: Habilita interrupcin por evento STALL. ATTACH_EN: Bit para habilitar interrupcin por un evento tipo ATTACH. 0: Inhibe interrupcin por evento ATTACH. 1: Habilita interrupcin por evento ATTACH. RESUME_EN: Bit para habilitar interrupcin por un evento tipo RESUME. 0: Inhibe interrupcin por evento RESUME. 1: Habilita interrupcin por evento RESUME. SLEEP_EN: Bit para habilitar interrupcin por un evento tipo SLEEP. 0: Inhibe interrupcin por evento SLEEP. 1: Habilita interrupcin por evento SLEEP. TOK_DNE_EN: Bit para habilitar interrupcin por un evento tipo TOK_DNE. 0: Inhibe interrupcin por evento TOK_DNE. 1: Habilita interrupcin por evento TOK_DNE. SOF_TOK_EN: Bit para habilitar interrupcin por un evento tipo SOF_TOK. 0: Inhibe interrupcin por evento SOF_TOK. 1: Habilita interrupcin por evento SOF_TOK. ERROR_EN: Bit para habilitar interrupcin por un evento tipo ERROR. 0: Inhibe interrupcin por evento ERROR. 1: Habilita interrupcin por evento ERROR. USB_RST_EN: Bit para habilitar interrupcin por un evento tipo USB_RST. 0: Inhibe interrupcin por evento USB_RST. 1: Habilita interrupcin por evento USB_RST.
Pgina 54
Figura 55. Registro de estado de interrupcin por error (ERR_STAT) BTS_ERR: Este bit se pone a 1 en la deteccin de error por evento de BIT STUFF (Bit de relleno para sincrona). DMA_ERR: Este bit se pone a 1 si el mdulo 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 condicin de bajo-flujo (underflow). Si se est procesando una transferencia tipo RX (IN), esta puede causar una condicin de sobreflujo (overflow). Este tipo de condicin es muy usada en el desarrollo de arbitramiento de dispositivos, tanto para el microprocesador como para el mdulo USB. Lo anterior minimiza la demanda en el requerimiento de bus y tiempos de inactividad muy grandes ( grand latency). Este bit tambin es puesto a 1 si un paquete de datos supera el tamao mximo especificado en el BDT, para este caso la mquina trunca el paquete y lo almacena en el buffer de memoria. BTO_ERR: Este bit se pone a 1 en la deteccin de error por evento de un tiempo por fuera (timeout) en la devolucin del bus (bus turnaround). El mdulo 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 cclico redundante CRC16. CRC5_EOF: Este bit tiene dos funciones: La primera es que si el Mdulo USB est operando en modo perifrico (HOST_MODE_EN = 0) y se detecta un error de redundancia cclica tipo CRC5, el bit se pone a 1. La segunda funcin es que si el mdulo 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 interrupcin se usa en el software para el despacho de paquetes de informacin 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 transaccin falla.
Pgina 55
Figura 56. Registro de habilitacin de interrupcin por error BTS_ERR_EN: Bit para habilitar la interrupcin por evento de BTS_ERR. 0: Inhibe interrupcin por evento BTS_ERR. 1: Habilita interrupcin por evento BTS_ERR. DMA_ERR_EN: Bit para habilitar la interrupcin por evento de DMA_ERR. 0: Inhibe interrupcin por evento DMA_ERR. 1: Habilita interrupcin por evento DMA_ERR. BTO_ERR_EN: Bit para habilitar la interrupcin por evento de BTO_ERR. 0: Inhibe interrupcin por evento BTO_ERR. 1: Habilita interrupcin por evento BTO_ERR. DFN8_EN: Bit para habilitar la interrupcin por evento de DFN8. 0: Inhibe interrupcin por evento DFN8_EN. 1: Habilita interrupcin por evento DFN8_EN. CRC16_EN: Bit para habilitar la interrupcin por evento de CRC16. 0: Inhibe interrupcin por evento CRC16_EN. 1: Habilita interrupcin por evento CRC16_EN. CRC5_EOF_EN: Bit para habilitar la interrupcin por evento de CRC5_EOF. 0: Inhibe interrupcin por evento CRC5_EOF. 1: Habilita interrupcin por evento CRC5_EOF. PID_ERR_EN: Bit para habilitar la interrupcin por evento de PID_ERR. 0: Inhibe interrupcin por evento PID_ERR. 1: Habilita interrupcin por evento PID_ERR.
Pgina 56
Apndice
1. Mdulo Serial en la Familia HC908
Este modulo no se encuentra en el HC908QY4, pero se encuentra en la mayora de los MCUs de la Familia HC908 [3] y [4].
1.1. Caractersticas
Full duplex, Alta Velocidad, asincrnico, programable de 8 o 9 bit de largo de caracter. Dos mtodos de receiver wakeup. Pedidos de Interrupcin separados para Rx y Tx. Habilitacin separada del Transmisor y el Receptor. Polaridad programable de la salida del Transmisor. Operacin dirigida por INTS con ocho Flags de interrupcin. Transmitter Empty Transmission Complete Receiver Full Idle Receiver Input Receiver Overrun Noise Error Framing Error Parity Error Modo de operacin Low power Framing Error Detection en el receptor Chequeo de Paridad por Hardware
Pgina 57
Figura 57. Registro de seleccin de tasa de baudios. Para una frecuencia de BUS = 4,9152 MHz se pueden obtener los siguientes Baud rates: Tabla 9. Configuracin de los bits SCR Frecuencia de Bus = 4.9152 Mhz Mximo 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
Pgina 58
SCP1 0 0 1 1
Tabla 10. Configuracin de los Bits SCP SCP0 Divisor Mximo Baud Rate 0 1 76.80K Baud 1 3 25.833K Baud 0 4 19.20K Baud 1 13 5.908K Baud
Pgina 59
Figura 59. Registro SCC2 Tabla 11. Seleccin del largo de caracter M 0 1 0 0 1 1 PEN 0 0 1 1 1 1 PTY x x 0 1 0 1 Character Length 1 start + 8 (7) data + 1 (2) stop 1 start + 9 (8) data + 1 (2) stop 1 start + 7 data + Even +1 stop 1 start + 7 data + Odd +1 stop 1 start + 8 data + Even +1 stop 1 start + 8 data + Odd +1 stop
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 vaco 0 = Data register no vaco El Transmission Complete (TC) indica que el SCDR est vaco y no hay transmisin en progreso. Este bit es limpiado por la lectura del SCS1 seguida de la escritura del SCDR 1 = No hay transmisin en progreso 0 = Transmisin en progreso
Pgina 60
Tiene Buffers de datos para el shift Register TX/RX. En el SCDR se escriben datos a ser transmitidos. Inicia la operacin de transmisin.
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 bsqueda del start bitReseteado despus de se detecta un bit de stop o falsos bit de start.
Pgina 61
Referencias.
[1] Douglas H. Summerville, Embedded Systems Interfacing for Engineers using the Freescale HCS08 Microcontroller II: Digital and Analog Hardware Interfacing, Stat e 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 edicin, USA. 2001. [8] Jan Axelson, Serial Port Complete, tercera edicin, Madison, Lakeview research, 2007.
Pgina 62