USB Begining

73
© 2010 Microchip Technology Incorporated. All Rights Reserved. Slide 1 USB BEGINING

description

mcelectronics

Transcript of USB Begining

© 2010 Microchip Technology Incorporated. All Rights Reserved. Slide 1

USBBEGINING

Módulo de comunicación RF

Prohibida l

a Rep

rodu

cción

USB

USB -> Universal Serial Bus.

En ordenadores, un bus es un subsistema que transfiere datos en serie o electricidad entre componentes del ordenador dentro de un ordenador o entre ordenadores. Un bus puede conectar varios periféricos

utilizando el mismo conjunto de cables.

Permite HOTSWAP (Nos brindan la posibilidad de conectar cualquier equipo sin la necesidad de apagar el

equipo). El bus permite conexión y desconexión dinámica, es decir, que los periféricos se conecten,

configuren, manipulen y desconecten mientras el sistema anfitrión y otros periféricos permanecen en

funcionamiento

Permite alimentar al dispositivo mediante el mismo USB

Según el protocolo de comunicación los dispositivos se clasifican en clases las cuales cada clase agrupa a

una serie de dispositivos que se caracterizan por su función.

Las clases permiten al Sistema Operativo poder ubicar el driver

Prohibida l

a Rep

rodu

cción

Topología

Adoptan una topología de estrella (127 dispositivos a la vez )y se organiza por niveles a partir

de un controlador host instalado en la placa base, que actúa de interfaz entre el bus de ésta y el primer dispositivo USB, el denominado concentrador raíz ("Root hub"), instalado también en la placa.

Cada uno de estos concentradores se considera el origen de un bus (numerados

sucesivamente a partir del 0), del que cuelgan los dispositivos en el orden en que son

detectados por el Sistema.

Ya que todos los periféricos comparten el ancho de banda del bus por medio de un protocolo

de arbitraje basado en testigos ("Tokens"). Estos pueden funcionar de forma simultanea debido

a que la información es enviada en paquetes; cada paquete contiene una cabecera que indica

el periférico a que va dirigido. Existen cuatro tipos de paquetes distintos: Token; Datos; Handshake, y Especial. Se utiliza un sistema de detección y corrección de errores bastante robusto tipo CRC ("Cyclical Redundancy Check").

Prohibida l

a Rep

rodu

cción

Topología

El funcionamiento está centrado en el host o sea, todas las transacciones se originan en él.

Es el controlador host el que decide todas las acciones, incluyendo el número asignado a cada

dispositivo.

Cuando se detecta un nuevo dispositivo es el host el encargado de cargar los drivers oportunos

sin necesidad de intervención por el usuario.

Prohibida l

a Rep

rodu

cción

USB 1.0 (LOW SPEED)Los dispositivos de baja velocidad por lo general son dispositivos de interacción con la

computadora, conocidos como dispositivos de interfaz humana (HID), ejemplo de esto son los

teclados, ratones, joytics. Este tipo de dispositivos tienen una tasa de transferencia de

1,5Mbitps (192KB/s)

USB 1.1 (FULL SPEED)El USB 1.1 es un bus que soporta tasas de transferencia de datos de 12 Mbitps. (1,5MB/s) Un

solo puerto USB se puede utilizar para conectar hasta 127 dispositivos periféricos, tales como

ratones, módems, y teclados. El USB también soporta la instalación Plug-and-Play y el hot

plugging.

USB 2.0 (HIGH SPEED)El USB 2.0 es un bus que soporta tasas de transferencia de datos de hasta 480Mbps.

Es una extensión del USB 1.1, utiliza los mismos cables y conectadores y es completamente

compatible con USB 1.1.

Velocidades - Versiones

Prohibida l

a Rep

rodu

cción

Cable

Vbus alimenta el dispositivo (5v y 500mA máx.)

D+ y D- información y los datos bidireccionales (12Mbps => 83ns por bit). V diferencial 3,3V (señalización diferencial en half dúplex )

GND masa

Tipos de cable:

Apantallado: el par de hilos de señal es trenzado; los de tierra y

alimentación son rectos, y la cubierta de protección (pantalla) solo puede conectarse a tierra en el anfitrión. Las conexiones a 15 Mbps y superiores

exigen cable apantallado. Z=90 ohms

Sin apantallar: todos los hilos son rectos. Solo la protección de plástico. Z=90 ohms

Un puerto permite 4 conexiones, entonces la energía del USB se asignará en unidades de 100 mA hasta un máximo de 500 mA por puerto.

Prohibida l

a Rep

rodu

cción

