Sei sulla pagina 1di 18

Implementacin de Comunicacin USB con Microcontrolador PIC18F4550 y LabVIEW

Lic. Fsica Yohan Prez-Moret PCB por La Derecha contacto@pcbporladerecha.com 1. Resumen Se presenta el desarrollo, simulacin e implementacin de la comunicacin USB con un microcontrolador PIC18F4550 y LabVIEW. El cdigo programado al microcontrolador PIC enva cclicamente la lectura de su conversor anlogo-digital (AD) y el estado del pin RA4 a una computadora personal a travs del bus USB. El cdigo del microcontrolador fue escrito en lenguaje C, con el compilador CCS 4.018. En LabVIEW 8.0 se gener el driver para el dispositivo USB y se dise un instrumento virtual (VI) para atender la comunicacin. El VI se encarga de graficar la lectura AD del PIC y a peticin del usuario que lo opera de enviarle un valor de un byte, el cual es cargado en el puerto B del PIC. Se realiza la simulacin utilizando Proteus 7.2 y el VI diseado. Por ltimo se muestra la implementacin prctica en la placa de demostracin PICDEM 2 plus, la cual fue modificada para la funcionalidad USB. Palabras claves: USB, microcontrolador PIC, LabVIEW, PICC, MPLAB, Instrumentacin, PICDEM. 2. Introduccin El bus serie universal o en sus siglas en ingls: USB, posee algunas caractersticas como son: Integridad de la seal por el uso de apantallamientos, drivers y receptores diferenciales. Los dispositivos USB de clase HID (Human Interface Device) son soportados por los sistemas operativos desde Windows Millennium en adelante. En dispositivos USB 2.0 se pueden transmitir datos a razn de 480 megabits por segundo. Los cables USB individuales pueden extenderse hasta 5 m de distancia y ms con el uso de multiplexores de puertos o HUB. El bus USB puede suplir hasta 500 mA @ 5 V a cada uno de los dispositivos conectados, eliminando el uso de fuentes y cables externos en aplicaciones de baja potencia. Esas caractersticas, por citar solo algunas, hacen del bus USB una opcin til en aplicaciones de instrumentacin electrnica. Muchos fabricantes de microcontroladores programables como Microchip, estn incluyendo un modulo USB en sus dispositivos. Facilitando el desarrollo de aplicaciones de instrumentacin que aprovechen las capacidades USB. Por otra parte, el soporte brindado por los fabricantes de computadoras personales (PC) a los puertos seriales RS232 y paralelos Centronics, de amplio uso entre los instrumentistas, cada vez es menor. En la actualidad es comn que una PC incluya solo un puerto serial RS-232, o ninguno en el caso de algunas porttiles, y s varios puertos USB. En el presente trabajo se presenta el uso del mdulo USB que posee el mi1

crocontrolador PIC18F4550 (1) del fabricante Microchip y su atencin utilizando LabVIEW 8.0. 2.1. Estructura USB La funcionalidad de los dispositivos USB est estructurada en capas, vase la Fig. 1. La capa de mayor jerarqua, des-

pus del dispositivo en s, es la de configuracin. Un dispositivo puede tener mltiples configuraciones. Por ejemplo, un dispositivo puede tener varias exigencias de energa segn el modo en que est: auto-energizado o bus-energizado.

Fig. 1. Estructura de capas del USB

Por cada capa de configuracin pueden existir mltiples capas de interfaces. Por debajo de la interfaz estn los endpoints. Los datos son transferidos directamente a ese nivel. El endpoint-0 es siempre de control y cuando un dispositivo se conecta al bus debe estar disponible. La informacin comunicada al bus est agrupada en paquetes temporales de 1 ms conocidos como frames. Cada frame puede contener tantas transacciones como dispositivos y enpoints estn conectados. Transferencias Hay cuatro tipos de transferencias especificadas por la norma USB (2). Isocrnica: Provee un mtodo para transferir grandes cantidades de datos (hasta 1023 bytes) con una temporizacin de envo asegurada (isocrnica: de igual tiempo); aunque la integridad de los datos no se asegura. Utilizado en aplicaciones de transmisin conti-

