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
Download

Microcontroladores e Desenvolvimento de Aplicações