Se utilizan diámetros estándar para los hilos de alimentación del bus.

Según la sección se permite una longitud máxima.

5.00 m0.812203.33 m0.644222.08 m0.511241.31 m0.405260.81 m0.32128long. máx.mm ØAWG

Cable

Prohibida l

a Rep

rodu

cción

Tipos A y B: Ambos son polarizados (solo pueden insertarse en una posición) y utilizan sistemas de presión para sujetarse.

Tipo A: utilizan la hembra en el sistema anfitrión, y suelen usarse en dispositivos en los que la conexión es permanente (por ejemplo, ratones y teclados). Casi siempre en el lado del Host

(PC) o hubs.

Tipo B utilizan la hembra en el dispositivo USB (función), y se utilizan en sistemas móviles (por

ejemplo, cámaras fotográficas o altavoces). Lado de los periféricos.

Conectores

Conector tipo B

Conector tipo A

Prohibida l

a Rep

rodu

cción

Conectores

Prohibida l

a Rep

rodu

cción

Conectores

Prohibida l

a Rep

rodu

cción

El estándar USB especifica tolerancias mecánicas relativamente amplias para sus conectores,

intentando maximizar la compatibilidad entre los conectores fabricados.

El estándar USB, a diferencia de otros estándares también define tamaños para el área

alrededor del conector de un dispositivo, para evitar el bloqueo de un puerto adyacente por el

dispositivo en cuestión.

"USB On The Go" (sobre la marcha) permite a un puerto actuar como servidor o como

dispositivo - esto se determina por qué lado del cable está conectado al aparato. Incluso

después de que el cable está conectado y las unidades se están comunicando, las 2 unidades

pueden "cambiar de papel" bajo el control de un programa. Esta facilidad está específicamente

diseñada para dispositivos como PDA, donde el enlace USB podría conectarse a un PC como

un dispositivo, y conectarse como servidor a un teclado o ratón. El "USB-On-The-Go" también

ha diseñado 2 conectores pequeños, el mini-A y el mini-B.

Prohibida l

a Rep

rodu

cción

Identificación de velocidad

Dependiendo de la conexión pullup de las líneas D+ y D- por medio de una R=1K5

En cambio los dispositivos high-speed se identifican en principio como full-speed (mediante un pull-up en la línea D+), y durante el proceso de reset ejecutan un protocolo de bajo nivel (determinadas secuencias de señales eléctricas de niveles especiales) a través del cuál determinan si están conectados a un puerto fullspeed o high-speed. Si el puerto es high-speed, detectará y responderá al protocolo iniciado por el dispositivo. Sólo si el concentrador y el dispositivo ejecutan el protocolo, se establece una comunicación high-speed entre ellos.

Los dispositivos USB 1.x identifican su velocidad eléctricamente, mediante una resistencia de pull-up en la línea D+ (full-speed) o D- (low-speed).

High Speed

Prohibida l

a Rep

rodu

cción

CONEXIÓN

USB - SERIEPro

hibida la R

epro

ducc

ión

•MCP2200 convertidor USB-to-UART

•El dispositivo reduce la cantidad externa de componentes permitiendo un facil montaje.

•El MCP2200 también posee 256-bytes EEPROM.

•Posee 8 pines de uso general input / output.

•Cuatro de ellos pueden ser utilizados para visualizar el estado de comunicacion USB

MCP2200

3.0 to 5.5Operating Voltage Range (V)

8No. of GPIO

Tx 128 - Rx 128Tx/Rx Buffer Size (Bytes)

UARTMCU Interface

YesPHY

USB 2.0USB Compliant

Full SpeedUSB Speed

ValorNombre del parámetroPro

hibida la R

epro

ducc

ión

MCP2200�Soporta Full-Speed USB (12 Mb/s)

� Permite implementar protocolos CDC Device (communications and control). - Class 02hCDC: USB-to-UART communications and I/O control - Class 03hHID: I/O control, EEPROM access, and initial configuration

�Buffer 128 byte - 64 byte TX - 64 byte RX.

�compatibilidad Completa para asignaciones VID, PID y strings de descriptores.

�Driver y software soporta Bus Powered or self powered.

�Compatible para Virtual Com Port (VCP) - Windows XP and later)/Vista/7

�Utilidad para configuración inicial

�Soporta baud rates: 300 - 1000k (baud)

�Control de flujo por Hardware

�Opción de invertir la polaridad de los pines de la UART

�Ocho (8) pines de uso general

�Salidas para monitoreo de la actividad por medio de leds (TxLED y RxLED)

�Voltaje de funcionamiento: 3.0 - 5.5 (V)

