3 simular usb proteus

Upload: joel-lopez

Post on 06-Jul-2018

250 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 3 Simular USB Proteus

    1/12

    31/08/2012

    1

    USB

    PROCESO DE SIMULACIÓN ENPROTEUS

    Departamento de ElectrónicaFundación San Valero

    Microchip PIC18F4550

  • 8/17/2019 3 Simular USB Proteus

    2/12

    31/08/2012

    2

    Microchip Firmware

    PIC18F4550

    La velocidad de transferencia a ido aumentando rápidamente a lo largo deestos años. Caben destacar 3 de estos: 

    USB 1.0: baja velocidad (hasta 1.5Mbit/seg) usado en dispositivos deinterfaz humana (HID) como ratones y teclados.

    USB 2.0: Alta Velocidad (hasta 480Mbit/seg) unos 60Mg/seg.

    USB 3.0: Giga Velocidad, en fase experimental, (hasta 4.8Gbit/seg) unos600 Mg/seg. Los buses son mucho más rápido debido a la incorporación deuna fibra óptica al enlace de cobre.

    La transmisión del USB se realiza mediante un cable de cobre de partrenzado con una impedancía de unos 90 ohm llamados D+ y D-. Estos

     pueden dar energía a dispositivos externos, con una tensión de 5V y unmáximo consumo de 500mA.

    Microchip FirmwarePIC18F4550

    Conector USB: 1=Vbus 2=D-3=D+ 4=Gnd 

  • 8/17/2019 3 Simular USB Proteus

    3/12

    31/08/2012

    3

    Microchip Firmware

    PIC18F4550Vamos a usar un PIC 18F4550 que gestione mediante software lacomunicación USB2.0 con nuestro ordenador.

    También hay que configurar dos parámetros esenciales en tododispositivo que son el VID e ID.

    VID (Vendor ID): Es el identificador de la empresa. Cada empresa tiene unidentificador, el cual puede vender diferentes productos a los quese les incluye el ID.

    ID (Product ID): Es el identificador del producto. Por tanto un dispositivo tendrá unVID e ID fijos que les hace únicos con lo que no pueden sufririncompatibilidad con otros dispositivos.

    Microchip FirmwarePIC18F4550

    Estos son únicos para cada dispositivo que existe en elmercado, ya que si hubiese en nuestro ordenador dosdispositivos con el mismo VID/ID causarían conflictosentre ellos, impidiendo el correcto funcionamiento de

    ambos.

    Para asegurarnos que no existen conflictos debemos pagar y tener nuestro único e indivisible VID/ID ,solamente si queremos comercializarlo no nos quedarámás remedio que comprar una “licencia”.

  • 8/17/2019 3 Simular USB Proteus

    4/12

    31/08/2012

    4

    Microchip Firmware

    PIC18F4550

    El código principal en el microcontrolador para crear nuestro USB 2.0 es elsiguiente: 

    Librerías utilizadas para configuración USB según Microchip 

    Configurar OsciladorPIC18F4550

    Una cuestión muy importante es el PLL del PIC 

    Necesitamos que a nuestro micro le lleguen sólo 4MHz por lo que hay queusar un prescaler. Para ello en CCS se usa la sentencia PLLX (descrita enFuses), donde X significa la división de nuestro clock.

    Así pues si tenemos un cristal de 20MHz, el prescaler tendrá que ser 20: 4 = 5 ->PLL5. Si por el contrario nuestro cristal es de 12MHz seríaPLLl3.

  • 8/17/2019 3 Simular USB Proteus

    5/12

    31/08/2012

    5

    ¿Donde personalizar

    nuestro PIC?Esta se realiza en el archivo usb_desc_cdc.h en las siguientes líneas de código.

    la numeración hexadecimal de la descripción del VID / ID va al revés,es decir, el primero número hex. será el último y viceversa.

    ¿Donde personalizarnuestro PIC?

    La longitud de la cadena tiene que ser exacta, sino saldrán caracteresque no tienen que ver con nuestro dispositivo si el número de la cadenaes mayor o se suprimirán caracteres si el número de la cadena esinferior, para ello hay una fórmula muy sencilla que es: (Número de letras + 1)*2 = longitud a poner Ejemplo en string1 queremos poner JVR, esta tiene 3 caracteres portanto: longitud a poner = ( 3 + 1 ) + 2 = 4 + 2 = 8 

  • 8/17/2019 3 Simular USB Proteus

    6/12

    31/08/2012

    6

    ¿Donde personalizar

    nuestro PIC?

    Es recomendable cambiar la velocidad de comunicación del CRC desde elPIC (baudRate) ya que así nos aseguraremos de no tener error alguno ennuestro dispositivo. Esto lo podemos realizar desde el archivo usb_cdc.h cambiando la siguiente línea de código en la función void usb_cdc_init(void): 

    Para que nuestro dispositivo seadetectado por el ordenador lo

     primero que tenemos que hacer esconfigurar nuestro driver. Para elloabriremos con el archivomchpcdc.inf que se encuentra en laurl en la cual se encuentre ennuestro ordenador 

    Proceso de instalación

    Una vez configurado el driver a nuestro gusto, pasaremos a la instalacióndel puerto de comunicaciones virtual.Lo primero será conectar nuestro dispositivo a algún puerto usb libre quetengamos. Nada más conectar el usb al ordenador aparecerá el asistente

     para hardware nuevo encontrado, si este nos pregunta conectarnos aWindows Update le diremos "No por el momento" y pulsaremos siguiente.

  • 8/17/2019 3 Simular USB Proteus

    7/12

    31/08/2012

    7

    Proceso de instalación

    A continuación seleccionaremos "Instalar desde una lista o ubicaciónespecífica (avanzada)" y pulsamos siguiente.

    Proceso de instalación

    Seleccionaremos "Buscar el controlador más adecuado en estasubicaciones", "Incluir esta ubicación en la búsqueda", para a continuación

     pulsar sobre el botón con la etiqueta " Examinar".Aparecerá un explorador de windows donde iremos a los archivos bajadosde la sección de download " Drivers CRC" y accederemos a la url donde seencuentre.

    Pulsaremos sobre el botón "Aceptar" del explorador y a continuación albotón " Siguiente" de la ventana del asistente.

  • 8/17/2019 3 Simular USB Proteus

    8/12

    31/08/2012

    8

    Proceso de instalación

    Para asegurarnos que nuestro puerto serie de comunicaciones ha sidocorrectamente instalado tendremos que acceder al administrador dedispositivos que se encuentra en: Inicio -> Panel de Control -> Sistema -> Hardware -> Administrador dedispositivos

    USB en ISIS

    Proteus versión 7.0 ya incorpora herramientas de simulación de circuitos con USB 

    El dispositivo se denomina: USBCONN, el cual permite conectar y desconectar el bus Y el visualizador llamado analizador de transiciones USB 

  • 8/17/2019 3 Simular USB Proteus

    9/12

    31/08/2012

    9

    USB en ISIS

    El conector USBCONN permite conectar y desconectar el bus.

    Proteus incorpora los drivers necesarios para la simulación. Parainstalarlos hay que ir a Inicio>programas>Proteus 7 professional>virtualusb>install usb drivers……….

    USB en CCS C

    La versión del compilador para poder compilar programas realizados con elPIC18F4550 es la 4.013 

  • 8/17/2019 3 Simular USB Proteus

    10/12

    31/08/2012

    10

    USB en CCS C

    Las librerias que suministra son: 

    •Pic_usb.h : driver de capa hardware de la familia PIC16C765 

    •Pic_18usb.h: driver de la capa hardware de la familia PIC18F4550 

    •Usbn960x.h: driver de capa hardware para el dispositivo externoUSBN9607/04. De esta forma se puede utilizar el bus USB con cualquierPIC 

    •Usb.h: Definiciones y prototipos utilizados en el driver USB 

    •Usb.c: El USB stack, que maneja las interrupciones USB 

    •Usb_cdc.h: driver que permite utilizar una clase de dispositivo CDC USBemulando un dispositivo RS232 y lo muestra como un puerto COM enWindows 

    USB en CCS C

    Las funciones más importantes son: 

    •Usb_init() : Inicializa el hardware USB. Espera en un bucle infinito hastaque el periférico USB es conectado al bus (aunque eso no significa que hasido enumerado por el PC). Habilita y utiliza la interrupción USB.

    •Usb_task(): Si se utiliza una detección de conexión para la inicialización,entonces se debe llamar periódicamente a esta función para controlar el

     pin de detección de conexión. Cuando el PIC es conectado o desconectadodel bus, esta función inicializa el periférico USB o resetea el USB stacky el periférico.

    •Usb_enumerated(): Devuelve un TRUE si el dispositivo ha sido enumerado por el PC y, en este caso, el dispositivo entra en modo de operaciónnormal y puede enviar y recibir paquetes de datos.

  • 8/17/2019 3 Simular USB Proteus

    11/12

    31/08/2012

    11

    USB en CCS C

    Las funciones específicas para CDC son: 

    •Usb_cdc_putc(c): Es idéntica a put( c) y envía un carácter. Coloca uncarácter en el buffer de transmisión; en el caso de que esté llenoesperará hasta que pueda enviarlo.

    •Usb_cdc_getc( c): Es idéntica a get( c) y lee un carácter. Recibe uncarácter del buffer de transmisión; en el caso de estar vacío esperaráhasta que se reciba.

    USB en CCS C

    Ejemplo de programa: 

    Drectivas del preprocesador: 

    #include  #fuses HSPLL ,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV, PLL5 ,CPUDIV1,VREGEN #use delay(clock=48000000) #include  

    Programa principal: main(){…………………………………………………..

    usb_cdc_init(); // Inicializar puerto usb como conexión puerto serie usb_init(); // Inicialización general usb 

    do { usb_task(); // Inicializar o resetear la conexión para ello hacemos una llamada periódica if (usb_enumerated()) // Para comprobar que ha sido enumerado por el Host (PC) 

    {…………………………..…………………………….. } while (1);  } 

  • 8/17/2019 3 Simular USB Proteus

    12/12

    31/08/2012

    12

    USB en CCS C