PROCESO DE SIMULACIÓN EN PROTEUS - Zona de...

12
1 USB PROCESO DE SIMULACIÓN EN PROTEUS Departamento de Electrónica Fundación San Valero Microchip PIC18F4550

Transcript of PROCESO DE SIMULACIÓN EN PROTEUS - Zona de...

Page 1: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

1

USB

PROCESO DE SIMULACIÓN EN PROTEUS

Departamento de ElectrónicaFundación San Valero

Microchip PIC18F4550

Page 2: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

2

Microchip Firmware PIC18F4550

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

USB 1.0: baja velocidad (hasta 1.5Mbit/seg) usado en dispositivos de interfaz 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) unos 600 Mg/seg. Los buses son mucho más rápido debido a la incorporación de una fibra óptica al enlace de cobre.

La transmisión del USB se realiza mediante un cable de cobre de par trenzado 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 un máximo consumo de 500mA.

Microchip Firmware PIC18F4550

Conector USB:1=Vbus2=D-3=D+4=Gnd

Page 3: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

3

Microchip Firmware PIC18F4550

Vamos a usar un PIC 18F4550 que gestione mediante software la comunicación USB2.0 con nuestro ordenador.

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

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

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

Microchip Firmware PIC18F4550

Estos son únicos para cada dispositivo que existe en el mercado, ya que si hubiese en nuestro ordenador dos dispositivos con el mismo VID/ID causarían conflictos entre 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”.

Page 4: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

4

Microchip Firmware PIC18F4550

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

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

Configurar Oscilador PIC18F4550

Una cuestión muy importante es el PLL del PIC

Necesitamos que a nuestro micro le lleguen sólo 4MHz por lo que hay que usar un prescaler. Para ello en CCS se usa la sentencia PLLX (descrita en Fuses), 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ía PLLl3.

Page 5: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

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 personalizar nuestro PIC?

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

Page 6: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

6

¿Donde personalizar nuestro PIC?

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

Para que nuestro dispositivo sea detectado por el ordenador lo primero que tenemos que hacer es configurar nuestro driver. Para ello abriremos con el archivo mchpcdc.inf que se encuentra en la url en la cual se encuentre en nuestro ordenador

Proceso de instalación

Una vez configurado el driver a nuestro gusto, pasaremos a la instalación del puerto de comunicaciones virtual.Lo primero será conectar nuestro dispositivo a algún puerto usb libre que tengamos. Nada más conectar el usb al ordenador aparecerá el asistente para hardware nuevo encontrado, si este nos pregunta conectarnos a Windows Update le diremos "No por el momento" y pulsaremos siguiente.

Page 7: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

7

Proceso de instalación

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

Proceso de instalación

Seleccionaremos "Buscar el controlador más adecuado en estas ubicaciones", "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 bajados de la sección de download "Drivers CRC" y accederemos a la url donde se encuentre.Pulsaremos sobre el botón "Aceptar" del explorador y a continuación al botón "Siguiente" de la ventana del asistente.

Page 8: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

8

Proceso de instalación

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

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 busY el visualizador llamado analizador de transiciones USB

Page 9: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

9

USB en ISIS

El conector USBCONN permite conectar y desconectar el bus.Proteus incorpora los drivers necesarios para la simulación. Para instalarlos hay que ir a Inicio>programas>Proteus 7 professional>virtual usb>install usb drivers……….Solamente funciona en 32 bits en caso de querer trabajar con 64 bits se puede instalar un “Virtual Box” con sistema operativo Windows XP.

USB en CCS C

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

Page 10: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

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 externo USBN9607/04. De esta forma se puede utilizar el bus USB con cualquier PIC

•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 USB emulando un dispositivo RS232 y lo muestra como un puerto COM en Windows

USB en CCS C

Las funciones más importantes son:

•Usb_init(): Inicializa el hardware USB. Espera en un bucle infinito hasta que el periférico USB es conectado al bus (aunque eso no significa que ha sido 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 desconectado del bus, esta función inicializa el periférico USB o resetea el USB stack y 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ón normal y puede enviar y recibir paquetes de datos.

Page 11: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

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 un carácter en el buffer de transmisión; en el caso de que esté lleno esperará hasta que pueda enviarlo.

•Usb_cdc_getc( c): Es idéntica a get( c) y lee un carácter. Recibe un cará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 <18F4550.h>#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN#use delay(clock=48000000)#include <usb_cdc.h>

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

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

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

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

Page 12: PROCESO DE SIMULACIÓN EN PROTEUS - Zona de …profesores.sanvalero.net/~arnadillo/Documentos/Apuntes... · La transmisión del USB se realiza mediante un cable de cobre de par ...

12

USB en CCS C