Está en la página 1de 20

Generador de inf para los drivers USB de Microchip

Introduccin
Descripcin del software
Personalizando e instalando mchpusb.inf
Personalizando e instalando mchpcdc.inff
Video de ejemplo de uso
Descarga del Software
Historial de Cambios
Autores Correspondientes

Introduccin:
En la serie 18F de uC PIC de Microchip, hay unos micros que poseen modulos de
USB, los primeros micros con modulo USB que salieron al mercado fueron la familia
18Fxx5x. Estos modulos son de gran importancia en el acontecer actual porque el USB
se encuentra en la mayora de los dispositivos electrnicos que requieren comunicarse
externamente.
Comunicar un uC PIC con un dispositivo por USB, conyeva una compleja y
estructurada red de protocolos que por lo general lleva escribir gran cantidad de lineas
de programacin al que agrupan y/o denominan Pila o Stack USB.
por otro lado y dependiendo de las caracteristicas de la transmisin, es necesario
configurar un driver del lado del ordenador -a fin de que el sistema operativo S.O.
reconozca al pic como un dispositivo de transaccin de datospara que el driver sea configurado correctamente, el ordenador requiere de una
secuencia de datos con informacin relativa al dispositivo, esta secuencia de datos se
encuentran organizadas sintacticamente en el archivo instalador .inf
a nivel de usuario, se resume a 5 los datos para personalizar nuestros archivos
instaladores .inf . Estos datos son:

Nombre
VID
PID
Fabricante
Descripcin

Descripcin del Software


Automatizacin de datos Enumeracin USB es un programa que pemite introducir
datos como Nombre, VID, PID, Fabricante, Descripcin , entre otros para configurar
el instalador que necesita el Windows cuando conectamos el dispositivo por primera
vez.
esta identificacin se muestra al momento de instalacin y cuando accedemos al
administrador de dispositivos en Windows

Ventana principal del Generador INF


volver arriba

hay 2 modos de creacin de drivers, el modo de transmisin BULK para controlar las
transacciones con MCHPUSB.DLL y mediante la clase CDC (que es reconocido por
Windows poe ser un estandar). Para personalizar nuestros datos en el Firmware del uC
PIC se usa el stack USB que provee el PIC C Compiler de CCS, dichos datos
corresponden al descriptor de descripcin tipo 3

Personalizando e instalando mchpusb.inf


1.- El primer paso es introducir los datos personalizados en INF Enumeracin Datos
uC PIC-USB.

paso 1
2.- Una vez creados y guardados los archivos respectivos mchpusb.inf y
usb_desc_scope.h, se procede a compilar el firmware y grabarlo en el microcontrolador
uC PIC que posea mdulo USB.
Nota:
- Debes guardar el nuevo usb_desc_scope.h al directorio del proyecto a compilar.
3.- Al conectar el uC PIC al ordenador, se iniciar el proceso de deteccin de nuevo
hardware.

paso 3
4.- Aparecer una ventana como esta:

paso 4

paso 4
5.- Aparecer otra ventana preguntando por el origen del driver, buscamos la ruta donde
se encuentra el archivo mchpusb.inf

paso 5
7.- Tecleamos en Siguiente y el ordenador comenzar el proceso de instalacin y
enumeracin.

paso 6
8.- Al terminar, saldr una ventana como esta, diciendonos que se configur
correctamente el nuevo hardware.

paso 7
Si vamos al administrador de dispositivos, veremos que aparecer nuestro uC PIC en la
lista de hardware disponibles en el ordenador.
Al clicar en la rama de nuestro uC PIC, veremos que nuestros personalizados estn all.

paso 8

paso 8
Para usar el cono predeterminado del sistema en Windows XP, bastara clicar en el
checkbox de opciones avanzadas:

paso 9
aplicando los pasos anteriores, una vez instalado correctamente:

paso 10

Propiedades del device


volver arriba

Personalizando e instalando mchpcdc.inf


1.- El primer paso es introducir los datos personalizados en INF Enumeracin Datos
uC PIC-USB.

paso 1
volver arriba

2.- Una vez creados y guardados los archivos respectivos mchpcdc.inf y


