Está en la página 1de 27

IUT Dr.

Federico Rivero Palacio

Prof. Servio Crdova

Universal Serial Bus

Nace en 1994, tras una alianza entre las 4 principales plantas de Desarrollo de Hardware y Software (Compaq, Intel, Microsoft, NEC). Posteriormente se unieron HP, Lucent y Phillips. Originalmente fue creado con las siguientes intensiones: Coneccin del PC al Telefono Facilidad de Uso Expancin de Puerto

Universal Serial Bus


Descripcin del sistema USB
El USB es un bus punto a punto: dado que el lugar de partida es el

host (PC o hub), el destino es un perifrico u otro hub. No hay ms que un nico host (PC) en una arquitectura USB. Los PC estndar tienen dos tomas USB, lo que implica que, para permitir ms de dos perifrico simultneamente, es necesario un hub. Algunos perifricos incluyen un hub integrado, por ejemplo, el teclado USB, al que se le puede conectar un Mouse USB. Los perifricos comparten la banda de paso del USB. El protocolo se basa en el llamado paso de testigo (token). El ordenados proporciona el testigo al perifrico seleccionado y seguidamente, ste le devuelve el testigo en su respuesta. Este bus permite la conexin y la des-conexin en cualquier momento sin necesidad de apagar el equipo.

Universal Serial Bus


INTERFAZ FSICA Aspecto elctrico A nivel elctrico, el cable USB transfiere la seal y la alimentacin sobre 4 hilos.

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).

Universal Serial Bus


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 flow de datos, la codificacin es de tipo NRZI (non-return to zero inverted), 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.

Universal Serial Bus


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). 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.

Universal Serial Bus


Tipos de Conectores Existen 2 Tipos de conectores de USB. Conector tipo A, Conector Tipo B.

Asignacin los Pines del USB


Pin N 1 2 3 4 Nombre Vcc (+5 voltios) Data Data + Ground (GND) Color Rojo Blanco Verde Negro

Universal Serial Bus


Asignacin los Pines del Mini-USB Mayormente usado en aplicaciones de comunicacin de dispositivos electrnicos portables (Celulares, PDA, Cmaras, etc).

Pin N
1 2 3 4 5

Nombre
Vcc (+5 voltios) Data Data + No Conectado Ground (GND)

Color
Rojo Blanco Verde -Negro

Universal Serial Bus

Universal Serial Bus


Un dispositivos USB conectado al bus, requiere un controlador completamente personalizado, o bien pueden pertenecer a una clase de dispositivo. Las Clases de dispositivos permiten que el mismo controlador de dispositivo pueda utilizarse para varios dispositivos con funcionalidades similares.
Clases de los Dispositivos
0x00 0x01 0x02 0x03 0x07 0x08 0x09 0x0B 0x0E 0xE0

Descripcin
Reservado Dispositivo de Audio Dispositivo de Comunicacin Human Interface Dinamic (HID) Dispositivos de Impresin Dispositivo de Alamcenamiento Masivo Dispositivo Hub Dispositivo Lector de Memorias Inteligentes Dispositivos de Video Dispositivo Inalambrico

Ejemplo de Dispositivo
Sound Card Modem Fax Teclado Mouse Impresora Memory Card Pendrive Hubs Lector de Memorias Webcam Scanner Bluetooth

Universal Serial Bus


TERMINOLOGA USB
Host: Dispositivo maestro que inicia la comunicacin (Generalmente la

computadora). Hub: Dispositivo que contiene uno o mas conectores o conexiones internas hacia otros dispositivos usb, el cual habilita la comunicacin entre el host y con diversos dispositivos. Cada conector representa un puerto USB. Dispositivo compuesto: Es aquel dispositivo con mltiples interfaces independientes. Cada una tiene una direccin sobre el bus para cada interface puede tener un diferente driver device en el host. Puerto USB: Cada host soporta solo un bus, cada conector en el bus representa un puerto USB por lo tanto sobre le bus puede haber uno o varios conectores , pero solo existe una ruta y solo un dispositivo puede transmitir informacin a un tiempo.

Universal Serial Bus


TERMINOLOGA USB
Driver: es un programa

que habilita aplicaciones para poderse comunicar con el dispositivo. Cada dispositivo sobre el bus debe tener un driver, algunos perifricos utilizan los drivers que trae Windows. Puntos terminales (Endpoints): Es una localidad especifica dentro del dispositivo. El Endpoint es un buffer que almacena mltiples bytes, tpicamente es un bloque de la memoria de datos o un registro dentro del micro controlador. Todos lo dispositivos deben soportar el punto terminal 0. Este punto terminal es el que recibe todo el control y la peticiones de estado durante la enumeracin cuando el dispositivo esta sobre el bus.

