Sunteți pe pagina 1din 5

Hola a todos En esta ocacin vengo para empezar a desarrollar entre todos una librera de USB usando el lenguaje

ensamblador para la familia de microcontroladores PIC18FXX5X. La razn de esto , es porque hay muchos usuarios que son expertos manejando ASM pero no saben utilizar bien el lenguaje C o lenguajes de alto nivel. Tambin otra razn es que quiero que todos entendamos de una manera ms profunda el funcionamiento del mdulo USB de la familia microchip...y luego de esto poder "tratar" de implementar la comunicacin USB ( por software) en cualquier microcontrolador que no disponga de este mdulo de forma fsica. Para empezar a trabajar con el puerto USB del microcontrolador veremos todos los registros del micro asociados con este perifrico , su funcionamiento y luego poco a poco comenzaremos a confeccionar los primeros programas. Bueno para empezar veremos donde estn hubicados los pines D- y D+ ( correspondientes a las seales de datos del puerto USB en el PIC18F2550 y en el PIC18F4550) , asi como tambin los otros pines que intervienen en su funcionamiento.

Breve descripcin del funcionamiento del mdulo USB:


La familia de dispositivos PIC18FX455/X550 contiene una interfaz serie compatible con el SIE (serial interface engine o mquina con comunicacin serie en espaol) USB full-speed (2.0) y de poca

velocidad (1.0) que permite la comunicacin rpida entre cualquier dispositivo USB y el microcontrolador PIC. El SIE puede interconectarse directamente al USB, utilizando el transmisor - receptor interno, o puede conectarse a travs un transmisor-receptor externo. El PIC tiene un regulador interno de 3,3V para alimentar el transmisor-receptor interno en aplicaciones de 5V. Se han incluido algunas caractersticas especiales en el hardware para mejorar el funcionamiento. Se proporciona memoria de puerto dual en la memoria de datos del dispositivo (RAM del USB) para tener acceso directo a la memoria desde el ncleo del microcontrolador y desde el SIE. Tambin se proporcionan unos buffer para que el programador elija libremente el uso de la memoria dentro del espacio de la RAM del USB. Existe un puerto paralelo para transmitir grandes cantidades de datos (SSP), para esto se ha proporcionado la ayuda de transferencia ininterrumpida de volmenes de datos grandes, por ejemplo datos sncronos, a los buffer de memoria externos. Bueno ahora veremos en detalle como se comunica la SIE con el exterior y las diferentes opciones a nivel conexionado del USB con el exterior:

Antes que nada veremos las notas a las referencias 2 y 3 que estn dentro de la inmgen. Aclarar que estas notas son importantes para no cometer equivocaciones a la hora de programar el cdigo que lo configura. entonces: Nota* 2:Las pull - ups externas son opcionales , pero si queremos usarlas hay que desactivar las propias resistencias de pull - up internas que tiene el microcontrolador. La activacin o desactivacin de estas resistencias se hace mediante el bit UPUEN...que se ver ms adelante. Nota* 3:El regulador de voltaje de 3.3v, nos provee de tensin al mdulo USB en aplicaciones de 3.3v. En caso de tener una fuente externa de 3.3v conectada a Vusb, tenemos que desactivar el mdulo interno del regulador.

Vemos en la inmgen los diferentes pines que segn configuracin de la SIE , podemos usar un transceptor externo, el fin de este tutorial no es el estudio de los mdulos externos , por lo que se ver muy superficialmente. Algo Muy importante ! que tenemos que ver es el puente bidireccional entre la SIE y el SSP...este puente nos va a permitir el transporte a alta velocidad de grandes flujos de datos en modo sincrono, por lo que se estudiar tambin en su momento. Ver la siguiente inmgen en donde se muestra dicho puente:

Estado y control del mdulo USB:


En total hay 22 registros para manejar las transacciones del USB. Los registros son: Registro de control del USB (UCON) Registro de configuracin del USB (UCFG) Registro de estado de la transferencia del USB (USTAT) Registro de direccin de dispositivo USB (UADDR) Registros del nmero del frame (UFRMH: UFRML) Registros activadores de los Endpoints de 0 a 15 (UEPN) El primer registro que estudiaremos ser el UCON (registro de control del USB): En la siguiente inmgen veremos como est constituido:

Este registro de control contiene los bits necesarios para determinar el comportamiento del bus durante las transferencias. El registro contiene los bits que gobiernan lo siguiente: Permiso del perifrico principal del USB Reset de los punteros tipo ping-pong Control del modo al suspender Desactivar la transferencia de paquetes

El significado de los diferentes bits se muestra a continuacin: BIT7: Bit no implementado se lee como "0" BIT6: El bit PPBRST, se encarga de controlar el estado del reset, cuando se utiliza el modo Doble Buffering o modo Ping - Pong.Cuando se activa el bit PPBRST, todos los buffers Ping - Pong se fijan a