nua (streaming) y donde pequeas prdidas de datos no son crticas, como en el caso de transmisin de audio. Bulk: Este mtodo de transferencia permite el envo de grandes cantidades de datos, asegurando su integridad. Pero no se garantiza la temporizacin entre envos. Interrupcin: Este mtodo asegura la temporizacin y la integridad de los datos para pequeos bloques de datos. Control: Este tipo de transferencia es para configuracin y control del dispositivo conectado al bus USB.

Los dispositivos de alta velocidad soportan todos los tipos de transferencia; el resto est limitado a transferencias por interrupcin y control. 3. Materiales y Mtodos Para la implementacin y montaje de la comunicacin USB se utilizaron las siguientes herramientas:
2

compilador de C PIC-C versin 4.018 (3): para la escritura del cdigo fuente y la generacin del archivo de programacin HEX del PIC. Proteus 7.2 (4): entorno de captura y simulacin de circuitos electrnicos. La versin 7.2 incluye libreras para el microcontrolador PIC18F4550 y la simulacin USB. LabVIEW 8.0: Entorno de programacin grfica. PICDEM 2 Plus de Microchip: Placa de demostracin para el trabajo con los microcontroladores de la gama media y alta. Posee mdulos de hardVDD

ware prediseados de alimentacin, visualizacin con LCD y LED, sockets de 18, 28 y 40 pines as como terminales para fcil acceso a los puertos. Cable de conexin USB tipo A plug para conexin del PIC a la PC. Microcontrolador PIC18F4550

Si no se dispone de recursos materiales como el PIC18F4550 y el PICDEM 2 Plus, el trabajo puede realizarse hasta la etapa de simulacin con el uso de PICC y Proteus.

J1 RV1
USBCONN 470R 1k 10k 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 GND DD+ VCC 4 2 3 1

U1
RA0/AN0 RC0/T1OSO/T1CKI RA1/AN1 RC1/T1OSI/CCP2/UOE RA2/AN2/VREF-/CVREF RC2/CCP1/P1A RA3/AN3/VREF+ RC4/D-/VM RA4/T0CKI/C1OUT/RCV RC5/D+/VP RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK RA6/OSC2/CLKO RC7/RX/DT/SDO OSC1/CLKI RB0/AN12/INT0/FLT0/SDI/SDA RB1/AN10/INT1/SCK/SCL RB2/AN8/INT2/VMO RB3/AN9/CCP2/VPO RB4/AN11/KBI0/CSSPP RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD RD0/SPP0 RD1/SPP1 RD2/SPP2 RD3/SPP3 RD4/SPP4 RD5/SPP5/P1B RD6/SPP6/P1C RD7/SPP7/P1D RE0/AN5/CK1SPP RE1/AN6/CK2SPP RE2/AN7/OESPP RE3/MCLR/VPP 15 16 17 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 1

RA4

470R

18

VUSB PIC18F4550

Fig. 2. Circuito diseado en Proteus solo para fines de simulacin USB con el PIC18F4550

En Proteus se mont el circuito de la Fig. 2 con el fin de simular el comportamiento del microcontrolador PIC18F4550 y el bus USB. Al puerto B del PIC se conectaron diodos LED para visualizar el dato de tipo byte recibido va USB.

El PIC fue programado en Proteus con el archivo tipo COF generado durante la compilacin del cdigo fuente. Este ltimo se muestra en el anexo A y al cual volveremos ms adelante.