�Entrada para oscilador: 12 MHz

Prohibida l

a Rep

rodu

cción

MCP2200

Prohibida l

a Rep

rodu

cción

El MCP2200 puede se accedido para comandos de lectura y escritura vía USB. No puede ser accedido y

controlado via la interface UART.

Interface UART

La interface UART del MCP2200 consiste en pines TX – RX y pines de control de flujo RTS/CTS.

Soporta varias velocidades.

Conectándose al MCP2200

Prohibida l

a Rep

rodu

cción

La configuración por default de la UART es: 19200, 8, N, 1.

El control de flujo por hardware utiliza los pines RTS y CTS como un handshake entre dos

dispositivos.

CONFIGURACION INICIAL

(esto puede ser modificado utilizando Microchip-suppliedconfiguration PC tool).

CONTROL DE FLUJO POR HARDWARE

Prohibida l

a Rep

rodu

cción

Detalle de la fuente interna

MCP2200 Ofrece varias formas de conectarce para cumplir con los niveles de señal USB

MCP2200 posee un regulador interno LDO utilizado para presentar los niveles D+/D- correctamente

Conexiones de alimentación

�Conexión interna del transceiver USB y el LDO en relación con la VDD.

�La salida del transiver USB por medio del LDO esta ligado a lal linea VUSB.

�Se requiere de un capacitor conectardo al pin VUSB si se necesita que el LDO

entregue los 3,3V necesarios por el transceiver.

Prohibida l

a Rep

rodu

cción

Capacitor Vbus max 10uF

Conexiones de alimentación

Prohibida l

a Rep

rodu

cción

Pin RxLED (IN Message)•‘Rx’ es respecto al USB host, es un indicador para mensajes entrantes.

•Pulsos de nivel bajo por periodos de tiempo configurable (~100 ms o ~200 ms), o invertido para cada estado para cada mensaje recivido por el Host USB.

•Permite a una aplicación contar mensajes o una indicacion visual del trafico USB

Pin TxLED (OUT Message)•‘Tx’ es respecto al host USB.

•Pin TxLED es un indicador para salida de mensajes USB.•Pulsos de nivel bajo por periodos de tiempo configurable (~100 ms o ~200 ms), o invertido para cada estado para cada

mensaje enviado por el Host USB

OsciladorDebe ser de 12 MHz para proveer la frecuencia necesaria para el modulo USB

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Software de configuración

Prohibida l

a Rep

rodu

cción

CIRCUITO

Prohibida l

a Rep

rodu

cción

USB a SERIE 18F14K50

Similitudes

MCP2200

Menor costo que el MCP2200Menor costo que el MCP2200

Prohibida l

a Rep

rodu

cción

VDD=3,3V => TX y RX 3,3vVDD=5v => TX y RX 5v

Prohibida l

a Rep

rodu

cción

Firmware

Compilar y cargar con un programador

Prohibida l

a Rep

rodu

cción

USB - SPI

Prohibida l

a Rep

rodu

cción

MCP2210

MCP2210 es un conversor maestro USB-a-SPI el cual permite una conectividad USB con aplicaciones que poseen interfase SPI

Prohibida l

a Rep

rodu

cción

CONEXIÓN USB CON PIC

Prohibida l

a Rep

rodu

cción

Tipos de conexiones

Existen tres tipos de clases de dispositivos USB:

• HID(Human Interfaz Device): teclados, ratones, pad´s para dibujo, joystics, etc.

• CDC (Comunication Divice Class) : específicos para comunicación bidireccional, (utilizado para hacer un puerto serial virtual).

• MSC (mass storage device class): manejo almacenamiento de información, como memorias USB, discos duros externos, etc.

•Resistencia Pull Up en D+ del conector USB (es una indicación para que el host se cargue al dispositivo USB cuando se enchufe).

•Conectar dos resistencias entre las líneas D+ y D- del conector y las patillas del micro.(proporcionan la correcta terminación para las líneas de datos USB).

•Dos condensadores de las líneas D+ y D- del microcontrolador a GND (suprimen las altas frecuencias y por lo tanto desacoplan las entradas).

•Dos bobinas, una de la línea GND del conector USB a la masa del circuito, y la otra la

conectamos a la línea Vbus del conector a la alimentación del circuito (proporcionan una función similar a los condensares descritos anteriormente, pero para las líneas de alimentación del conector USB).

MICROCONTROLADORES CON SOPORTE USB (conexión completa)

•Cada vez que se produce una transmisión o recepción de datos en el bus, se genera una

interrupción en el PIC ante la cual la rutina de atención debe responder gestionando todos los

