USB, Firewire e DVI

USB, Firewire e DVI

USB

O conector externo mais comum é o bom e velho USB, que conhecemos bem. O que torna o USB tão popular é a sua flexibilidade; além de ser usado para a conexão de todo o tipo de dispositivos, ele fornece uma pequena quantidade de energia, permitindo que os conectores USB sejam usados também por carregadores, luzes, ventiladores, aquecedores de chícaras de café, etc. Se duvida, veja esses dois exemplos:
USB-Firewire-DVI_html_10932edd

USB-Firewire-DVI_html_53336eee
No USB 1.x, as portas transmitem a apenas 12 megabits, o que é pouco para HDs, pendrives, drives de CD, placas wireless e outros periféricos rápidos. Mas, no USB 2.0, o padrão atual, a velocidade foi ampliada para 480 megabits, suficiente até mesmo para os HDs mais rápidos.

Existem quatro tipos de conectores USB, o USB tipo A, que é o mais comum, usado por pendrives e topo tipo de dispositivo conectado ao PC, o USB tipo B, que é o conector “quadrado” usado em impressoras e outros periféricos, além do USB mini 5P e o USB mini 4P, dois formatos menores, que são utilizados por câmeras, mp3 players, palmtops e outros gadgets.
USB-Firewire-DVI_html_72638a9f
Os quatro tipos utilizam a mesma pinagem, o único diferencial é mesmo o formato físico. Existem ainda alguns formatos de conectores proprietários, geralmente versões levemente modificadas de um destes quatro formatos. Por serem intercompatíveis, é relativamente fácil encontrar adaptadores diversos para permitir encaixar cabos com conectores de formatos diferentes:
USB-Firewire-DVI_html_67a5b903
Existem ainda adaptadores USB para portas seriais, portas paralelas, rede (com um conector RJ45) e até mesmo para saídas VGA, mas eles incluem circuitos adicionais e dependem da instalação de drivers para funcionar.
USB-Firewire-DVI_html_m5b6972a5
O USB é um barramento serial, por isso os conectores possuem apenas 4 contatos, sendo dois para a transmissão dos dados (um para enviar, outro para receber) e os outros dois para a transmissão de eletricidade.

Os dois pinos para a transmissão de dados são os dois mais centrais, enquanto os para energia são os dois externos. Olhando um conector USB com os contatos virados para baixo, o pino da direita é o positivo, enquanto o da esquerda é o terra. Dentro do cabo, o fio vermelho é o positivo, o preto é o terra, enquanto o verde e o branco são os para transmissão de dados:
USB-Firewire-DVI_html_4b3de8bc
Esta simplicidade explica a existência de tantas bugigangas que podem ser ligadas às portas USB. Você pode descartar os pinos de dados e usar a eletricidade oferecida pelo conector para alimentar qualquer dispositivo que consuma até 5 watts de energia (o padrão oficial fala em 2.5 watts, mas os fabricantes optam por oferecer 5 watts para manter uma boa margem de tolerância). Pode ser desde um carregador para celular, até um ventilador em miniatura. O inverso também é possível, ou seja, um conector USB fêmea, ligado a uma bateria, que sirva como fonte de energia para seu iPod, palmtop, ou outro dispositivo carregado através da porta USB. A maioria dos projetos envolve usar uma fonte de energia qualquer, que forneça 5v ou mais, e um resistor para reduzir a tensão ao valor apropriado. Você pode encontrar vários projetos no:
http://home.speedfactory.net/tcashin/ipodbattery.htm

Este é o meu “carregador de emergência”, que uso como carregador e bateria externa para o meu Treo. Ele utiliza 4 pilhas recarregáveis como fonte de energia e um diodo, que evita o refluxo, ou seja, evita que a bateria do Treo acabe recarregando as pilhas quando elas é que ficam com pouca carga. As pilhas recarregáveis trabalham com uma tensão nominal de 1.2v, mas quando completamente carregadas, oferecem em torno de 1.4v, suficiente para carregar dispositivos USB:
USB-Firewire-DVI_html_7904949a
Com uma variedade tão grande de periféricos USB, as 4 portas traseiras da placa mãe acabam nunca sendo suficientes. Os fabricantes passaram então a incorporar portas USB adicionais através de headers disponíveis na placa mãe. Estes headers podem ser ligados às portas frontais do gabinete, ou a conectores adicionais instalados na parte traseira.

O maior problema é que os conectores frontais do gabinete geralmente utilizam conectores separados para cada um dos fios, de forma que você precisa se orientar usando o diagrama no manual da placa para conectá-los corretamente. O fio vermelho é o +5V, o preto é o GND, o verde é o USB+ (ou D+) e o branco o USB- (ou D-):
USB-Firewire-DVI_html_m3d0a8f47