Universal Serial Bus


TERMINOLOGA USB
Tuberas (Pipes):

Es un enlace virtual entre el host (la PC) y el dispositivo USB, este enlace configura los parmetros asociados con el ancho de banda que tipo de transferencia se va a utilizar (Control, Bulk, Isocrona o Interrupt) direccin del flujo de datos y el mximo y/o mnimo tamao de los paquetes/buffers. Cada enlace est caracterizado por su banda de paso (Token), su tipo de servicio, el nmero de punto terminal (End Point) y el tamao de los paquetes. Estos enlaces se definen y crean durante la inicializacin del USB . Siempre existe un enlace virtual 0 que permite tener acceso a la informacin de configuracin del perifrico USB (estado, control e informacin). La norma USB define 2 tipos de enlaces virtuales (pipe); stream y message.

Universal Serial Bus


TERMINOLOGA USB Stream Pipes: se trata de un flujo sin formato USB definido, esto significa que se puede enviar cualquier tipo de dato. Este tipo de pipe soporta las transferencias bulk, isocronas, y interrupt. Adems tanto el host como el dispositivo USB pueden controlar. Message Pipes: este tipo de enlace virtual si tiene un formato USB definido y solo puede soportar la transferencia Control.

Universal Serial Bus


TIPOS DE TRANSFERECIA El enlace virtual (pipe) puede ser de cuatro tipos: Control: Modo utilizado para realizar configuraciones: existe siempre sobre el Punto terminal 0 (EndPoint 0). Todos los dispositivos USB deben soportar este tipo de transferencia. Los datos de control sirven para configurar el perifrico en el momento de conectarse al USB. Algunos drivers especficos pueden utilizar este enlace para transmitir su propia informacin de control. Este enlace no tiene prdida de datos, puesto que los dispositivos de deteccin de recuperacin de errores estn activos a nivel USB.

Universal Serial Bus


TIPOS DE TRANSFERECIA Bulk: Este modo se utiliza para la transmisin de importantes cantidades de informacin. Como el tipo control, este enlace no tiene prdida de datos. Este tipo de transferencia es til cuando la razn de transferencia no es critica como por ejemplo , el envi de un archivo a imprimir o la recepcin de datos desde un escner. En estas aplicaciones, la transferencia es rpida, pero puede espera si fuera necesario. Solo los dispositivos de media y alta velocidad utilizan este tipo de transferencia.

Universal Serial Bus


TIPOS DE TRANSFERECIA Interrupt: modo utilizado para transmisiones de pequeos paquetes, rpidos, orientados a percepciones humanas (ratn, punteros). Este tipo de transferencia son para dispositivos que deben recibir atencin peridicamente y lo utilizan los dispositivos de baja velocidad. Este tipo de transmisin garantiza la transferencia de pequeas cantidades de datos. El tiempo de respuesta no puede ser inferior al valor especificado por la interfaz. El ratn o cualquier otro dispositivo apuntador es una aplicacin tpica de este modo de transmisin. Isochronous o Flujo en tiempo real: modo utilizado para la transmisin de audio o video comprimido. Este tipo de transmisin funciona en tiempo real. Este es el modo de mayor prioridad. La transmisin de la voz es un ejemplo de esta aplicacin. Si sta no se transmite correctamente, pueden llegar a orse parsitos (glich) y la aplicacin puede detectar ciertos errores de los llamados underruns .

Universal Serial Bus


ENUMERACIN Cuando se conecta un dispositivo USB a la PC se produce el Proceso de Enumeracin, el cual consiste en que el host le pregunta al dispositivo que se presente y le diga cuales son sus parmetros, tales como: Consumo de energa expresada en unidades de Carga Numero y tipos de Puntos terminales Clase del producto. Tipo de transferencia Razn de escrutinio, etc. El proceso de enumeracin es inicializado por el host cuando detecta que un nuevo dispositivo que ha sido adjuntado al Bus. El host le asigna una direccin al dispositivo adjuntado al bus y habilita su configuracin permitiendo la transferencia de datos sobre el bus.

Universal Serial Bus

Universal Serial Bus


Micro controlador PIC-18F2550

Universal Serial Bus