aspectos de bajo nivel de la especificación USB. De esta manera para la aplicación principal

que ejecuta el microcontrolador el manejo del protocolo USB es transparente.

•El programa del microcontrolador se puede separar en tres fases bien diferenciadas en función

de la tarea que realiza cada una. La figura siguiente muestra el esquema de estas tres fases y

el orden de ejecución de cada una:

Conexión y arranque

Prohibida l

a Rep

rodu

cción

1ª Fase : UsbUsb Bus ResetBus Reset: cuando el dispositivo es conectado, el host lo detecta y provoca una interrupción de reset para que el dispositivo configure los registros y punteros necesarios y para que se

pueda proceder a la enumeración. En esta fase el programa debe habilitar y configurar en endpoint 0 para

recibir y contestar a transacciones de tipo Setup e inicializar todas las

variables que posteriormente se utilizarán. Esto se realiza dentro de la rutina de servicio de la interrupción

BusReset.

2ª Fase : Proceso de EnumeraciProceso de Enumeracióónn: esta fase se produce cuando el dispositivo es conectado al Bus y después de la fase de Bus Reset. El host debe reunir la información necesaria para que el sistema

identifique al dispositivo y configure el tipo de comunicación que se producirá entre ambos y encuentre al

driver que tiene que utilizar para establecer la comunicación. El proceso consiste primero, en asignar una

dirección al device y segundo, el host envía una serie de peticiones para que el dispositivo mande

información con el fin de establecer la comunicación.

La información que debe mandar el dispositivo se estructura en registros o descriptores que configuran al dispositivo y son transmitidos mediante transferencia de control y

siempre por el endpoint 0. Estos descriptores son los siguientes:

· Device descriptor : contiene información básica del dispositivo como puede ser número de serie, clase de dispositivo, etc.· Configuración descriptor: contiene información sobre las capacidades y funciones del dispositivo, tipo de alimentación de energía que soporta..· Interface descriptor: contiene información sobre el número de endpoints que soporta y el protocolo utilizado.· Class descriptor : determina la clase del dispositivo.· Endpoint descriptor: excepto para el endpoint 0, cada endpoint debe ser configurado. La configuración de cada endpoint consiste en el número de endpoint, dirección de sus comunicaciones (IN, OUT) y numero de bytes que transmite.

Con estos descriptores y otros del sistema operativo (ej. Windows), debe encontrar el driver que necesita para comunicarse con el dispositivo. Para localizar este driver,

Windows debe tener cargado un archivo especial de texto llamado INF que dice al sistema que driver debe utilizar.

3ª Fase. GestiGestióón del dispositivo y de las comunicacionesn del dispositivo y de las comunicaciones: fase que es la que realmente se centra en gestionar la funcionalidad para la que se ha diseñado el dispositivo.

¿En que consiste la Enumeración?

El Host es el encargado de detectar cualquier dispositivo que se conecta al bus. Cuando un dispositivo es detectado el Host necesita obtener información sobre el, a este proceso es al que se le llama enumeración. Esta información que necesita el Host se encuentra definida en el dispositivo en los llamados descriptores. Los descriptores son datos que se guardan en la memoria no volátil del PIC y contienen la siguiente información: El ID del vendedor (VID) y del producto (PID), consumo de corriente del dispositivo, tipo de transferencia que se va ha utilizar, endpoint utilizados, versión USB soportada, clase utilizada, etc.

El VID (Vendor ID) y el PIC (Product ID) son dos números de 16 bits representados en Hexadecimal, si utilizamos la clase CDC (Communications Device Class) de CCS para la comunicación USB estos valores los podemos modificar en el archivo "usb_desc_cdc.h" y según el sistema operativo instalado en el Host deberemos modificarlos también en el archivo .inf, pero esto lo veremos más adelante.

Realmente el modificar estos valores solo es útil si queremos distribuir nuestro producto comercialmente, en ese caso existe una organización llamada USB Implementers Forum que se encarga de proporcionarnos previo pago correspondiente (US$2,000) un VID valido para que nuestro dispositivo conviva sin problemas con el resto de dispositivos USB del mercado, además tendremos derecho a poner el logo USB en nuestro producto certificando de esta manera que ha pasado los controles pertinentes y cumple con el estándar USB. Todo esto es similar al proceso que se sigue a la hora de obtener una dirección MAC en una tarjeta de red.

Si esto no estuviera regulado tal y como está y cada dispositivo tuviera el VID y PID que quisiera, cuando coincidieran en un mismo sistema dos números iguales se presentaría un conflicto hardware y ambos dispositivos dejarían de funcionar.

