Vous êtes sur la page 1sur 24

Curso de PIC en C

La comunicacin USB es talvez una de las mas complejas,


existen libros enteros sobre esta comunicacion.

Si bien podemos usar el puerto USB con el PIC en
ensamblador esto nos costara horas y horas de literatura,
en general es un esfuerzo considerable.

Programar en C nos facilita sensiblemente el trabajo
sintetizndolo en el uso de funciones, sin contar la ya
mencionada portabilidad.

De hacerse con ensamblador y querer usar otro uC distinto
a Microchip nos costara otras horas de literatura, este tipo
de detalles muestran la conveniencia de la programacin
en lenguajes de alto nivel para uC.
La interfaz est formada por cuatro hilos dos
para la alimentacin 5v (Rojo) GND (Negro) y
dos para datos D+ (verde) y D- (Blanco), la
seal es diferencial (+-) cuyo valor depende
de la velocidad del bus (3,3v para low-speed
y 400mV para high-speed).

Los conectores se les denomina de tipo A y
de tipo B
Tipo B
Tipo A
Low speed: 1,5 Mbps. Soportado por las
especificaciones 1.1, 2.0 y 3.0. Es la velocidad
utilizada por dispositivos como teclados, ratones,
joystick, etc.

Full speed: 12 Mbps. Soportado por USB 1.1, USB 2.0
y USB 3.0. Un ejemplo donde se utilizan estas
velocidades es en transmisiones de audio.

High speed: 480 Mbps. Solo USB 2.0 y USB 3.0.
Ejemplo transmisiones de video.

Super speed: 5Gbps solo soportado en dispositivos
USB 3.0

Los dispositivos USB que se conectan a la
computadora se dividen en clases.

Una clase es un modelo o plantilla que
describe el estado y el comportamiento de los
objetos que la comparten.

La especificacin USB provee de propiedades
y funciones que pueden ser utilizadas por los
dispositivos que tengan caractersticas
similares. Por ejemplo, un teclado y un ratn
por sus caractersticas pertenecern a la
misma clase la llamada Human Interface
Device (HID)
una ventaja de utilizar esta clase por ejemplo
es que no se necesita instalar ningn driver
para el dispositivo ya que el sistema
operativo utilizar uno genrico para todos.
CDC (Communications Device Class): Un
ejemplo de dispositivo que utiliza esta clase
son los Modems.

En este ejemplo utilizaremos esta clase para
comunicar nuestro PIC18F4550 con una
aplicacin de escritorio.
La velocidad mxima al utilizar esta clase ser de
80 kBytes/s.

Utiliza tambin driver estndar incluidos ya en el
sistema operativo, segn el sistema operativo
utilizado precisar o no de la instalacin del
archivo .INF.

Cuando utilizamos esta clase en el PC nos crear
un puerto serie virtual y la comunicacin entre el
dispositivo y la aplicacin de escritorio se har a
travs de el al igual que se hara con un puerto
serie fsico
Lo anterior supone una gran ventaja a la hora
de disear una aplicacin de escritorio, ya
que cualquier IDE de programacin sea del
lenguaje que sea, por ejemplo MATLAB,
Visual Basic o LABView, en general programas
muy utilizados en las areas de electrnica
disponen de un componente o librera que
permite el acceso al puerto serie fcilmente.
El Host es aquel encargado de detectar la
conexin de nuevos dispositivos (generalmente
es la PC), cuando el host detecta un nuevo
dispositivo lo interroga para adquirir de l la
informacin necesaria para establecer la
comunicacin, como la clase a la que pertenece,
el consumo de corriente, el VID y PID, etc y le
asigna una direccin.

Este proceso de interrogacin y asignacin de
direccin para establecer la comunicacin se le
llama enumeracin.
Los PIC18 no poseen las caractersticas para
adoptar el papel de host, es decir, no
podemos conectarle al PIC un mouse, o una
memoria USB.