Lo que pretendemos en este proyecto es implementar una comunicacin bidireccional serie, Communications Devices Class, entre el PIC y cualquier Software del PC que use un puerto COM Serie estndar pero emulndolo va USB 2.0 a full speed. Vamos a realizar los ajustes necesarios en el Firmware del PIC para que sea reconocido por el Windows como un dispositivo Serie estndar y lo registre como un puerto COM Virtual. Como intermediario vamos a utilizar un recurso que nos provee Microchip: El Driver .inf para Windows mchpcdc.inf. Para el firmware vamos a utilizar como base el ejemplo y descriptor USB que trae como ejemplos el CCS C, adaptndolo a nuestras necesidades, fundamentalmente darles los VID&PID que espera encontrar el driver para Windows. Del lado del PC vamos a utilizar los programas que disponemos para monitorizar un puerto COM serie estndar: el HyperTerminal de Windows o Siow de CCS C. En el PC es imprescindible instalar el Driver Windows mchpcdc.inf para Windows XP/Seven que nos ofrece Microchip, que nos va a servir de puente entre estos softwares con el canal USB del PC pero emulado como un puerto COM. Este .inf Es quien define los VID&PID que vamos a utilizar.

Universal Serial Bus


Como podemos ver en OSC1 y OSC2 conectamos nuestro cristal: 4 Mhz, 8 Mhz, 12 Mhz, 16 Mhz, 20 Mhz, 24 Mhz, 40 Mhz 48 Mhz, que son los cristales validos compatibles con lo que sigue a continuacin. Debemos Tener en cuenta que este cristal es el mismo para generar la frecuencia de 48 Mhz necesaria para el USB 2.0 y para el Clock del PIC, que pueden ser la misma o no, segn la configuracin que al final adoptemos, quiere esto decir que podemos tener el USB a 48 Mhz y nuestro programa en el PIC funcionando a 12 Mhz por ejemplo. Observemos que justo tras el Smicht Trigger del Primary Oscillator salen tres lneas en paralelo que van a mdulos distintos con distintas posibilidades. La primera lnea, la superior, va directamente al switch USBDIV que si est a cero indica que la frecuencia base original del cristal es directamente inyectada al USB, si pasa el switch FSEN que elige entre todo el sistema directo/PLL o el Primary Clock del CPU. Esta Opcin de inyectar directamente la frecuencia del cristal es obviamente solo posible si usamos un Cristal de 48 Mhz que es lo que necesitamos para el USB.

Universal Serial Bus


El mdulo USB Clock Source tiene a su entrada un PLL Prescaler, o sea un divisor de frecuencia. En cada una de sus salidas vamos a tener FOSC dividida por 1, 2, 3, 4, 5, 6, 10 12. Y mediante PLLDIV que no es mas que un Multiplexor vamos a seleccionar la que deseamos usar. As si nuestro cristal es de 12 Mhz y en PLLDIV colocamos un 010 estaremos dividiendo por 3 el valor de FOSC con lo que tendremos 4 Mhz a la salida del MUX. Si por el contrario el cristal es de 20 Mhz y en PLLDIV colocamos un 100 entonces dividiremos por 5 FOSC con lo que tendremos tambin 4 Mhz a la salida del MUX. Esta salida del MUX es lo que utilizamos para inyectrsela al PLL de 96 Mhz. Si le metemos 4 Mhz l genera 96 Mhz. Es esta capacidad de pasar de 4 Mhz a 96 Mhz la que nos da la posibilidad de usar un montn de cristales distintos. Pero 96 Mhz es el doble de lo que nos hace falta para el USB que son 48 Mhz. Asi que inmediatamente despus tenemos que tener un divisor por 2 que es el segundo camino por el que llegamos a USBDIV y en este caso le pondremos un 1 para usar la seal proveniente del PLL.

Universal Serial Bus


Observemos que adems de inyectar la seal oscilante en USBDIV tambin se conecta la seal del PLL a 96 Mhz en un Postscaler, otro divisor, en este caso por 2, 3, 4 6 y cuyas seales van al CPUDIV. O sea que podemos generar una seal de reloj para nuestro PIC, no para el USB sino para la velocidad de ejecucin de nuestro programa tomndola del PLL y que puede ser de 16 Mhz, 24 Mhz, 32 Mhz 48 Mhz. Pero adems la seal original llegaba en paralelo al Oscilator Postcaler, otro divisor ms, que de forma directa, sin pasar por el mdulo PLL nos divide la frecuencia original del cristal por 1, 2, 3 4 y que tambin va a parar al CPUDIV pero desde otro origen. Con este mdulo podemos obtener otra gama de frecuencias distinta para hacer correr el programa. Cual de ambos CPUDIV vamos a utilizar lo seleccionamos con el switch FOSC3:FOSC0 que es de donde sacaremos la definitiva frecuencia de ejecucin de programas.