Prohibida l

a Rep

rodu

cción

Que es un endpoint?

Endpoint son buffer de memoria RAM utilizados para el envío y recepción de datos o comandos de control durante una comunicación USB.

Cada endpoint puede ser de entrada o salida de datos o bidireccional, el endpoint 0 está reservado para comandos de control, el proceso de enumeración se realiza a través del endpoint número 0. Este concepto solo se aplica al dispositivo, en el host existen también buffer para el envío y recepción de datos pero no se les denomina con este nombre.

¿Que es una clase?

La especificación USB provee de propiedades y funciones que pueden ser utilizadas por los dispositivos que tengan características similares. Por ejemplo, un teclado y un ratón por sus características pertenecerán a la misma clase la llamada Human Interface Device (HID), pues bien si yo diseño el firmware de un dispositivo con las especificaciones que me exige esta clase podrébeneficiarme de esas propiedades y funciones comunes a la clase, una ventaja de utilizar esta clase por ejemplo es que no se necesita instalar ningún driver para el dispositivo ya que el sistema operativo utilizará uno genérico para todos.

La especificación USB provee de muchas clases para facilitar la vida al desarrollador de dispositivos.

Prohibida l

a Rep

rodu

cción

Las clases más utilizadas con Microcontroladores son:

HID (Human HID (Human InterfaceInterface DeviceDevice):): dispositivos que utilizan esta clase son: teclados, ratones, pantallas táctiles, joystick, etc. Velocidad low-speed (64 KB/s de velocidad máxima), tipos de transferencias soportadas: de control y de Interrupción. Una característica interesante al utilizar esta clase es que no se necesita instalar un driver especifico en el Sistema Operativo, se utiliza uno estándar que ya está incluido en el sistema. En el S.OWindows la aplicación de escritorio accede al dispositivo con ayuda de las APIS win32.

MSD (MSD (MassMass StorageStorage DeviceDevice ClassClass):): dispositivos de almacenamiento masivo como discos duros, memorias flash, cámaras digitales, dispositivos ópticos externos como lectores y grabadoras de CD y DVD, etc. Esta clase se puede utilizar solo en dispositivos que soporten velocidades Full y High Speed. El tipo de transferencias utilizadas es Bulk o una combinación formada por transferencias del tipo Control, Bulk y Interrupt. Microchip tiene notas de aplicación sobre esta clase como la AN1003, CCS también implementa ejemplos sobre esta clase. No se necesita la instalación de un driver específico, se utilizan drivers genéricos instalados ya en los Sistemas Operativos, en Windows se utiliza el driver llamado usbstor.sys ubicado en :\Windows\Sistem32\drivers.

CDC (CDC (CommunicationsCommunications DeviceDevice ClassClass):): Un ejemplo son los Modems. La velocidad máxima al utilizar esta clase será de 80 kBytes/s y el tipo de transferencias soportadas son del tipo interrupción y Bulk. Utiliza también driver estándar incluidos ya en el sistema operativo, según el sistema operativo utilizado precisará o no de la instalación del archivo .INF, cuando utilizamos esta clase en el PC nos creará un puerto serie virtual y la comunicación entre el dispositivo y la aplicación de escritorio se hará a través de él, al igual que se haría con un puerto serie físico, esto supone una gran ventaja a la hora de diseñar la aplicación de escritorio, ya que cualquier IDE de programación sea del lenguaje que sea, dispone de un componente o librería que permite el acceso al puerto serie fácilmente.

Existe una clase genérica llamada "Custom Class" que se utiliza cuando el dispositivo no se asemeja a las características de ninguno de los miembros pertenecientes a otras clases. un ejemplo de dispositivo que utiliza esta clase es el ICD2 o ICD3 de Microchip.

Prohibida l

a Rep

rodu

cción

Si el firware de nuestro dispositivo no cumple con las especificaciones de alguna de las clases que se beneficia del uso de drivers genéricos instalados ya en el sistema operativo no queda otra que diseñar un driver para nuestro dispositivo, sino el dispositivo no será reconocido por el PC, diseñar un driver desde cero es muy complicado ya que se requiere profundos conocimientos tanto de la arquitectura del PC como del Sistema Operativo que tenga instalado

Prohibida l

a Rep

rodu

cción

USB BEGINNINGPro

hibida la R

epro

ducc

ión

Desarrollo del programa para el microcontrolador 18F14K50

�Basado en el uso de la clase CDC,

�Utilizamos el compilador de CCS versión 4.104

�Importantes a tener en cuenta son los fusibles (CLAVE EN EL FUNCIONAMIENTO DEL PROYECTO)

