Anda di halaman 1dari 19

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/324437937

Implementación de Comunicación USB con Microcontrolador PIC18F4550 y


LabVIEW

Article · February 2012

CITATIONS READS

3 1,071

1 author:

Yohan Pérez Moret


Soluciones y Tecnologías de Control Embebido S.A.P.I. de C.V.
18 PUBLICATIONS   11 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Development of a portable laser for LIBS View project

All content following this page was uploaded by Yohan Pérez Moret on 11 April 2018.

The user has requested enhancement of the downloaded file.


Implementación de Comunicación USB con Microcontrolador
PIC18F4550 y LabVIEW
Msc. Yohan Pérez-Moret
Soluciones y Tecnologías de Control Embebido SAPI de CV
yohanpm@gmail.com
(Este trabajo fue publicado inicialmente en la Web www.pcbporladerecha.com, año 2012,
necesita actualizaciones con las nuevas versiones de los programas utilizados)

1. Resumen
Se presenta el desarrollo, simulación e implementación de la comunicación USB
con un microcontrolador PIC18F4550 y LabVIEW. El código programado al microcontro-
lador PIC envía cíclicamente la lectura de su conversor análogo-digital (AD) y el estado del
pin RA4 a una computadora personal a través del bus USB. El código 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-
municación. El VI se encarga de graficar la lectura AD del PIC y a petición 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 simulación utilizando Proteus 7.2 y el VI diseñado. Por último se muestra la imple-
mentación práctica en la placa de demostración PICDEM 2 plus, la cual fue modificada
para la funcionalidad USB.

Palabras claves: USB, microcontrolador PIC, LabVIEW, PICC, MPLAB, Instrumenta-


ción, PICDEM.

2. Introducción tivos conectados, eliminando el uso


El bus serie universal o en sus de fuentes y cables externos en apli-
siglas en inglés: USB, posee algunas ca- caciones de baja potencia.
racterísticas como son: Esas características, por citar solo
algunas, hacen del bus USB una opción
• Integridad de la señal por el uso de útil en aplicaciones de instrumentación
apantallamientos, drivers y receptores electrónica. Muchos fabricantes de mi-
diferenciales. crocontroladores programables como Mi-
• Los dispositivos USB de clase HID crochip, están incluyendo un modulo
(Human Interface Device) son sopor- USB en sus dispositivos. Facilitando el
tados por los sistemas operativos des- desarrollo de aplicaciones de instrumen-
de Windows Millennium en adelante. tación que aprovechen las capacidades
• En dispositivos USB 2.0 se pueden USB.
transmitir datos a razón de 480 mega- Por otra parte, el soporte brindado
bits por segundo. por los fabricantes de computadoras per-
• Los cables USB individuales pueden sonales (PC) a los puertos seriales RS-
extenderse hasta 5 m de distancia y 232 y paralelos Centronics, de amplio uso
más con el uso de multiplexores de entre los instrumentistas, cada vez es me-
puertos o HUB. nor. En la actualidad es común que una
• El bus USB puede suplir hasta 500 PC incluya solo un puerto serial RS­232,
mA @ 5 V a cada uno de los disposi-
1
o ninguno en el caso de algunas portáti- la Fig. 1. La capa de mayor jerarquía, des-
les, y sí varios puertos USB. pués del dispositivo en sí, es la de confi-
En el presente trabajo se presenta guración. Un dispositivo puede tener múl-
el uso del módulo USB que posee el mi- tiples configuraciones. Por ejemplo, un
crocontrolador PIC18F4550 (1) del fabri- dispositivo puede tener varias exigencias
cante Microchip y su atención utilizando de energía según el modo en que esté:
LabVIEW 8.0. auto-energizado o bus-energizado.
2.1. Estructura USB
La funcionalidad de los dispositi-
vos USB está estructurada en capas, véase

Fig. 1. Estructura de capas del USB


