net/publication/324437937
CITATIONS READS
3 1,071
1 author:
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Yohan Pérez Moret on 11 April 2018.
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.
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
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.
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.
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.
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