�Fuses: velocidad de trabajo del PIC. Para usar la interfaz USB, el modulo USB necesita48 MHz, para conseguir dicha frecuencia se dispone de un multiplicador con pre-escalery post-escaler. A la entrada del multiplicador tenemos que tener una frecuencia fija de 4 MHz.

Prohibida l

a Rep

rodu

cción

En la figura de abajo se muestra como configurar el pre-escaler del PLL cuando en nuestro circuito tenemos un cristal de 20 MHz.

El pre-escaler divide los 20 MHz por 5 para obtener los 4MHz requeridos a la entrada del PLL, este a su vez produce 96 MHz en su salida los cuales se dividen por un lado al módulo USB, dividiendo previamente la frecuencia por 2 para obtener los 48 Mz a la entrada del módulo por el otro lado alimenta el post-divisor del PLL, para que podamos elegir la frecuencia de trabajo del núcleo del micro, en este caso divide por tres por lo que tendremos 32 MHz para alimentar al "core" del PIC.

Prohibida l

a Rep

rodu

cción

Para utilizar la clase CDC (Communications Device Class), las funciones que se utilizan para enviar y recibir datos por el bus USB son:

usb_cdc_kbhit(): Es una función que retorna el valor booleano TRUE si hay uno o mas caracteres esperando en el buffer de recepción.

usb_cdc_getc(): Obtiene el carácter recibido en el Buffer de recepción.

usb_cdc_putc(char c): Coloca el carácter que recibe como parámetro en el buffer de transmisión para ser enviado.

El resto delas funciones e puede encontrar en el archivo de cabecera usb_cdc.h.

La comunicación USB se inicializa por medio de la función: usb_init_cs() al principio de la función main().

Tener en cuenta es que para que la comunicación USB se mantenga debe ser realimentada constantemente, para ello hay que llamar periódicamente a la función usb_task(), por lo que nuestro programa tendrá que tener un bucle infinito principal donde deberemos incluir la llamada a esta función.

Prohibida l

a Rep

rodu

cción

1.///////// Opciones de configuración ///////////////////////////////////

2.#define USB_CONFIG_PID 0x0033

3.#define USB_CONFIG_VID 0x0461

4.#define USB_CONFIG_BUS_POWER 100 //100mA (rango de 0..500)

5.#define USB_CONFIG_VERSION 0x0100 //01.00 //range is 00.00 to 99.99

6.//////// Fin de la configuración //////////////////////////////////////////

En el archivo el usb_desc_cdc.h se guarda la información perteneciente a los descriptores del dispositivo. Ese archivo podemos editarlo y modificar los descriptores perteneciente al VID, PID, consumo del dispositivo y versión del código.

Si modificamos el VID y el PID tendremos que modificarlo también en el archivo .INF

Prohibida l

a Rep

rodu

cción

En el archivo .INF también hay un campo llamado [Strings] que podemos editar para personalizar la informaciónque presentará el Sistema Operativo sobre nuestro dispositivo.

¿¿QueQue diferenciadiferencia hay hay entreentre unasunas cadenascadenas y y otrasotras??

Las que se encuentran en el archivo de los descriptores se mostrarán solo la primera vez que se conecta el dispositivo a la PC. En Windows esa información aparecerá en el sector informativo que sale a la derecha en la barra de herramientas(donde esta la hora), cuando el sistema detecta un nuevo hardware.

Prohibida l

a Rep

rodu

cción

Si utilizamos la clase CDC el sistema operativo utiliza drivers genéricos pre-instalados en el Sistema Operativo, pero para que Windows sepa que driver tiene que asignarle al dispositivo precisa que se instale el archivo .INF.

El proceso de instalación es similar como si fuera un driver completo, es decir:

•La primera vez que enchufemos el dispositivo a la PC el plug and play nos detectará un hardware nuevo y nos saldrá el asistente para la instalación del nuevo hardware encontrado.

•Cuando nos aparezca la ventana preguntándonos si queremos que Windows se conecte a Windows Update para buscar el Software seleccionaremos la opción: No por el momento.

•Luego, donde nos pregunta ¿que desea que haga el asistente? marcaremos la opción de: Instalar desde una lista o ubicación específica (avanzado).

•En la siguiente ventana nos aparecerá las opciones de búsqueda en la que seleccionaremos la opción Buscar el controlador más adecuado en estas ubicaciones y marcaremos la casilla Incluir esta ubicación en la búsqueda, pulsando sobre examinar seleccionaremos la carpeta donde se encuentra nuestro archivo .INF.

