You are on page 1of 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.

You might also like