Por cada capa de configuración de igual tiempo); aunque la integridad
pueden existir múltiples capas de interfa- de los datos no se asegura. Utilizado
ces. Por debajo de la interfaz están los en aplicaciones de transmisión conti-
endpoints. Los datos son transferidos di- nua (streaming) y donde pequeñas
rectamente a ese nivel. El endpoint-0 es pérdidas de datos no son críticas, co-
siempre de control y cuando un dispositi- mo en el caso de transmisión de au-
vo se conecta al bus debe estar disponi- dio.
ble. • Bulk: Este método de transferencia
La información comunicada al bus permite el envío de grandes cantida-
está agrupada en paquetes temporales de des de datos, asegurando su integri-
1 ms conocidos como frames. Cada frame dad. Pero no se garantiza la tempori-
puede contener tantas transacciones como zación entre envíos.
dispositivos y enpoints estén conectados. • Interrupción: Este método asegura la
temporización y la integridad de los
Transferencias datos para pequeños bloques de datos.
Hay cuatro tipos de transferencias • Control: Este tipo de transferencia es
especificadas por la norma USB (2). para configuración y control del dis-
• Isocrónica: Provee un método para positivo conectado al bus USB.
transferir grandes cantidades de datos
(hasta 1023 bytes) con una temporiza- Los dispositivos de alta velocidad
ción de envío asegurada (isocrónica: soportan todos los tipos de transferencia;

2
el resto está limitado a transferencias por • PICDEM 2 Plus de Microchip: Placa
interrupción y control. de demostración para el trabajo con
3. Materiales y Métodos los microcontroladores de la gama
Para la implementación y montaje media y alta. Posee módulos de hard-
de la comunicación USB se utilizaron las ware prediseñados de alimentación,
siguientes herramientas: visualización con LCD y LED, so-
• compilador de C PIC-C versión ckets de 18, 28 y 40 pines así como
4.018 (3): para la escritura del código terminales para fácil acceso a los
fuente y la generación del archivo de puertos.
programación HEX del PIC. • Cable de conexión USB tipo “A plug”
• Proteus 7.2 (4): entorno de captura y para conexión del PIC a la PC.
simulación de circuitos electrónicos. • Microcontrolador PIC18F4550
La versión 7.2 incluye librerías para el
microcontrolador PIC18F4550 y la Si no se dispone de recursos mate-
simulación USB. riales como el PIC18F4550 y el PICDEM
• LabVIEW 8.0: Entorno de programa- 2 Plus, el trabajo puede realizarse hasta la
ción gráfica. etapa de simulación con el uso de PICC y
Proteus.

VDD

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

Fig. 2. Circuito diseñado en Proteus solo para fines de simulación USB con el PIC18F4550
En Proteus se montó el circuito de PIC18F4550 y el bus USB. Al puerto B
la Fig. 2 con el fin de simular el compor- del PIC se conectaron diodos LED para
tamiento del microcontrolador

3
visualizar el dato de tipo byte recibido vía microcontrolador al ser activado el PLL
USB. multiplicador de frecuencia, necesario en
El PIC fue programado en Proteus este caso para generar la frecuencia co-
con el archivo tipo COF generado durante rrecta al módulo USB.
la compilación del código fuente. Este Luego, en la línea 40, se progra-
último se muestra en el anexo A y al cual maron los fusibles USBDIV, PLL y
volveremos más adelante. CPUDIV con valores tales que garanticen
que a partir de los 4 MHz del oscilador
3.1. Configuración del Reloj del PIC externo, el módulo USB trabaje a la fre-
para el uso del módulo USB cuencia de 48 MHz definida en la línea
El PIC18F4550 incluye un sistema 39.
de generación de reloj distinto a los mi- Es importante señalar también que
crocontroladores de su misma gama. Ello para utilizar el módulo USB no cualquier
para poder cumplir los requerimientos del valor de reloj es válido. En la sección 2.3
USB en alta y baja velocidad. El de la referencia (1) se muestra una tabla
PIC18F4550 incluye un sistema de pres- con las frecuencias y tipos de osciladores
calers y postscalers que garantizan la fre- compatibles con el USB, relacionados
cuencia del módulo USB en alta y baja con los valores de los fusibles de configu-
velocidad a partir de diferentes valores de ración USBDIV, PLL y CPUDIV. Una
un oscilador primario. Sucede que el mó- sección de esa tabla se reproduce en la
dulo USB solo acepta 6 MHz para el mo- Fig. 3.
do de baja velocidad o 48 MHz para alta Por ejemplo, si se dispone del os-
velocidad, respectivamente. Por ello, el cilador HS de 24 MHz de la columna
microcontrolador ofrece un juego de fusi- “Input Oscillator frecuency” de la Fig. 3,
bles, que bien configurados, permiten entonces las frecuencias posibles para el
lograr dichas velocidades a partir de otras núcleo del microcontrolador serían
frecuencias del reloj externo utilizado. En 24 MHz, 12 MHz, 8 MHz y 6 MHz, se-
la sección 2.0 de la referencia (1) se dan gún la columna “Microcontroller Clock
los detalles sobre la configuración del Frecuency”. Suponiendo que escogemos
reloj del módulo USB. la frecuencia de 8 MHz para el núcleo
Cuando se diseña el código fuente tendríamos que escribir las siguientes
para usar el módulo USB del líneas de código en PICC:
PIC18F4550, en la línea que define la
frecuencia del oscilador se debe incluir la #fuse delay(clock=8000000)
#fuses HS, NOWDT, NOPROTECT, NOLVP,
frecuencia a usar en el núcleo del micro- NODEBUG, USBDIV, PLL6, CPUDIV3,
controlador, que no necesariamente tiene VREGEN
que coincidir con la del oscilador utiliza-
do. Por ejemplo, en nuestro caso se em- Nótese que en la primera línea de
pleó un oscilador activo de 4 MHz, no código anterior, no se definió la frecuen-
obstante, en la línea 39 del código fuente, cia del oscilador externo HS de 4 MHz,
ver anexo A, se definió otro valor de fre- sino la frecuencia de trabajo resultante del
cuencia: 24 MHz, el cual corresponde a la PLL y CPUDIV escogidos.
frecuencia a la que trabajará el núcleo del

4
Fig. 3. Selección de la frecuencia USB a partir de la frecuencia del oscilador de entrada

3.2. Descriptores USB la comunicación USB. Las referencias (2;


Cuando un dispositivo USB es 5) brindan información sobre el diseño de
conectado a la PC el sistema operativo es descriptores. En nuestro caso tomamos y
capaz de reconocer su fabricante, identifi- adaptamos el descriptor brindado en uno
cador de producto e instalarle un driver de los ejemplos USB del compilador CCS
estándar HID o abrir un asistente para los cuales también son una referencia de
encontrar el adecuado. También muestra consulta válida.
mensajes sobre el estado del dispositivo, El anexo B muestra el descriptor
marca, modelo, etc. Toda esa información agregado al código fuente del microcon-
que requiere el sistema operativo para trolador. La inclusión del descriptor en el
identificar al dispositivo USB está alma- archivo fuente se realizó a través de la
cenada en el microcontrolador PIC, en directiva “include” de la línea 64 de este
una zona de memoria RAM USB. En par- último.
ticular en el banco 4 de la RAM USB, En el descriptor se incluyen el
destinado al buffer de descriptores. identificador del fabricante del dispositi-
Los descriptores son archivos que vo (VID) y el identificador del producto
se incluyen junto al código fuente para ser (PID). Esos identificadores son utilizados
grabados a esa zona de memoria RAM por el sistema operativo de la PC para
USB. El diseño de un descriptor es el encontrar el driver apropiado al dispositi-
tema de mayor complejidad en el uso de vo USB. Las líneas 184 y 185 del descrip-

5
tor, véase el anexo B, contienen el VID y
el PID, respectivamente. La línea 131
declara el tipo de transferencia que sopor-
tará el dispositivo, en este caso el código
significa transferencia por interrupción.

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- Fig. 5. Especificación del VID y del PID del driver
lopment Wizard – Hardware Bus”, véase
la Fig. 4. Esta da la posibilidad de desarro-
llar un driver para dispositivos PCI, USB
o FireWire.

Fig. 6. Finalización del asistente, nombre y lugar del


driver .inf a crear.
Con el código del microcontrola-
dor listo y el driver en LabVIEW dispo-
Fig. 4. Utilidad para desarrollar Driver USB de LabVIEW nible, podemos iniciar la simulación del
microcontrolador USB y observar cómo
En el siguiente paso del mismo este es detectado por el sistema operativo.
asistente se encuentran los campos del
VID y del PID. Estos campos se llenan en 3.3.1. Simulación del dispositivo con
correspondencia con las líneas 184 y 185 Proteus
del descriptor del anexo B, tal y como se Al iniciar la simulación del circui-
muestra en la Fig. 5. to de la Fig. 2 el sistema operativo detecta
Después de especificar el PID y el la presencia de un dispositivo USB, ini-
VID el asistente creará un archivo de tipo ciando el proceso de “enumeración” que
INF en el directorio y nombre especifica- básicamente consiste en asignarle una
dos en el paso mostrado en la Fig. 6. dirección en el bus al dispositivo. Des-
pués 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 Lab-
VIEW, instalándolo desde una lista o ubi-
cación específica, Fig. 8.

Fig. 10. Confirmación de Windows

Si ahora observamos el adminis-


trador de Hardware de Windows XP po-
dremos percatarnos de que se ha agregado
una nueva categoría, la categoría de dis-
positivos USB de National Instruments
(NI-VISA USB). Y bajo esta última apa-
recerá nuestro dispositivo USB. Ello sig-
Fig. 7. Asistente para localizar el driver del dispositivo 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 categoría
de NI-VISA USB Devices en el adminis-
trador de dispositivos de Windows XP.

Fig. 8. Localización del driver INF


Después del paso anterior el asis-
tente concluye de instalar el driver para el
dispositivo, Fig. 9 y Fig. 10.

Fig. 11. Presencia del dispositivo en el Administrador de


Dispositivos de Windows
Fig. 9. Finalización del asistente

7
3.3.2. Instrumento Virtual
Antes de pasar al desarrollo de un instrumento virtual o VI para la comunicación
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.

Nótese como en el “resource name”


del dispositivo aparecen los códigos PID y
VID que habíamos 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 potenciómetro RV1
eran registrados por el instrumento virtual
cíclicamente y al activar el botón LEDs del
Puerto B del VI el circuito respondía po-
niendo en alto todos los pines del puerto B,
se enviaba el código hexadecimal 0xFF ha-
cia el PIC o el código 0x00 en caso de des-
Fig. 12. Visa Interactive Control para determinar el VISA activar el botón de Activar LEDs del VI.
Resource Name

Fig. 13. Panel Frontal del VI desarrollado y simulación en Proteus

8
La ventana de código
del VI desarrollado
se muestra en la Fig.
14. Se programaron
dos ciclos indepen-
dientes, uno para el
envío y otro para la
recepción de las lec-
turas AD del PIC. La
llegada de un dato al
puerto USB de la PC
es detectada por el
VI a través de una
interrupción USB.
El envío y la
recepción se realizan
independientemente
la una de la otra, full
dúplex.

Fig. 14. Diagrama de código del VI desarrollado

9
4. Implementación Práctica
Para el montaje práctico del 7. Referencias
PIC18F4550 se adaptó el PICDEM 2
Plus, incluyéndole un conector Header de 1. Inc., Microchip Technology.
4 pines en su área de prototipo. Los pines PIC18F2455/2550/4455/4550 Data Sheet.
2 y 3 del conector Header se unieron a s.l. : Microchip, 2004. DS39632B.
través de cables con los pines 23 y 24 del
socket de 40 pines del PICDEM, respec- 2. USB Specification, version 2.0: Chapter 9.
tivamente. Los pines 23 y 24 se corres- [Online] http://www.usb.org.
ponden con las señales diferenciales D- y
D+ respectivamente. El pin 1 del conector 3. CCS. [Online] http://www.ccsinfo.com/.
Header se conectó al común del PICDEM
2 plus y el pin 5 al terminal de 5 V de la 4. [Online] http://www.labcenter.co.uk/.
misma placa de demostración, con el ob-
5. Condit, Reston. TB054: An Introduction to
jetivo de alimentarla directamente del bus
USB. USB Descriptors with a Game Port to USB
Los resultados obtenidos con el Game Pad Translator Example. s.l. :
montaje práctico fueron los mismos que Microchip Technology, 2004. DS91054C.
con la simulación en Proteus 7.2. El VI
diseñado se comportó de igual manera y 6. Dearborn, Scott. AN971: USB Port-
sí se notó la diferencia de velocidad entre Powered Li-Ion/Li-Polymer Battery Charging.
el montaje práctico y la simulación, esta s.l. : Microchip Technology Inc, 2005.
última más lenta que la primera. Al co-
nectar el dispositivo USB por primera vez 7. Condit, Reston. AN258: Low Cost USB
a la PC Windows ya lo reconocía y pudo Microcontroller Programmer. s.l. : Microchip
cargar el driver correspondiente que pre- Technology Inc., 2003. DS00258A.
viamente había sido instalado en la fase
de simulación con Proteus. 8. Rojvanit, Rawin. AN956: Migrating
Applications to USB from RS-232 UART with
5. Conclusiones Minimal Impact on PC software. s.l. :
Se logró realizar la simulación y la Microchip Technology, 2004. DS00956B.
implementación práctica de la comunica-
ción USB utilizando un microcontrolador 9. Microchip. [Online]
PIC18F4550 y un VI diseñado en Lab- http://www.microchip.com.
VIEW.
El desarrollo de los descriptores
USB aún debe profundizarse ya que estos
constituyen una gran parte de la configu-
ración del dispositivo USB.

10
Anexos
Anexo A. Código Fuente en lenguaje C del PIC18F4550 con USB

11
12
13
Anexo B. Descriptor USB del dispositivo

14
15
16
17
18

View publication stats

Anda mungkin juga menyukai