3.1. Configuracin del Reloj del PIC para el uso del mdulo USB El PIC18F4550 incluye un sistema de generacin de reloj distinto a los microcontroladores de su misma gama. Ello para poder cumplir los requerimientos del USB en alta y baja velocidad. El PIC18F4550 incluye un sistema de prescalers y postscalers que garantizan la frecuencia del mdulo USB en alta y baja velocidad a partir de diferentes valores de un oscilador primario. Sucede que el mdulo USB solo acepta 6 MHz para el modo de baja velocidad o 48 MHz para alta velocidad, respectivamente. Por ello, el microcontrolador ofrece un juego de fusibles, que bien configurados, permiten lograr dichas velocidades a partir de otras frecuencias del reloj externo utilizado. En la seccin 2.0 de la referencia (1) se dan los detalles sobre la configuracin del reloj del mdulo USB. Cuando se disea el cdigo fuente para usar el mdulo USB del PIC18F4550, en la lnea que define la frecuencia del oscilador se debe incluir la frecuencia a usar en el ncleo del microcontrolador, que no necesariamente tiene que coincidir con la del oscilador utilizado. Por ejemplo, en nuestro caso se emple un oscilador activo de 4 MHz, no obstante, en la lnea 39 del cdigo fuente, ver anexo A, se defini otro valor de frecuencia: 24 MHz, el cual corresponde a la frecuencia a la que trabajar el ncleo del microcontrolador al ser activado el PLL multiplicador de frecuencia, necesario en este caso para generar la frecuencia correcta al mdulo USB.

Luego, en la lnea 40, se programaron los fusibles USBDIV, PLL y CPUDIV con valores tales que garanticen que a partir de los 4 MHz del oscilador externo, el mdulo USB trabaje a la frecuencia de 48 MHz definida en la lnea 39. Es importante sealar tambin que para utilizar el mdulo USB no cualquier valor de reloj es vlido. En la seccin 2.3 de la referencia (1) se muestra una tabla con las frecuencias y tipos de osciladores compatibles con el USB, relacionados con los valores de los fusibles de configuracin USBDIV, PLL y CPUDIV. Una seccin de esa tabla se reproduce en la Fig. 3. Por ejemplo, si se dispone del oscilador HS de 24 MHz de la columna Input Oscillator frecuency de la Fig. 3, entonces las frecuencias posibles para el ncleo del microcontrolador seran 24 MHz, 12 MHz, 8 MHz y 6 MHz, segn la columna Microcontroller Clock Frecuency. Suponiendo que escogemos la frecuencia de 8 MHz para el ncleo tendramos que escribir las siguientes lneas de cdigo en PICC:
#fuse delay(clock=8000000) #fuses HS, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL6, CPUDIV3, VREGEN

Ntese que en la primera lnea de cdigo anterior, no se defini la frecuencia del oscilador externo HS de 4 MHz, sino la frecuencia de trabajo resultante del PLL y CPUDIV escogidos.

Fig. 3. Seleccin de la frecuencia USB a partir de la frecuencia del oscilador de entrada

3.2. Descriptores USB Cuando un dispositivo USB es conectado a la PC el sistema operativo es capaz de reconocer su fabricante, identificador de producto e instalarle un driver estndar HID o abrir un asistente para encontrar el adecuado. Tambin muestra mensajes sobre el estado del dispositivo, marca, modelo, etc. Toda esa informacin que requiere el sistema operativo para identificar al dispositivo USB est almacenada en el microcontrolador PIC, en una zona de memoria RAM USB. En particular en el banco 4 de la RAM USB, destinado al buffer de descriptores. Los descriptores son archivos que se incluyen junto al cdigo fuente para ser grabados a esa zona de memoria RAM USB. El diseo de un descriptor es el tema de mayor complejidad en el uso de

