USB Microcontroladores e Desenvolvimento de Aplicações Topologia ` USB HOST ` um por barramento USB ` Designa-se controlador HOST ` USB DEVICE ` ` ` ` Funciona em modo SLAVE HUB também são considerados DEVICES Podem ser ligados até 127 Cada dispositivo tem um endereço único (1 a 127) Descritores ` Enumeração ` Host solicita ao dispositivo descritores para identificar o dispositivo e para que o S.O: carregue os drivers correctos ` Implementação do protocolo é uma tarefa complexa da parte do dispositivo ` Não há uma única possibilidade (várias) Camadas USB - Dispositivo Esta camada trata das mensagens do dispositivo propriamente dito. Por exemplo num teclado é o scan code Esta camada trata das mensagens USB especificas, que são transferidas entre o HOST e os ENDPOINTS Especificações eléctricas do barramento. Detecção de dispostivos . Norma NRZI. Inicialização - Enumeração ` Um dispositivo USB passa por diferentes estados até que esteja configurado, ou seja pronto para funcionar Esta comunicação é efectuada com o ENDPOINT 0. Mesmo após o endereçamento (1 a 127), a comunicação continua via ENDPOINT0 Só após o estado de configurado. É que a comunicação se faz via os ENDPOINTS configurados Enumeração ` When a USB device is attached to the USB, the host goes to a process to identify and manage the device. This process is called enumeration. The major steps for enumeration are as follows: ` ` ` ` ` ` 1. The hub to which the device is attached informs hot about the new device. 2. The host reads the device descriptor to determine the device’ s buffer size. 3. The host assigns a unique address to the device 4. The host gets the configuration data from the device 5. Based on configuration information the host assigns a configuration value to the device. At the device removal the hub informs host about the event and the host updates its device information to reflect the change. Dispositivo - Firmware ` ` ` ` Não devemos esquecer que a função USB é apenas para transferir dados entre o dispositivo e o PC Que desenvolve o dispositivo não deverá gastar muito com o USB De modo a “esconder” a complexidade da comunicação e a simplificar e minimizar o tempo de desenvolvimento os fabricantes fornecem livrarias de software (templates) para implementar a comunicação USB Para simplificar o desenvolvimento do software do dipositivo (A Exemplo – ATMEL AT90USBxxx Aplicação exemplo Ambiente de Desenvolvimento PC (HOST) com 2 dispositivos Embebido (HOST) com 1 dispositivos USB Terminologia LADO HOST LADO DISPOSITIVO TRANSACÇÃO OUT … … IN Lado Dispositivo ` ` Saber as necessidades de transferência entre o PC e os Dispositivos Exemplos: ` ` ` Camara Vídeo Æ elevadas e com periodicidade - Isócrona Discos estado sólido Æ elevada sem periodicidade - Volume Aquisição de dados Æ baixa sem periodicidades - Interrupção Um dos factores de escolha do controlador USB tem a ver com: • numero de endpoints • tipo de transacção suportada Lado Dispositivo ` ` Para o desenvolvimento da aplicação no controlador, os fabricantes disponibilizam templates para a comunicação USB. Estas templates devem ser integradas no projecto Lado do PC ` ` ` Para o desenvolvimento da aplicação, é preciso saber qual a classe do dispositivo. Existem classes padrão – com Device drives nativos do sistema operativo, por exemplo HID, Mass Storage, … Existe sempre a possibilidade de se construir um drive proprietário. PONTES USB-UART PONTES USB-UART ` ` ` ` Simplicidade da solução Do lado dispositivo liga em UART Do Lado do PC, a aplicação vê o dispositivo como uma porta série (Fabricantes disponibilizam driver) Desvantagem: A taxa de transferência é baixa, limitada à velocidade da porta série. FTDI Devices - MMR232R Os módulos MM232R, integram uma E2PROM para VID, PID, numero de série, e descritores de strings MICONTROLADORES COM PORTA USB ` Fabricantes disponibilizam os Microcontroladores ` Lado do Dispositivo – disponibilizam Templates para a implementação do firmware da comunicação USB ` Lado PC- Disponibilizam API (Application Program Interface) na forma de Livraria Dinâmica (DLL) USBxpress Silicon Labs CLASSE HID ` ` Este é um mal menor. Muitos fabricante remetem o desenvolvimento para a classe HID, nativa dos sistemas operativos. RATO: Classe HID Connection Status Device connected Current Configuration 1 Speed Low Device Address 1 Number Of Open Pipes 1 Device Descriptor USB-PS/2 Optical Mouse Offset Field Size Value Description 0 bLength 1 12h 1 bDescriptorType 1 01h Device 2 bcdUSB 2 4 bDeviceClass 1 00h Class information in the Interface Descriptors 5 bDeviceSubClass 1 00h 6 bDeviceProtocol 1 00h 7 bMaxPacketSize0 1 08h 8 bytes 8 idVendor 2 046Dh Logitech, Inc. 10 idProduct 2 C01Bh 12 bcdDevice 2 1800h 18.00 14 iManufacturer 1 01h "Logitech" 15 iProduct 1 02h "USB-PS/2 Optical Mouse" 16 iSerialNumber 1 00h 17 bNumConfigurations 1 01h 0200h USB Spec 2.0 Configuration Descriptor 1 Bus Powered, 98 mA Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 02h Configuration 2 wTotalLength 2 0022h 4 bNumInterfaces 1 01h 5 bConfigurationValue 1 01h 6 iConfiguration 1 00h 7 bmAttributes 1 A0h Bus Powered, Remote Wakeup 4..0: Reserved ...00000 5: Remote Wakeup ..1..... Yes 6: Self Powered .0...... No, Bus Powered 7: Reserved (set to one) (bus-powered for 1.0) 1....... 8 bMaxPower 1 31h 98 mA Interface Descriptor 0/0 Human Interface Device, 1 Endpoint Offset Field Size Value Description 0 bLength 1 09h 1 bDescriptorType 1 04h Interface 2 bInterfaceNumber 1 00h 3 bAlternateSetting 1 00h 4 bNumEndpoints 1 01h 5 bInterfaceClass 1 03h Human Interface Device 6 bInterfaceSubClass 1 01h Boot Interface 7 bInterfaceProtocol 1 02h Mouse 8 iInterface 1 00h Endpoint Descriptor 81 1 In, Interrupt, 10 ms Offset Field Size Value Description 0 bLength 1 07h 1 bDescriptorType 1 05h Endpoint 2 bEndpointAddress 1 81h 1 In 3 bmAttributes 1 03h Interrupt 1..0: Transfer Type ......11 7..2: Reserved 000000.. 4 wMaxPacketSize 2 6 bInterval 1 Interrupt 0005h 5 bytes 0Ah 10 ms Exemplo: RATO HID HOSTÆMOUSE: Pede dados ao rato (IN packet) MOUSEÆHOST:Resposta ao pacote IN, rato envia dados 1º byte – botão do rato 2º byte – movimento X 3º byte – movimento Y