USB Con Microcontrolador

download USB Con Microcontrolador

of 18

Transcript of USB Con Microcontrolador

  • 1

    Implementacin de Comunicacin USB con Microcontrolador

    PIC18F4550 y LabVIEW

    Lic. Fsica Yohan Prez-Moret

    PCB por La Derecha

    [email protected]

    1. Resumen

    Se presenta el desarrollo, simulacin e implementacin de la comunicacin USB

    con un microcontrolador PIC18F4550 y LabVIEW. El cdigo programado al microcontro-

    lador 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 co-

    municacin. 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 rea-

    liza la simulacin utilizando Proteus 7.2 y el VI diseado. Por ltimo se muestra la imple-

    mentacin 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, Instrumenta-

    cin, PICDEM.

    2. Introduccin

    El bus serie universal o en sus

    siglas en ingls: USB, posee algunas ca-

    ractersticas 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 sopor-

    tados por los sistemas operativos des-

    de Windows Millennium en adelante.

    En dispositivos USB 2.0 se pueden transmitir datos a razn de 480 mega-

    bits 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 disposi-

    tivos conectados, eliminando el uso

    de fuentes y cables externos en apli-

    caciones de baja potencia.

    Esas caractersticas, por citar solo

    algunas, hacen del bus USB una opcin

    til en aplicaciones de instrumentacin

    electrnica. Muchos fabricantes de mi-

    crocontroladores programables como Mi-

    crochip, estn incluyendo un modulo

    USB en sus dispositivos. Facilitando el

    desarrollo de aplicaciones de instrumen-

    tacin que aprovechen las capacidades

    USB.

    Por otra parte, el soporte brindado

    por los fabricantes de computadoras per-

    sonales (PC) a los puertos seriales RS-

    232 y paralelos Centronics, de amplio uso

    entre los instrumentistas, cada vez es me-

    nor. En la actualidad es comn que una

    PC incluya solo un puerto serial RS-232,

    o ninguno en el caso de algunas portti-

    les, y s varios puertos USB.

    En el presente trabajo se presenta

    el uso del mdulo USB que posee el mi-

  • 2

    crocontrolador PIC18F4550 (1) del fabri-

    cante Microchip y su atencin utilizando

    LabVIEW 8.0.

    2.1. Estructura USB

    La funcionalidad de los dispositi-

    vos USB est estructurada en capas, vase

    la Fig. 1. La capa de mayor jerarqua, des-

    pus del dispositivo en s, es la de confi-

    guracin. Un dispositivo puede tener ml-

    tiples 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 interfa-

    ces. Por debajo de la interfaz estn los

    endpoints. Los datos son transferidos di-

    rectamente a ese nivel. El endpoint-0 es

    siempre de control y cuando un dispositi-

    vo se conecta al bus debe estar disponi-

    ble.

    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 temporiza-

    cin 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, co-

    mo en el caso de transmisin de au-

    dio.

    Bulk: Este mtodo de transferencia permite el envo de grandes cantida-

    des de datos, asegurando su integri-

    dad. Pero no se garantiza la tempori-

    zacin 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 dis-

    positivo 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:

  • 3

    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 programa-cin grfica.

    PICDEM 2 Plus de Microchip: Placa de demostracin para el trabajo con

    los microcontroladores de la gama

    media y alta. Posee mdulos de hard-

    ware prediseados de alimentacin,

    visualizacin con LCD y LED, so-

    ckets 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 mate-

    riales como el PIC18F4550 y el PICDEM

    2 Plus, el trabajo puede realizarse hasta la

    etapa de simulacin con el uso de PICC y

    Proteus.

    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 compor-

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

    RA0/AN02

    RA1/AN13

    RA2/AN2/VREF-/CVREF4

    RA3/AN3/VREF+5

    RA4/T0CKI/C1OUT/RCV6

    RA5/AN4/SS/LVDIN/C2OUT7

    RA6/OSC2/CLKO14

    OSC1/CLKI13

    RB0/AN12/INT0/FLT0/SDI/SDA33

    RB1/AN10/INT1/SCK/SCL34

    RB2/AN8/INT2/VMO35

    RB3/AN9/CCP2/VPO36

    RB4/AN11/KBI0/CSSPP37

    RB5/KBI1/PGM38

    RB6/KBI2/PGC39

    RB7/KBI3/PGD40

    RC0/T1OSO/T1CKI15

    RC1/T1OSI/CCP2/UOE16

    RC2/CCP1/P1A17

    VUSB18

    RC4/D-/VM23

    RC5/D+/VP24

    RC6/TX/CK25

    RC7/RX/DT/SDO26

    RD0/SPP019

    RD1/SPP120

    RD2/SPP221

    RD3/SPP322

    RD4/SPP427

    RD5/SPP5/P1B28

    RD6/SPP6/P1C29

    RD7/SPP7/P1D30

    RE0/AN5/CK1SPP8

    RE1/AN6/CK2SPP9

    RE2/AN7/OESPP10

    RE3/MCLR/VPP1

    U1

    PIC18F4550

    VCC1

    D+3

    D-2

    GND4

    J1

    USBCONN

    RV1

    1k

    VDD

    RA4

    470R

    10k

    470R

  • 4

    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 mi-

    crocontroladores de su misma gama. Ello

    para poder cumplir los requerimientos del

    USB en alta y baja velocidad. El

    PIC18F4550 incluye un sistema de pres-

    calers y postscalers que garantizan la fre-

    cuencia del mdulo USB en alta y baja

    velocidad a partir de diferentes valores de

    un oscilador primario. Sucede que el m-

    dulo USB solo acepta 6 MHz para el mo-

    do de baja velocidad o 48 MHz para alta

    velocidad, respectivamente. Por ello, el

    microcontrolador ofrece un juego de fusi-

    bles, 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 micro-

    controlador, que no necesariamente tiene

    que coincidir con la del oscilador utiliza-

    do. Por ejemplo, en nuestro caso se em-

    ple un oscilador activo de 4 MHz, no

    obstante, en la lnea 39 del cdigo fuente,

    ver anexo A, se defini otro valor de fre-

    cuencia: 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 co-

    rrecta al mdulo USB.

    Luego, en la lnea 40, se progra-

    maron 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 fre-

    cuencia 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 configu-

    racin USBDIV, PLL y CPUDIV. Una

    seccin de esa tabla se reproduce en la

    Fig. 3.

    Por ejemplo, si se dispone del os-

    cilador 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, se-

    gn 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 frecuen-

    cia del oscilador externo HS de 4 MHz,

    sino la frecuencia de trabajo resultante del

    PLL y CPUDIV escogidos.

  • 5

    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, identifi-

    cador 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 alma-

    cenada en el microcontrolador PIC, en

    una zona de memoria RAM USB. En par-

    ticular 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 microcon-

    trolador. 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 dispositi-

    vo (VID) y el identificador del producto

    (PID). Esos identificadores son utilizados

    por el sistema operativo de la PC para

    encontrar el driver apropiado al dispositi-

    vo USB. Las lneas 184 y 185 del descrip-

  • 6

    tor, vase el anexo B, contienen el VID y

    el PID, respectivamente. La lnea 131

    declara el tipo de transferencia que sopor-

    tar 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 Deve-lopment Wizard Hardware Bus, vase la Fig. 4. Esta da la posibilidad de desarro-

    llar un driver para dispositivos PCI, USB

    o FireWire.

    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 especifica-

    dos en el paso mostrado en la Fig. 6.

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

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

    Con el cdigo del microcontrola-

    dor listo y el driver en LabVIEW dispo-

    nible, 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 circui-

    to de la Fig. 2 el sistema operativo detecta

    la presencia de un dispositivo USB, ini-

    ciando el proceso de enumeracin que bsicamente consiste en asignarle una

    direccin en el bus al dispositivo. Des-

    pus de esto se abre el asistente para

    Hardware nuevo encontrado, tal y como

    se muestra en la Fig. 7. Con este asistente

  • 7

    se localiza el driver INF creado en Lab-

    VIEW, instalndolo desde una lista o ubi-

    cacin especfica, Fig. 8.

    Fig. 7. Asistente para localizar el driver del dispositivo

    Fig. 8. Localizacin del driver INF

    Despus del paso anterior el asis-

    tente concluye de instalar el driver para el

    dispositivo, Fig. 9 y Fig. 10.

    Fig. 9. Finalizacin del asistente

    Fig. 10. Confirmacin de Windows

    Si ahora observamos el adminis-

    trador de Hardware de Windows XP po-

    dremos percatarnos de que se ha agregado

    una nueva categora, la categora de dis-

    positivos USB de National Instruments

    (NI-VISA USB). Y bajo esta ltima apa-

    recer nuestro dispositivo USB. Ello sig-

    nifica 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 adminis-

    trador de dispositivos de Windows XP.

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

  • 8

    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 nues-

    tro dispositivo desde un VI.

    Ntese como en el resource name del dispositivo aparecen los cdigos PID y

    VID que habamos programado al microcon-

    trolador 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 cam-

    bios 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 po-

    niendo en alto todos los pines del puerto B,

    se enviaba el cdigo hexadecimal 0xFF ha-

    cia el PIC o el cdigo 0x00 en caso de des-

    activar el botn de Activar LEDs del VI.

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

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

  • 9

    La ventana de cdigo

    del VI desarrollado

    se muestra en la Fig.

    14. Se programaron

    dos ciclos indepen-

    dientes, uno para el

    envo y otro para la

    recepcin de las lec-

    turas 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

  • 10

    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, respec-

    tivamente. Los pines 23 y 24 se corres-

    ponden 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 ob-

    jetivo 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 co-

    nectar el dispositivo USB por primera vez

    a la PC Windows ya lo reconoca y pudo

    cargar el driver correspondiente que pre-

    viamente haba sido instalado en la fase

    de simulacin con Proteus.

    5. Conclusiones

    Se logr realizar la simulacin y la

    implementacin prctica de la comunica-

    cin USB utilizando un microcontrolador

    PIC18F4550 y un VI diseado en Lab-

    VIEW.

    El desarrollo de los descriptores

    USB an debe profundizarse ya que estos

    constituyen una gran parte de la configu-

    racin 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 Port-

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

  • 11

    Anexos

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

  • 12

  • 13

  • 14

    Anexo B. Descriptor USB del dispositivo

  • 15

  • 16

  • 17

  • 18