USB-Firewire-DVI_html_74361d72
Temos ainda a possibilidade de usar hubs USB para conectar vários dispositivos à mesma porta. Em teoria, cada porta USB permite a conexão de até 127 dispositivos, de forma que você pode até mesmo ligar um hub USB no outro. O maior problema é que tanto a banda, quanto a energia fornecida pela porta são compartilhadas entre todos os periféricos ligados ao hub, de forma que dispositivos de mais alto consumo, como mouses ópticos e HDs externos (do tipo de usa a energia da porta USB, ao invés de uma fonte própria) podem não funcionar, dependendo de quais outros dispositivos estejam ligados ao hub.

A solução neste caso é comprar hub com fonte externa (também chamados de powered hub). Eles possuem uma fonte própria de energia, por isso não utilizam a energia fornecida pela porta e suportam a conexão de vários periféricos “gulosos” simultaneamente.
USB-Firewire-DVI_html_11ca2f93

No USB, os 12 ou 480 megabits de banda não são compartilhados entre as portas; cada uma equivale a um barramento próprio, independente dos demais. O compartilhamento ocorre apenas quando vários dispositivos são plugados na mesma porta, usando um hub.

Algumas combinações podem ser um pouco problemáticas, já que temos tanto dispositivos que transmitem grandes quantidades de dados (um HD externo, por exemplo), quanto dispositivos que transmitem pequenas quantidades, mas precisam se urgência, como o teclado e o mouse. Você não gostaria que o mouse ficasse com as respostas lentas ao salvar um grande arquivo no HD externo, por exemplo.

Prevendo isso, o USB suporta três modos de operação distintos, chamados de Interrupt (interrupção), Bulk (grande volume) e Isochronous (isocrônico).

O modo de interrupção é um modo de alta prioridade, destinado a teclados, mouses e outros dispositivos de entrada. O controlador reserva 10% da banda disponível para eles, mantendo sempre um canal descongestionado.

O modo isocrônico é destinado a dispositivos que precisam transmitir dados via streaming, como por exemplo caixas de som e headsets USB. Eles transmitem uma quantidade relativamente pequena de dados, mas também precisam de uma certa prioridade.

Finalmente, temos as transferências em modo bulk, onde temos grandes pacotes de dados, transmitidos com baixa prioridade (como no caso do HD externo). Como os canais para os outros dois modos são reservados primeiro, as grandes transferências podem ser feitas utilizando a banda disponível, sem atrapalhar os outros dispositivos.

Esta política de uso de banda é similar à utilizada em redes, onde os dados são transmitidos na forma de pacotes. Isso permite que dispositivos USB 1.1 sejam conectados em portas USB 2.0 sem reduzir a velocidade para outros dispositivos conectados na mesma porta. O controlador simplesmente disponibiliza 12 megabits para o dispositivo USB 1.1 e continua disponibilizando o restante da banda para os demais dispositivos.

Outra característica interessante do USB é a capacidade de enumerar e reconhecer novos dispositivos, coisa que não existia na época das portas seriais. Detectar um mouse ou um modem serial é um pesadelo para qualquer programador. Não existe forma simples de saber o que está plugado na porta serial, ou mesmo descobrir SE existe algum dispositivo lá. A única forma é apelar para técnicas indiretas, enviando alguns dados através da porta e tentando deduzir quem está do outro lado a partir das respostas. É por isso que algumas distribuições Linux antigas pediam que você movimentasse seu mouse serial num certo ponto da instalação, para que ele pudesse ser detectado.

No USB as coisas funcionam de forma muito mais eficiente. O controlador percebe quando um dispositivo é conectado e envia um pacote de controle, que o dispositivo responde enviando uma série de informações, incluindo sua classe, velocidade, fabricante, string de identificação e assim por diante.

Além de permitirem que o controlador reserve corretamente os recursos usados pelo dispositivo, estas informações são enviadas ao sistema operacional. Isso permite que o dispositivo seja ativado e o programa ou aviso correspondente seja mostrado na tela.

Veja o que aparece no log de uma distribuição Linux atual quando plugo meu joystick USB:

usb 1-3: new low speed USB device using ohci_hcd and address 3
usb 1-3: configuration #1 chosen from 1 choice
input: Logitech WingMan Precision USB as /class/input/input2
input: USB HID v1.10 Joystick [Logitech WingMan Precision USB] on usb-0000:00:02.0-3

Estas informações permitem também programar ações para quando determinados dispositivos são plugados no Linux, através de um daemon chamado udev. É possível executar automaticamente um script de backup quando o HD externo é plugado, ou abrir um determinado game quando você pluga o joystick. O mais interessante é que as ações podem ser relacionadas com o código de identificação do dispositivo (que é único), de forma que o backup seja feito apenas ao plugar um HD específico, por exemplo.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X