•Si todo ha ido bien comenzará el proceso de instalación.

•Una vez instalado si abrimos el administrador de dispositivos (inicio -->ejecutar-->devmgmt.msc) veremos que se ha creado un puerto serie virtual.

Instalación de los drivers en el PC

Prohibida l

a Rep

rodu

cción

Como ver que driver que le ha asignado Windows

Prohibida l

a Rep

rodu

cción

Placa de desarrollo USB BEGINING

Características:

PIC 18F14K502 Entradas Analógicas 1Entrada LDR2 Entradas Digitales3 Salidas LEDsConector ICSPBootloader USBConector USBTodos los pines disponibles al usuarioAlimentacion 5v o 3,3v

Prohibida l

a Rep

rodu

cción

El objetico es ofrecer una guía rápida para implementar una conexión vía USB de un PIC18F con un equipo Windows XP o Windows 7, funcionando bajo un programacompilado con Visual Basic.

Paso 1: Crear el archivo .INF (Para esto utilizare una herramienta aportada por Palitroquez)

Prohibida l

a Rep

rodu

cción

También es posible editar a mano el archivo inf que viene de ejemplo en el CCS

; Windows 2000 and XP setup File for CCS CDC demo; see examples ex_usb_serial.c and ex_usb_serial2.c

[Version]Signature="$Windows NT$"Class=PortsClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}Provider=%CCS%LayoutFile=layout.inf

[Manufacturer]%CCS%=CCS

[CCS]%CCS_CDC%=Reader, USB\VID_0461&PID_0033

[Reader_Install.NTx86];Windows2000

[DestinationDirs]DefaultDestDir=12Reader.NT.Copy=12

[Reader.NT]CopyFiles=Reader.NT.CopyAddReg=Reader.NT.AddReg

cdc_NTXP2.inf

[Reader.NT.Copy]usbser.sys

[Reader.NT.AddReg]HKR,,DevLoader,,*ntkernHKR,,NTMPDriver,,usbser.sysHKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[Reader.NT.Services]AddService = usbser, 0x00000002, Service_Inst

[Service_Inst]DisplayName = %Serial.SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVERStartType = 3 ; SERVICE_DEMAND_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %12%\usbser.sysLoadOrderGroup = Base

[Strings]CCS = "Custom Computer Services, Inc."CCS_CDC = "USB to SERIE Taglia"Serial.SvcDesc = "USB Serial emulation driver"

Prohibida l

a Rep

rodu

cción

Paso 2: Editar el archivo usb_desc_cdc.h según las necesidades y configuracion del archivo INF

///////// config options, although it's best to leave alone for this demo /////#define USB_CONFIG_PID 0x0033#define USB_CONFIG_VID 0x0461#define USB_CONFIG_BUS_POWER 100 //100mA (range is 0..500)#define USB_CONFIG_VERSION 0x0100 //01.00 //range is 00.00 to 99.99//////// end config ///////////////////////////////////////////////////////////

Prohibida l

a Rep

rodu

cción

PASO 3: Crear el proyecto en CCS y definir los FUSES

El secreto es configurar muy bien los fuses del Clock

Consiguiendo 4 Mhz para los 48 Mhz necesarios en los PIC's con USB 2.0

En los datasheet está TODO, absolutamente todo.

Iremos del caso mas complejo al mas simple, comenzaremos con un ejemplo del 18F4550 para luego configurar el 18F14K50

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

OSC1 y OSC2 se conectan al cristal: 4 Mhz, 8 Mhz, 12 Mhz, 16 Mhz, 20 Mhz, 24 Mhz, 40 Mhz ó 48 Mhz, son los cristales compatibles con lo que sigue a continuación.

Este cristal genera la frecuencia de 48 Mhz necesaria para el USB 2.0 y para el Clock del PIC, que pueden ser la misma o no, según la configuración queadoptemos.

La salida del Smicht Trigger del Primary Oscillator salen tres líneas en paralelo que van a módulos distintos con distintas posibilidades.

La primera línea, la superior, va directamente al switch USBDIV que si está a cero indica que la frecuencia base original del cristal es directamente inyectada al USB, si pasa el switch FSEN que elige entre todo el sistema directo/PLL o el Primary Clock del CPU. Esta Opción de inyectar directamente la frecuencia del cristal es posible si usamos un Cristal de 48 Mhz que es lo que necesitamos para el USB.

Cualquier otro cristal debe ser tratado para conseguir los 48 Mhz necesarios.