usb_desc_cdc.h se procede a compilar el firmware y grabarlo en el microcontrolador
uC PIC que posea mdulo USB.
Notas:
- En la carpeta donde guard mchpcdc.inf debe estar mchpcdc.cat.
- Debe guardar el nuevo usb_desc_cdc.h al directorio del proyecto a compilar.
- Debe buscar el archivo usb_cdc.h que se encuentra en \PICC\Drivers y copiarlo al
directorio del proyecto a compilar, buscar esta linea:
#include <usb_desc_cdc.h> //USB Configuration and Device descriptors for this USB
device
y cambiarla por esta linea:
#include usb_desc_cdc.h //USB Configuration and Device descriptors for this USB
device

3.- Al conectar el uC PIC al ordenador, se iniciar el proceso de deteccin de nuevo


hardware.

paso 2
4.- Aparecer una ventana como esta:

paso 4
5.- Aparecer otra ventana preguntando por el origen del driver.

paso 5
6.- Buscamos la ruta donde se encuentra el archivo mchpcdc.inf.

paso 6
7.- Tecleamos en Siguiente y el ordenador comenzar el proceso de instalacin y
enumeracin.

paso 7

paso 8
8.- Al terminar, saldr una ventana como esta, diciendonos que se configur
correctamente el nuevo hardware.

paso 9
9.- Si vamos al administrador de dispositivos, veremos que aparecer nuestro uC PIC en
la lista de hardware disponibles en el ordenador.

paso 10
11.- En la pestaa Controlador podemos ver el resto de los datos personalizados.

propiedades del device


volver arriba

Video de ejemplo de uso

volver arriba

Descarga del Software

Bajar Software
link alternativo descarga

MD5: 3D4EC240D2E92B44E16CBAA5821B830E
volver arriba

Historial de Cambios
Historial cambios:

v3.1. 06-Mar-09
- Arreglado un bug relacionado al sobrescribir los archivos generados.
- Se aadi la opcin de escoger el tipo de cono del dispositivo, si se quiere usar un
cono personalizado usar el predeterminado de windows (Win Vista).
- Probado y funcional para Windows Vista 32.

v3.0 27-oct-08
- Mudado el cdigo fuente del Visual Basic 6.0 al AutoIT con la iniciativa de apoyar al
software libre.
- Actualizado para MCHPFSUSB v1.1.0.0 (June 23, 2008) que corresponde a la
actualizacin de:
- mchpusb.inf
- mchpusb.sys
- mchpusb64.sys
- mchpusb.cat
- mchpcdc.inf
- mchpcdc.cat
(para mayor informacin leer las release notes de MCHPFSUSB en
www.microchip.com)
- Aadida multitud de mejoras como comprobaciones de los textos, cambio total en la
interfaz de idioma Ingls <-> Espaol

v2.0 01-feb-08
- aadida nuevas opciones:
- Crear una clase aparte solo para el dispositivo.

- incluir un cono a esa clase creada.


- mejor estructuracin de cdigo fuente.
- al cerrar el programa se guardan los datos de todos los campos.
- al abrir el programa se cargan los datos de todos los campos, guardados con
anterioridad.

v1.0 versin inicial 09-ene-08

volver arriba

Autores Correspondientes
Los archivos:
- mchpusb64.sys
- Ioctls.h
- mchpusb.inf
- mchpusb.sys
- mchpusb.cat
- mchpcdc.cat
- mchpcdc.inf
son propiedad de la empresa Microchip.
Los archivos:
- usb_desc_scope.h
- usb_desc_cdc.h
- usb_cdc.h
son propiedad de la empresa del PIC C Compiler: Custom Computer Services (CCS).

1. DAVID dice:
20 Marzo 2010 en 3:24 am

Saludos, por le que he entendido, se tiene que grabar el archivo