la comunicacin USB. Las referencias (2; 5) brindan informacin sobre el diseo de descriptores. En nuestro caso tomamos y adaptamos el descriptor brindado en uno de los ejemplos USB del compilador CCS los cuales tambin son una referencia de consulta vlida. El anexo B muestra el descriptor agregado al cdigo fuente del microcontrolador. La inclusin del descriptor en el archivo fuente se realiz a travs de la directiva include de la lnea 64 de este ltimo. En el descriptor se incluyen el identificador del fabricante del dispositivo (VID) y el identificador del producto (PID). Esos identificadores son utilizados por el sistema operativo de la PC para encontrar el driver apropiado al dispositivo USB. Las lneas 184 y 185 del descrip5

tor, vase el anexo B, contienen el VID y el PID, respectivamente. La lnea 131 declara el tipo de transferencia que soportar el dispositivo, en este caso el cdigo significa transferencia por interrupcin. 3.3. Driver e instrumento Virtual en LabVIEW para el dispositivo USB Para que nuestro dispositivo USB pueda ser controlado desde LabVIEW es necesario que este lo reconozca como propio, con un driver USB desarrollado en LabVIEW. Para ello LabVIEW brinda una utilidad llamada VISA Driver Development Wizard Hardware Bus, vase la Fig. 4. Esta da la posibilidad de desarrollar un driver para dispositivos PCI, USB o FireWire.

Fig. 5. Especificacin del VID y del PID del driver

Fig. 6. Finalizacin del asistente, nombre y lugar del driver .inf a crear.

Fig. 4. Utilidad para desarrollar Driver USB de LabVIEW

En el siguiente paso del mismo asistente se encuentran los campos del VID y del PID. Estos campos se llenan en correspondencia con las lneas 184 y 185 del descriptor del anexo B, tal y como se muestra en la Fig. 5. Despus de especificar el PID y el VID el asistente crear un archivo de tipo INF en el directorio y nombre especificados en el paso mostrado en la Fig. 6.

Con el cdigo del microcontrolador listo y el driver en LabVIEW disponible, podemos iniciar la simulacin del microcontrolador USB y observar cmo este es detectado por el sistema operativo. 3.3.1. Simulacin del dispositivo con Proteus Al iniciar la simulacin del circuito de la Fig. 2 el sistema operativo detecta la presencia de un dispositivo USB, iniciando el proceso de enumeracin que bsicamente consiste en asignarle una direccin en el bus al dispositivo. Despus de esto se abre el asistente para Hardware nuevo encontrado, tal y como se muestra en la Fig. 7. Con este asistente
6

se localiza el driver INF creado en LabVIEW, instalndolo desde una lista o ubicacin especfica, Fig. 8.

Fig. 10. Confirmacin de Windows

Fig. 7. Asistente para localizar el driver del dispositivo

Si ahora observamos el administrador de Hardware de Windows XP podremos percatarnos de que se ha agregado una nueva categora, la categora de dispositivos USB de National Instruments (NI-VISA USB). Y bajo esta ltima aparecer nuestro dispositivo USB. Ello significa que a partir de ahora LabVIEW reconoce nuestro dispositivo como propio y estaremos en condiciones de controlarlo con un VI, empleando las VISAS de LabVIEW. La Fig. 11 muestra la categora de NI-VISA USB Devices en el administrador de dispositivos de Windows XP.

Fig. 8. Localizacin del driver INF

Despus del paso anterior el asistente concluye de instalar el driver para el dispositivo, Fig. 9 y Fig. 10.

Fig. 9. Finalizacin del asistente

Fig. 11. Presencia del dispositivo en el Administrador de Dispositivos de Windows