El módulo USB Clock Source tiene a su entrada un PLL Prescaler(un divisor de frecuencia). En cada una de sus salidas vamos a tener FOSC dividida por 1, 2, 3, 4, 5, 6, 10 ó 12. Y mediante PLLDIV que no es mas que un Multiplexor vamos a seleccionar la que deseamos usar y lograr 4Mhz de salida.

Así si nuestro cristal es de 12 Mhz y en PLLDIV colocamos un 010 estaremos dividiendo por 3 el valor de FOSC con lo que tendremos 4 Mhz a la salida del MUX. Si por el contrario el cristal es de 20 Mhz y en PLLDIV colocamos un 100 entonces dividiremos por 5 FOSC con lo que tendremos también 4 Mhz a la salida del MUX.

Esta salida del MUX es lo que utilizamos para inyectársela al PLL de 96 Mhz. Si le metemos 4 Mhz él genera 96 Mhz. Es esta capacidad de pasar de 4 Mhz a 96 Mhz la que nos da la posibilidad de usar un montón de cristales distintos.

Como 96 Mhz es el doble de lo que nos hace falta para el USB que son 48 Mhz. Asi que inmediatamente después tenemos que dividir por 2 que es el segundocamino por el que llegamos a USBDIV y en este caso le pondremos un 1 para usar la señal proveniente del PLL.

La señal también se conecta a un Postscaler, otro divisor, en este caso por 2, 3, 4 ó 6 y cuyas señales van al CPUDIV. O sea que podemos generar una señal de reloj para nuestro PIC, no para el USB sino para la velocidad de ejecución de nuestro programa tomándola del PLL y que puede ser de 16 Mhz, 24 Mhz, 32 Mhz ó48 Mhz.

Tambien la señal original va al Oscilator Postcaler, otro divisor más, que de forma directa, sin pasar por el módulo PLL nos divide la frecuencia original del cristal por 1, 2, 3 ó 4 y que también va a al CPUDIV pero desde otro origen. Otra fuente de frecuencias para hacer correr el programa.

Cual de ambos modulos CPUDIV vamos a utilizar, lo seleccionamos con el switch FOSC3:FOSC0 que es de donde sacaremos la frecuencia de ejecución de programas.

Por último también tenemos disponible una entrada proveniente del Primary Clock y que dividida por 4 llega también a FSEN y podemos utilizarla en lugar de la que le llega desde el canal directo/PLL

Prohibida l

a Rep

rodu

cción

Camino propuesto para configurar el clock de USB y CPU

Prohibida l

a Rep

rodu

cción

Para nuestro PIC será:

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Elegimos el PIC “PIC18F14K50”

Oscilador “HS”

4 X PLL Enable bit deberá ser configurado en “Oscillator Multiplied by 3” – Nuestro cristal es de 12Mhz por lo que si deseamos utilizar el PLL debemos dividir por 3.

Configuramos la frecuencia del Oscillator Frequency [MHz] en “48.000000”

Click “OK”

18F14K50PIC PIC WizardWizard

Prohibida l

a Rep

rodu

cción

usb_desc_cdc.h

usb_cdc.hAl crear el proyecto se debe incluir estos archivos

#include “USB_Begining.h"#include "usb_cdc.h" // Descripción de funciones del USB.#include "usb_desc_cdc.h" // Descriptores del dispositivo USB.

Ver ejemplo control

Ver ejemplo usb to serie

PASO 4: escribimos nuestro código en el archivo .c

Prohibida l

a Rep

rodu

cción

PASO 6: Compilar y programar el PIC

Prohibida l

a Rep

rodu

cción

Conectamos nuestra placa y nos pedira el windows que instalemos los drivers (.inf)

PASO 7 : Instalacion del driverWindows XP

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Instalacion del driver Windows 7

No avisa que hay que instalar el driver, hay que ir a la administración e instalarlo

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

FIN

Prohibida l

a Rep

rodu

cción

Para el 4550

Prohibida l

a Rep

rodu

cción

Prohibida l

a Rep

rodu

cción

Para el 2550

Prohibida l

a Rep

rodu

cción

Trademarks

� The Microchip name and logo, the Microchip logo, dsPIC, KeeLoq, KeeLoq logo, MPLAB, PIC, PICmicro, PICSTART, PIC32 logo, rfPIC and UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.

� FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MXDEV, MXLAB, SEEVAL and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A.

� Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB, MPLINK, mTouch, Octopus, Omniscient Code Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit, PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance, TSHARC, UniWinDriver, WiperLock and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.

� SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.

� All other trademarks mentioned herein are property of their respective companies.

� © 2012, Microchip Technology Incorporated, All Rights Reserved.

Prohibida l

a Rep

rodu

cción