usb_desc_scope.h el el uC? No consigo que reconozca el hardaware,ni
haciendolo manualmente. Estoy realizando un proyecto, y mirando por la web
encontre un proyecto donde graba en el pic un archivo para despues intercambiar
datos con matlab. El archivo es el siguiente
#include
//#device ADC=10 //Descomente sta opcin en caso de usar el ADC a 10bits
#fuses
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV
1,VREGEN,MCLR,NOPBADEN
// Paso 2: Ajuste el fusible del PLL de acuerdo al Xtal que utilice
// No olvide que PLL1 = Para un Xtal de 4Mhz
// PLL2 = Para un Xtal de 8Mhz
// PLL3 = Para un Xtal de 12Mhz
// PLL4 = Para un Xtal de 20Mhz , etc.
#use delay(clock=48000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
/////////////////////////////////////////////////////////////////////////////
//
// CCS Library dynamic defines. For dynamic configuration of the CCS Library
// for your application several defines need to be made. See the comments
// at usb.h for more information
//
/////////////////////////////////////////////////////////////////////////////
#define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas
HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on
EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on
EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 64 //size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 64 //size to allocate for the rx endpoint 1 buffer
//#define USB_CON_SENSE_PIN PIN_B2 //CCS 18F4550 development kit has
optional conection sense pin
/////////////////////////////////////////////////////////////////////////////
//
// Include the CCS USB Libraries. See the comments at the top of these
// files for more information
//
/////////////////////////////////////////////////////////////////////////////
#include //Microchip PIC18Fxx5x Hardware layer for CCSs PIC USB driver
#include //descriptors del Pic USB
#include //handles usb setup tokens and get descriptor reports

/////////////////////////////////////////////////////////////////////////////
/*
Paso 3: Abra el archivo C:\Archivos de
programa\PICC\Drivers\usb_desc_scope.h
( donde se instal el compilador de CCS ) que es el descriptor del USB
ubicado en su PC, avance hasta la seccin start device descriptors
(aprox en la linea 132) y reemplace los valores del vendor id,
el product id y el device release number como sigue ( puede copiar
las tres lneas siguiente y pegar en el archivo del descriptor <> ) :
0xD8,004, //vendor id (004D8 is Microchip)
00B,000, //product id
001,000, //device release number
ESTO ES IMPORTANTE HACERLO CORRECTAMENTE DE LO
CONTRARIO, EL DISPOSITIVO NO SERA RECONOCIDO POR EL
DRIVER.
*/
/////////////////////////////////////////////////////////////////////////////
#define LEDV PIN_B6
#define LEDR PIN_B7
#define LED_ON output_high
#define LED_OFF output_low
// Direcciones de memoria vlidas para PIC18F2455/2550/4455/4550 (no olvide
que son la misma familia)
// Esto es con el fin de poder escribir directamente en ellos sin usar instrucciones
como intermediarios.
#BYTE TRISA = 00F92 // Registro de control de E/S del puerto A
#BYTE TRISB = 00F93 // Registro de control de E/S del puerto B
#BYTE PORTA = 00F80 // Registro del puerto A
#BYTE PORTB = 00F81 // Registro del puerto B
#BYTE ADCON1 = 00FC1 // Registro de control del ADC
#BYTE CMCON = 00FB4 // Registro del modulo comparador
int8 dato[64];
void main(void) {
LED_ON(LEDV); //encendemos led en RB6 para indicar presencia de energia
LED_OFF(LEDR);
usb_init(); // inicializamos el USB
usb_task(); // habilita periferico usb e interrupciones
usb_wait_for_enumeration(); // esperamos hasta que el PicUSB sea configurado
por el host
LED_OFF(LEDV);
LED_ON(LEDR); // encendemos led en RB7 al establecer contacto con la PC

TRISA = 00FF; // Se declara el puerto A como entradas (instruccin opcional)


TRISB = 000; // Se declara el puerto B como salidas (instruccin opcional)
ADCON1 = 00F; // Se configura al ADC para entradas digitales (apagar el
ADC)
CMCON = 007; // Se configuran los comparadores para entradas digitales
(apagar los comparadores)
while (TRUE)
{
if(usb_enumerated()) // si el Pic est configurado via USB
{
if (usb_kbhit(1)) // si el endpoint de salida contiene datos del host
{
usb_get_packet(1, dato, 64); // cojemos el paquete de tamao 8bytes del EP1 y
almacenamos en dato
portb = dato[0]; // Se muestra al byte completo en el puerto B
dato[1] = porta; // Se lee el puerto A y se almacena en el vector
usb_put_packet(1, dato, 64, USB_DTS_TOGGLE); //y enviamos el mismo
paquete de tamao 64bytes del EP1 al PC
}
}
}
}
//Paso 4: Compile y grabe en el PIC
Pero tras grabar este archivo al pic, no me reconoce el nuevo dispositivo, ni
agragandolo manualmente. Si pueden ayudarme lo agradeceria, necesitaria
conectar el pic para poder empezar.
Gracias.

También podría gustarte