Sin embargo las gamas mas altas como la
PIC32 si poseen las capacidades para ser un
HOST.
La informacin que el host pide al dispositivo
se llaman descriptores, en el caso del pic esta
almacenada es su memoria no voltil. De
estos descriptores los que realmente nos
interesan por el momento son los:

VID (Vendor ID)
PID (Product ID)
El ID del vendedor y el ID del producto son dos nmeros
de 16 bits que identifican y distinguen al dispositivo del
resto. Nunca deben conectarse dos dispositivos con el
mismo VID y PID al mismo host pues habr conflictos.

Por esta razn se debe adquirir una licencia para que se
nos otorgue un VID valido y poder comercializar nuestros
productos garantizando que no habr otros iguales que
produzcan fallos.

Evidentemente no compraremos una licencia para trabajar,
afortunadamente Microchip facilita estos nmeros para
trabajar con los PIC:
VID=0X04D8
PID=0X000A


Cuando hayamos programado nuestro PIC y
lo conectemos al puerto USB, Windows lo
reconocer inmediatamente y comenzara la
instalacin del driver genrico (usbser.sys), la
instalacin es la habitual, el asistente nos
pedir el archivo .inf, as que le indicaremos
la direccin del mismo: C\:Microchip
Solution\USB Tools\USB CDC Serial Demo\inf

El archivo se llama: mchpcdc.inf
Este archivo (mchpcdc.inf) es proporcionado por
Microchip y en el se encuentran los datos como
el nombre que se muestra en el administrador de
dispositivos y sobre todo los VID y PID
mencionados anteriormente, debemos
asegurarnos que estos ltimos coincidan con los
grabados en el PIC.

Los VID y PID del PIC los podemos modificar
antes de grabarlo modificando el archivo
USB_DESC_CDC.h en CCS. En este video se
mostrara como.

Bueno, el programa que realizaremos en el
PIC ser simple, consistir en que el PIC
esperara que se presione una tecla y mostrara
un mensaje, posteriormente recibir texto
desde la PC y lo escribir en un LCD y
reenviara a la aplicacin de escritorio para
verlo tambin en la pantalla de la PC.
Las funciones USB que veremos en el
desarrollo del programa son:

Usb_cdc_init();
USB_init();

Estas funciones son necesarias para inicializar
el modulo USB.
Usb_enumerated()
Esta funcin devuelve un 1 o true si el
dispositivo ha sido enumerado por el HOST.

Usb_task();
Funcin que habr de ser llamada
peridicamente en el programa
Usb_cdc_putc();
Envia un carcter por el puerto

Usb_cdc_getc();
Lee el carcter recibido por el puerto, si no lo
hay esperara hasta que haya.

Usb_cdc_kbhit();
Devuelve un true si se ha recibido un carcter
por el puerto
Pues como hemos dicho usaremos la clase
CDC que emula un puerto serie virtual, as
que con toda comodidad podemos usar un
visor de puerto serie como el Hyperterminal.

Esta aplicacin ser suficiente ya que no
requiere de prcticamente ningn
conocimiento previo y nos ser til para ver o
mostrar que se manda o recibe del PIC a la
PC.
Lo que haremos en resumen ser:

1) Realizar el programa en el PIC para
enviar/recibir datos por usb y modificaremos los
datos del VID PID a los requeridos por Microchip.

2) Conectaremos el PIC a la PC e instalaremos el
driver necesario.

3) Abriremos Hyperterminal y lo configuraremos
para enviar/recibir datos desde el PIC y poder
verlos en el Hyperterminal y LCD.
Con esto habremos aprendido a enviar y
recibir informacin de la PC usando el puerto
USB con la ventaja de la emulacin de un
puerto serie que nos servir para migrar
fcilmente de RS232 a USB y trabajar
cmodamente con IDEs potentes como
LABView entre otros.

Vous aimerez peut-être aussi