Universal Serial Bus


Por ltimo tambin tenemos disponible una entrada proveniente del Primary Clock y que dividida por 4 llega tambin a FSEN y podemos utilizarla en lugar de la que le llega desde el canal directo/PLL. Es as como podemos ver, que logramos realizar las diversas configuraciones para hacer correr nuestro PIC a decenas de velocidades distintas siendo capaz, al mismo tiempo de tener disponibles los 48 Mhz imprescindibles para el USB 2.0.

Universal Serial Bus


VID&PID
El VID es un nmero de 16 bits que significa Vendor Identification o cdigo que identifica al fabricante del hardware a conectar. En nuestro caso utilizamos el nmero 04D8h que identifica a Microchip. El PID es un nmero de 16 bits que significa Product Identification o cdigo que identifica al dispositivo en concreto hardware a conectar. En nuestro caso utilizamos el nmero 000Bh que identifica a la familia de los PIC18 de este fabricante. Recordar que la conjuncin de estos dos nmeros VID&PID es la que nos va a servir para conectar con el Driver de Windows XP Cuando el S.O. conecte con nuestro firmware recibir el VID&PID y buscar entre sus drivers instalados para encontrar el que corresponde a esta identificacin, si no la encuentra nos preguntar sobre donde ha de buscar un driver adecuado y deberemos indicarle su ubicacin. Este driver deber estar configurado para conectar con un hardware cuyo VID&PID sea el mismo. No olvidar que el driver para puertos serie ya existe en Windows, aqu solo debemos darle el enlace con el .inf para que conecte correctamente con el firmware que tiene el PIC. VID: 0x04D8 PID: 0x000B

Universal Serial Bus


USB_STRING_DESC
La tabla USB_STRING_DESC contiene la descripcin del dispositivo detectado por el Driver de Windows XP y que nos va a mostrar en la correspondiente entrada en la lista del Hardware Instalado en el Sistema. Consta de dos partes o tablas, la propiamente dicha USB_STRING_DESC que contiene las descripciones requeridas y una tabla accesoria llamada USB_STRING_DESC_OFFSET que contiene los offset, o desplazamientos con respecto al inicio de USB_STRING_DESC en donde se encuentran las correspondientes cadenas. Ambas constan de tres elementos cada una de ellas. USB_STRING_DESC_OFFSET tiene tres nmeros que indican cada uno de ellos donde comienza el correspondiente dato en la tabla USB_STRING_DESC. As un contenido de {0,4,12} nos dice que el primer string comienza en el byte 0, el segundo en el byte 4 y el tercero se encuentra a partir del byte nmero 12. Si cambiamos la longitud de cualquiera de los strings deberemos reordenar esta tabla correspondientemente con solo contar los caracteres y apuntar en esta tabla el nmero de byte donde comienza cada uno de ellos. USB_STRING_DESC contiene los tres strings en concreto que deseamos transmitir con el descriptor USB. Cada uno de ellos tiene la misma estructura que consta de un primer byte que indica la longitud total de la correspondiente cadena, un segundo byte que indica el tipo de dato que viene a continuacin y por ltimo tantos bytes como sean necesarios como contenido del string. El primer dato de esta tabla es: 4, USB_DES_STRING_TYPE, 0x09, 0x04 que puede leerse como 4 : Longitud en bytes del dato incluido l mismo. USB_DES_STRING_TYPE que es una constante cuyo valor es 3 y que dice que lo que sigue es un string. Y 0x09, 0x04 que le indica al Windows que los strings que siguen estn escritos en correcto ingles americano (US-English). Los dos siguientes datos son los dos strings que definen nuestro dispositivo y cuya estructura es idntica al caso anterior: 8, USB_DES_STRING_TYPE, I, 0, U, 0, T, 0 que define el string el nombre IUT de nuestro Hardware. Total 8 bytes ya que IUT" se codifica aadiendo un 0x00 tras cada uno de los caracteres.

22, USB_DESC_STRING_TYPE, U, 0, S, 0, B, 0, -, 0, R, 0, S, 0, 2, 0, 3', 0, 2, 0, ., 0 que define el nombre de nuestro dispositivo como USB-RS232.

También podría gustarte