los buffers intermedios. El bit PPBRST, tiene que borrarse por firmware.Este bit se ignora en los modos de buffer que no usen el buffer ping-pong. BIT5: El bit SE0,se utiliza para indicar el estado del bus, si slo se manda un cero. Cuando se permite el mdulo USB, este bit debe supervisarse para determinar si las lneas de datos han salido de una condicin de single-ended cero (slo se manda cero). Esto ayuda a distinguir el estado de ciclo inicial de la seal de reset del USB. BIT4: El bit PKTDIS,es un flag que indica si el SIE ha inhabilitado la transmisin y la recepcin de paquetes. Este lo bit activa el SIE cuando recibe un SETUP para permitir su procesamiento. Este bit no lo puede activar el microcontrolador, slo borrar; al despejarlo el SIE continua la transmisin y/o recepcin. Cualquier acontecimiento pendiente dentro del buffer intermedio todava estar disponible, indicado dentro del registro USTAT en el buffer FIFO. BIT3: El bit USBEN,la operacin total del mdulo USB se controla con este bit. Activar este bit setea el mdulo y resetea todos los bits PPBI en el Buffer a 0. Este bit tambin activa el regulador de tensin del chip y conecta las resistencias pull-up, si se permiten. As, este bit puede utilizarse como una unin/separacin al USB. Aunque se ignoran todos los estados y bits de control si este bit est borrado, el mdulo necesita preconfigurarse antes de activar este bit. BIT2: El bit RESUME,permite al perifrico realizar un reinicio ejecutando la seal resume. Para generar un reinicio vlido, por firmware se debe activar el RESUME durante 10ms y entonces borrar el bit. BIT1: El bit SUSPND,coloca el mdulo y soporte del circuito (es decir,regulador de tensin) en un modo de baja potencia. El reloj de entrada al SIE se desactiva. Este bit debe activarse por software dentro de la respuesta a una interrupcin IDLEIF. Debe borrarse por firmware despus de observar una interrupcin ACTVIF. Cuando este bit est activo, sigue estando el dispositivo unido al bus pero las salidas del transmisor-receptor permanecen en reposo. La tensin en el pin VUSB puede variar dependiendo del valor de este bit. Activar este bit antes de un IDLEIF dar lugar a comportamiento imprevisible del bus. Nota:Cuando est en el modo de suspensin, el bus del dispositivo USB se limita al 500A de corriente. sta es la corriente completa cedida por el dispositivo PIC y su circuito de soporte. Hay que tener cuidado de ceder la corriente mnima cuando el dispositivo entre en el modo de suspensin. BIT0: Bit no implementado se lee como "0"

Registro de configuracin del USB:


Antes de comunicarse con el USB, se tiene que configurar el mdulo del hardware interno y/o externo. La mayor parte de la configuracin se realiza con el registro UCFG. El regulador de tensin del USB se maneja con la configuracin de los registros. El registro UFCG contiene la mayor parte de los bits que dirigen el comportamiento del mdulo USB. stos incluyen: Velocidad del bus (Alta velocidad vs Baja velocidad) Permiso de las resistencias pull-up del chip Permiso del transmisor del chip Uso del buffer ping-pong

El registro UCFG tambin contiene dos bits que ayudan a probar el mdulo, eliminando errores y certificaciones del USB. La salida de control de estos bits permite el monitor de estado y generacin de patrones de ojo.

BIT 7: UTEYE: Bit de permiso del test patrn de ojo del USB. 1 = prueba del patrn de ojo permitido. 0 = prueba del patrn de ojo inhabilitado. BIT 6: UOEMON: Bit de permiso del monitor OE del USB. 1 = seal del UOE* activa; indica los intervalos durante los cuales las lneas D+/D- estn conduciendo. 0 = seales del UOE* inactivas. BIT 4: UPUEN: Bit de permiso del pull-up del chip. 1 = Pull-up del chip permitido (pull-up en D+ con FSEN=1 o en D- con FSEN=0). 0 = Pull-up del chip desactivado. BIT 3: UTRDIS: Bit inhabilitador del transmisor del chip 1 = Transmisor del chip inhabilitado; la interfaz digital del transmisor permitida. 0 = transmisor del chip activo. BIT 2: FSEN: Bit de permiso del Full-Speed. 1 = dispositivo Full-speed: controla los flancos del transmisor; requiere un reloj de 48MHz. 0 = dispositivo de poca velocidad: controla los flancos del transmisor; requiere un reloj de 6MHz. BIT 1-0 PPB1:PPB0: Bits de configuracin de los buffer ping-pong. 11 = buffers ping-pong permitidos en los End-Points 1 a 15. 10 = buffers ping-pong permitidos en todos los End-Points. 01 = buffer ping-pong permitido en los End-Points de salida 0. 00 = buffers ping-pong inhabilitados. Nota 1: 1: Si se activa UTRDIS, la seal UOE* estar activa independiente del ajuste del bit UOEMON. 2: Los bits UPUEN, UTRDIS y FSEN no deben cambiarse mientras el mdulo USB est permitido. Estos valores se deben preconfigurar antes de permitir el mdulo. 3: Este bit solamente es vlido cuando el transmisor del chip est activo (UTRDIS = 0); si no, se ignora. Nota 2: La velocidad del USB, la transmisin y las pull-up deben configurase solamente durante la fase de activacin del mdulo. No se recomienda cambiar estos ajustes mientras que el mdulo est funcionando.

S-ar putea să vă placă și