Como funciona o USB?
A
interface USB usa cabos formados por quatro fios. Dois dos fios são usados para
transferir e receber informação simultaneamente e os restantes são energia e terra.
O dispositivo USB poderá ser auto-alimentado ou ter uma fonte de energia
externa.
Cabo USB
Antes de
continuar é conveniente ficar a par dos diferentes tipos de informação que o
USB pode transmitir:
·
Control
·
Interrupt
·
Bulk
·
Isochronous
As transferências
de control são usadas para configurar, controlar e verificar o estado do
dispositivo USB. Um pedido é enviado do dispositivo para o computador (host) e a transferência de informação é
feita através dos canais apropriados. Mais tarde, o indicador de estado do
dispositivo é retornado para o host.
O canal usado para este tipo de transferência poderá ser bidireccional.
Adicionalmente, um dispositivo apenas lida com um pedido de cada vez. O host aguardará a resposta à informação
enviada antes de enviar novos pedidos.
As
transferências Isochronous são transferências cuja precisão da
informação enviada não é muito importante. O USB trata este tipo de
transferências de uma forma especial, dando-lhe maior prioridade para garantir
uma taxa de transmissão constante com a largura de banda necessária. Para
assegurar que o USB tem tempo para lidar com o fluxo máximo de informação (1023
bytes) para cada frame, uma verificação é feita durante a configuração
inicial e os canais apenas serão configurados se esta verificação for concluída
com sucesso. Este método de transferência usa canais unidireccionais e não tem
procedimentos para lidar com erros. Embora um erro possa ser assinalado na
resposta a um pedido, o canal não será fechado e o software é que deverá decidir
o que fazer.
As
transferências Interrupt são usadas
para pequenas e ocasionais transferências de dados que requerem prioridade
sobre outros pedidos. Tal como nas transferências Isochronous a configuração dos canais é garantida, quer o sistema
consiga ou não lidar com o tamanho máximo das frames dentro do tempo disponível. Estas transferências têm a
restrição de não poderem usar mais de 90% da frame, podendo ainda
impedir outras transferências de ocorrer. O intervalo entre pedidos é
configurado inicialmente, e após cada pedido o dispositivo USB retorna um sinal
NACK (negative acknowledge) se não
existir informação para enviar. Este tipo de canal é, no seu propósito,
semelhante aos canais IRQ dos periféricos tradicionais.
As
transferências Bulk, como o nome
sugere, têm o propósito de transmitir grandes quantidades de informação. Este
tipo de transferência tem a prioridade mais baixa. Os canais que usam este
método apenas podem transmitir quando existe suficiente largura de banda. Isto
significa que um host carregado com
muitos dispositivos USB pode ter transferências Bulk relativamente lentas,
comparando com um que tenha menos dispositivos. Este tipo de transferência
seria útil para a troca de informação entre um scanner e um host.
Existe uma
classe especial de dispositivos USB conhecidos como de baixa velocidade (como
por exemplo os joysticks). Estes são semelhantes aos de alta velocidade mas
contêm algumas restrições:
- O
tamanho máximo dos pacotes é de 8 bytes
- Não
podem utilizar transferências Isochronous ou Bulk
Esta simplificação torna este tipo de
dispositivos mais baratos e mais fácil de implementar.