Como é que a informação é enviada através

da interface USB?

 

 

Quando é necessária transferência de informação, o software envia um bloco denominado I/O Request Pack (IRP) ao canal apropriado, e mais tarde o software é avisado quando este pedido é completado com sucesso ou terminado por erro. Além do pedido IRP não existe qualquer outra interacção entre o canal e o USB. Após três tentativas de reenvio o IRP é cancelado e todos os pedidos seguintes para esse canal são ignorados até que o software responda ao sinal de erro, enviando uma mensagem apropriada ao USB. A forma como isto é feito depende do tipo de dispositivo e do software.

       

Como o próprio nome sugere (Universal Serial Bus) a informação é enviada em série através do bus. Os bytes de dados são divididos e enviados pelo bus um bit de cada vez.

       

A informação é enviada através do bus por pacotes. Cada pacote é um conjunto de dados, que incluem informação sobre a origem, destino e comprimento dos dados, e além desta, informação relativa a detecção de erros. Como cada endpoint configura um limite para o tamanho dos pacotes, um IRP pode necessitar que vários pacotes sejam enviados.

       

Se o host receber um pacote com um tamanho inferior ao esperado assume que ocorreu um erro e o canal fica bloqueado, ficando todos os IRPs cancelados até que o problema seja resolvido pelo software. Se um endpoint estiver ocupado, embora não haja ocorrência de erros, responde com um sinal especial chamado NAK (Negative Acknowledge) que indica ao outro extremo do canal que deve aguardar.

        Cada pacote é composto por campos. Estes são descritos em seguida:

        - Um campo de sincronização que ocupa 8 bits. Parte deste campo é um símbolo especial utilizado para marcar o início do pacote.

        - O campo PID (Identificação do pacote) é composto igualmente por 8 bits, em que 4 destes bits determinam o tipo da informação, e os restantes 4 bits servem para verificação dos dados.

        - O campo de endereço.

        - O campo de endpoint com 4 bits, que indica qual o endpoint que envia ou recebe o pacote.

        - Um campo de dados, que pode ir de 0 (zero) até 1023 bytes.

       

        A detecção de erros é feita usando um CRC (Cyclic Redundancy Check) em todos os campos, excepto no PID, que tem o seu próprio mecanismo de verificação. O CRC é considerado quase 100% eficiente na detecção de erros.

 

Voltar