3 simular usb proteus
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