DISEÑO DE UNA APLICACIÓN USB www.edudevices.com.ar Conocimientos de base Programación de microcontroladores ( ensamblador y C ). Conceptos básicos de USB. Programación visual bajo Windows. ¿Qué es USB? Host Dispositivo Topología Velocidades Low speed: 1,5Mb/s. Mouse Full speed: 12Mb/s. Audio. High speed: 480Mb/s. Video. Transferencias Isócronas. Bulk. Interrupt. Control. EndPoints Son canales de comunicación entre el host y el dispositivo. OUT IN La visión del usuario final Host controller Función del Device Driver Función del Device Driver Aislar a la aplicación de PC de los detalles hardware. Provee APIs. Enumeración Es una transferencia de información que se produce al conectar por primera vez un dispositivo. VID, PID y Rev Vendor ID. VID. Identifica al fabricante. Ej: 0x15A2 Product ID. PID. Identifica al producto. Ej: 0x0050 Rev: versión del dispositivo. Ej: 0x0100 Archivo INF Con este archivo la computadora puede encontrar el Device Driver. New Hardware Found Wizard GUID Es el Global Unique IDentifier. Lo encontramos en el archivo INF. Lo utiliza el software de aplicación para acceder al dispositivo USB. ¿Cómo se implementa una aplicación USB? Chips USB Implementación Complejidad Libertad para modificar HACER EL CONTROLADOR USB DESDE CERO USAR UN MCU CON MÓDULO USB USAR UN CONVERTIDOR USB/COM Altísima Total Media o baja Amplia Muy baja Muy limitada El microcontrolador MC9S08JM60 Es un MCU de 8 bits. Se puede programar con el USBMULTILINK de P&E. Se puede programar con el RS-POD. Tiene un módulo USB full speed. Hasta 16 EndPoints disponibles. Plaqueta DEMO 9S08JM60 64 pines disponibles. Tiene un conector mini-USB. Conector de programación integrado. Alimentación USB o externa. Características del firmware ejemplo Resuelve la enumeración. VID: 0x15A2. ( Freescale ) PID: 0x0050. ( demo Freescale ) Rev: 0x0100 Manufacturer Name: Samuel Inc Device Name: Super Device Class: Vendor Specific Class Name: Samuel Devices Utiliza 4 endpoints. Endpoints del firmware Endpoint Endpoint Endpoint Endpoint 1: 2: 3: 4: Interrupt OUT Interrupt IN Bulk OUT Bulk IN Rutina básica USB for( ; ;) { Check_USBBus_Status(); } Transmitir por un Endpoint Endpoint_IN(numero de endpoint, bytes a transmitir); Driver WinUSB Es parte de Windows. Nos provee APIs para acceder a los dispositivos USB. El archivo INF debe indicar que el driver es WINUSB. No admite transferencias Isócronas. Abrir una conexión USB JM60.OpenConnection(); Disparar lectura de un EndPoint Interrupt JM60.StartReadingInterruptEndPoint(endpoint, bytes); Detener la lectura de un EndPoint Interrupt JM60.StopReadingInterruptEndPoint(); Lectura del EndPoint JM60.ReadInterruptEndPoint(numero de endpoint, bytes a leer);