3.3.2. Instrumento Virtual Antes de pasar al desarrollo de un instrumento virtual o VI para la comunicacin con nuestro dispositivo USB es conveniente obtener su resource name. Ello se puede hacer ejecutando la utilidad de LabVIEW llamada Visa Interactive Control, mostrada en la Fig. 12. De ella podremos determinar que el VISA resource name de nuestro dispositivo es la cadena: USB0::0x04D8::0x1121::NI-VISA-0::RAW, con ella podremos referenciar a nuestro dispositivo desde un VI. Ntese como en el resource name del dispositivo aparecen los cdigos PID y VID que habamos programado al microcontrolador en su descriptor. En la Fig. 13 se observa el panel frontal del VI desarrollado. Al fondo de este el circuito desarrollado en Proteus interactuando con el VI. Los cambios realizados en el potencimetro RV1 eran registrados por el instrumento virtual cclicamente y al activar el botn LEDs del Puerto B del VI el circuito responda poniendo en alto todos los pines del puerto B, se enviaba el cdigo hexadecimal 0xFF hacia el PIC o el cdigo 0x00 en caso de desactivar el botn de Activar LEDs del VI.

Fig. 12. Visa Interactive Control para determinar el VISA Resource Name

Fig. 13. Panel Frontal del VI desarrollado y simulacin en Proteus

La ventana de cdigo del VI desarrollado se muestra en la Fig. 14. Se programaron dos ciclos independientes, uno para el envo y otro para la recepcin de las lecturas AD del PIC. La llegada de un dato al puerto USB de la PC es detectada por el VI a travs de una interrupcin USB. El envo y la recepcin se realizan independientemente la una de la otra, full dplex.

Fig. 14. Diagrama de cdigo del VI desarrollado

4. Implementacin Prctica Para el montaje prctico del PIC18F4550 se adapt el PICDEM 2 Plus, incluyndole un conector Header de 4 pines en su rea de prototipo. Los pines 2 y 3 del conector Header se unieron a travs de cables con los pines 23 y 24 del socket de 40 pines del PICDEM, respectivamente. Los pines 23 y 24 se corresponden con las seales diferenciales D- y D+ respectivamente. El pin 1 del conector Header se conect al comn del PICDEM 2 plus y el pin 5 al terminal de 5 V de la misma placa de demostracin, con el objetivo de alimentarla directamente del bus USB. Los resultados obtenidos con el montaje prctico fueron los mismos que con la simulacin en Proteus 7.2. El VI diseado se comport de igual manera y s se not la diferencia de velocidad entre el montaje prctico y la simulacin, esta ltima ms lenta que la primera. Al conectar el dispositivo USB por primera vez a la PC Windows ya lo reconoca y pudo cargar el driver correspondiente que previamente haba sido instalado en la fase de simulacin con Proteus. 5. Conclusiones Se logr realizar la simulacin y la implementacin prctica de la comunicacin USB utilizando un microcontrolador PIC18F4550 y un VI diseado en LabVIEW. El desarrollo de los descriptores USB an debe profundizarse ya que estos constituyen una gran parte de la configuracin del dispositivo USB.

7. Referencias
1. Inc., Microchip Technology. PIC18F2455/2550/4455/4550 Data Sheet. s.l. : Microchip, 2004. DS39632B. 2. USB Specification, version 2.0: Chapter 9. [Online] http://www.usb.org. 3. CCS. [Online] http://www.ccsinfo.com/. 4. [Online] http://www.labcenter.co.uk/. 5. Condit, Reston. TB054: An Introduction to USB Descriptors with a Game Port to USB Game Pad Translator Example. s.l. : Microchip Technology, 2004. DS91054C. 6. Dearborn, Scott. AN971: USB PortPowered Li-Ion/Li-Polymer Battery Charging. s.l. : Microchip Technology Inc, 2005. 7. Condit, Reston. AN258: Low Cost USB Microcontroller Programmer. s.l. : Microchip Technology Inc., 2003. DS00258A. 8. Rojvanit, Rawin. AN956: Migrating Applications to USB from RS-232 UART with Minimal Impact on PC software. s.l. : Microchip Technology, 2004. DS00956B. 9. Microchip. [Online] http://www.microchip.com.

10

Anexos Anexo A. Cdigo Fuente en lenguaje C del PIC18F4550 con USB

11

12

13

Anexo B. Descriptor USB del dispositivo

14

15

16

17

18

Potrebbero piacerti anche