Cables 5v rojo Gnd negro D+ verde D- blanco (seal diferencial el valor depende
de la velocidad del bus 3,3v low speed 400mv high speed)
El host controla la velocidad depende de la cantidad de dispositivos conectados (126 maximo).
Low speed 1.5Mbps (1,2,3)perifricos pc Full speed 12Mbps (1,2,3)audio High speed 480Mbps (2,3)video Super speed 5Gbps (3)
Transferencia Cj. Global de datos que forman la comunicacin esta formado por varias transacciones y estas estn formados por paquetes de datos que contienen la trama USB. Las especificaciones USB permite 4 formas de transferencia Control configuracin y envio de comandos. Bulk (masiva) para grandes datos es el mas rpido pero no se garantiza un tiempo determinado (latencia) tiene correccin de errores (CRC) trabaja con velocidades (full y high) (discos duros pen drives scanner impresoras ). Isocronas (audio , video en tiempo real) latencia asegurada no tiene correccin de errores (full) Interrupcin latencia asegurada correccin de errores perifricos de pc.
Enumeracin cuando se conecta un dispositivo al host este necesita informacin del mismo. Esta informacin esta en el dispositivo en los descriptores
Descriptores datos en el dispositivo (memoria no voltil ) IDE del vendedor (VID) y del producto (PID), consumo de corriente , tipo de transferencia, endpoint utilizados, versin USB , calse utilizada, etc. (VID)(PID) (1500 us USB Implementers Forum)dos numereos de 16 bits en hexadecimal si se usa la clase CDC(Commucications Device Class) de CCS para la comunicacin USB estos valores se pueden modificar en usb_desc_cdc.h y segn el sistema operativo del host se debe modificar el archivo .inf (til cuando se quiere comercializar el producto ). Endpoint (buffer de memoria RAM en el Host tiene otro nombre ) envi y recepcin de datos o comandos de control. Endpoint 0 reservado para control (la enumeracin se realiza en este endpoint). Pipes o tuberas conexin lgica entre endpoint y software del controlador del Host se produce despus de la enumeracin, (enlazar la salida de un proceso con la entrada de otro). Clase modelo o plantilla que describe el estado y el comportamiento de los objetos que la conforman. proveen de propiedades y mtodos (funciones) reutilizables por los objetos de la clase (la especificadion USB provee de propiedades y funciones sue pueden ser usados por dispositivos q tengan caractersticas similares teclado raton).(para la clase de almacenamiento masivo se usa el driver usbstor.sys en la direccin c:\Windows\sistem32\drivers)(otra clase de pic es custom class ). Para un firware que no cumple con las especificaciones de alguna clase microchip tiene drivers los cuales son. Mchpusb.sys (binario) mchpusb.ini para cuando se conecta por primera vez sepa que driver asignarle aqu esta los VID y PID . la dll mpusbapi.lib es una capa de software que facilita por medio de funciones la comunicacin entre la aplicacin del escritorio y el driver del dispositivo (compilado en borlandc++builder 6 se facilita el cdigo fuente). Nota importante cuando se usa el driver personalizado de michochip los datos se transmiten en crudo y la aplicacin de escritorio intercambia informacin con el pic directamente atraves de los endpoints utilizados por este (se usa un protocolo que no esta definido). Es importante copiar del archivo .INF el valor del campo definido como GUI(Global Unique Identifier) es el numero para que la aplicacin pueda acceder al dispositivo, luego accederemos a la DLL desde el IDE que se escogi y se edita las propiedades y funciones publicas de la DLL buscando un campo que se llama GUI y si no coincide tendremos que pegar ese numero sin esto no se crea la tubera de conexin (pipe). En la clase CDC esto no es necesario la comunicacin esta definida a travs del puerto serial virtual y la informacin se enva en formato ASCII. Otro driver es el WinUSB http://msdn.microsoft.com/en- us/library/ff540196%28v=VS.85%29.aspx Otra es Libusb-win32 http://www.libusb.org/
Programa para el PIC (firware) la frecuencia del modulo para el pic es de 48MHz para esto se dispone de un pre escaler y un post escaler a la entrada del multiplicador se debe tener una frecuencia de 4MHz el cristal tiene que ser de 20MHz.
Se divide los 20MHz del cristal por 5 que es igual a 4MHz requeridos a la entrada del PLL y este produce 96MHz en su salida y estos se distribuyen al modulo USB dividiendo previamente por 2 para oftener los 48MHz y por otro lado alimenta al post escaler del PLL para elegir la frecuencia de trabajo en este caso de divide por 3 para oftener 32MHz. Para facilitar la programacin los compiladores como (ccs) proporcionan libreras (Stack o pila de software) Usb_init_cs() inicializa la comunicacin al principio de main Usb_cdckbhit(): retorna TRUE si hay uno o mas caracteres esperando en el buffer de recepcin Usb_cdc_grtc() obtiene el carcter recibido en el buffer de recepcin Usb_cdc_putc(char c) coloca el carcter que recibe como parmetro en el buffer de transmisin para ser enviado. Usb_task() para mantener la comunicacin se usa esta funcin en llamadas periodicas