Descritores USB e seus tipos (Parte 3/6)

Descritores USB e seus tipos (Parte 3/6)

Agora que discutimos os detalhes básicos do protocolo USB, abrangendo tipos de pacotes e transferências USB, o próximo tópico da série são Descritores USB. No contexto da interface USB, os descritores são blocos formatados de informações, por meio dos quais o dispositivo host aprende sobre o periférico. Ajuda na identificação e configuração do dispositivo periférico.

Um descritor contém informações como tipo de dispositivo, ID do fornecedor, versão USB compatível, número de configurações suportadas pelo dispositivo, número de endpoints, etc. O periférico USB deve responder com descritores quando solicitado pelo host. Durante a enumeração, o host usa transferência de controle para solicitar descritores ao dispositivo.

Tipos de descritores

Existem principalmente cinco tipos de descritores

• Descritores de dispositivos

• Descritores de configuração

• Descritores de Interface

• Descritores de endpoint

• Descritores de strings

Durante a enumeração, o host solicita os descritores de nível superior. À medida que a enumeração avança, os descritores de nível superior informam o host sobre os descritores de nível inferior (se houver). Os descritores contêm vários campos e a maioria deles usa prefixo para indicar o formato ou tipo de conteúdo. Os prefixos comuns são: b = byte (8 bits), c = palavra (16 bits), BCD = decimal codificado em binário, bm = bitmap (matriz de bits), eu = índice, eu ia = identificador.

Cada descritor contém uma série de campos e segue um formato comum. O primeiro byte especifica o comprimento do descritor enquanto o segundo byte indica o tipo de descritor.

Tipos de descritores

Comprimento – Este campo fornece o comprimento do descritor em bytes.

bDescriçãoType – Este campo indica o tipo de descritor.

tipo de descritor.

Descritores de dispositivos

O descritor do dispositivo fornece informações básicas sobre o dispositivo. Ele representa todo o dispositivo USB. É o primeiro descritor lido pelo host. O host recebe este descritor após enviar Get_Descriptor solicitar.

O descritor contém campos contendo informações específicas do dispositivo, como versão USB, classe do dispositivo, ID do produto, ID do fornecedor, número de configurações suportadas pelo dispositivo, etc. Confira a tabela abaixo para saber mais sobre os campos comuns incluídos nos descritores de dispositivos.

descritores de dispositivos

Descritores Device_qualifier

Os dispositivos USB que suportam os modos de velocidade total e alta devem ter um descritor device_qualifier. Quando o dispositivo USB muda de modo de velocidade, os valores em alguns campos são alterados no descritor do dispositivo. O descritor device_qualifier fornece informações apenas sobre os valores dos campos que são alterados quando o dispositivo alterna para um modo de velocidade alternativo. Este descritor contém os seguintes campos, dos quais os dois primeiros são comuns, enquanto outros são alterados especificamente para o dispositivo.

Descritores Device_qualifier

Descritores de configuração

Um dispositivo USB pode ter uma ou mais configurações. A maioria dos dispositivos possui apenas uma configuração. A configuração fornece informações relacionadas à fonte de energia, consumo de energia e número de interfaces.

O bNumConfigurações no descritor do dispositivo informa ao host sobre o número de configurações possíveis. O anfitrião usa Conjunto_Configuração solicitação para selecionar uma configuração e Obter_Configuração solicitação para ler a configuração atualmente selecionada.

O descritor de configuração contém os campos a seguir.

Descritores de configuração

Descritores Other_speed_configuration

Este descritor é para dispositivos que suportam os modos de velocidade total e alta. Retorna a configuração do modo de velocidade atualmente não ativo. A estrutura é a mesma do descritor de configuração, exceto pelo valor do campo para bDescritor tipo, que é 0x07.

Descritores de interface

Uma configuração pode ter uma ou mais interfaces que podem ser consideradas recursos ou funções implementadas pelo dispositivo. O descritor de interface fornece informações relacionadas a recursos específicos do dispositivo, como classe, subclasse, protocolo e número de usos da interface de terminais.

O bNumInterfaces no descritor de configuração informa ao host sobre o número de interfaces possíveis. Depois de selecionar uma configuração, o host usa Conjunto_Interface solicitação para selecionar uma interface e Obter_Interface solicitação para ler a interface atualmente selecionada.

É possível ativar múltiplas interfaces ao mesmo tempo para uma configuração. Os dispositivos nos quais múltiplas interfaces estão ativas são conhecidos como dispositivos compostos.

Descritores de interface

Descritores de endpoint

O Endpoint Descriptor descreve os endpoints associados a uma interface. Não há descritor para o endpoint zero padrão. O endpoint zero é o endpoint de controle e é configurado antes mesmo da solicitação de qualquer descritor. As informações contidas neste descritor são utilizadas para determinar a largura de banda exigida pelo barramento USB.

Este descritor inclui os seguintes campos –:

Descritores de endpoint

Descritores de string

Os descritores de string contêm textos legíveis por humanos. Eles geralmente são usados ​​para fornecer informações. Outros descritores contêm valores de índice que apontam para strings contendo informações de fabricante, produto, número de série, configuração, interface. Outros descritores como Class e Vendor Specific podem conter índices para descritores de string

As Strings são codificadas no formato Unicode e vários idiomas são suportados. O host pode obter a lista de idiomas suportados usando Get_Descriptor solicitação com 0 em wIndex campo. O dispositivo retorna o descritor String contendo códigos para diferentes idiomas. Os primeiros 2 campos são obrigatórios e os outros campos contêm códigos de idioma.

Descritores de string

Depois disso, todos os descritores de string subsequentes (além do índice 0) terão conteúdo de string e deverão estar em conformidade com o formato a seguir.

Formato do descritor de string

Outros descritores padrão

De acordo com as especificações USB 2.0, existem descritores adicionais para outros fins específicos. São os seguintes:

Descritor interface_association: Isso se aplica a dispositivos compostos que possuem mais de uma interface para uma única função ou recurso.

Descritor Interface_power: Foi proposto pela Microsoft em 1998, mas não foi implementado. O objetivo ao propor este descritor foi dar às interfaces a capacidade de gerenciar seu próprio consumo de energia individualmente.

Descritor OTG: Este descritor é necessário para dispositivos que suportam OTG Host Negotiation Protocol (HNP) ou Session Request Protocol.

Descritores de depuração: O descritor de depuração é usado por dispositivos de depuração para fins de depuração.

Na próxima parte da série USB, discutiremos as solicitações USB e os estágios de transferência de controle.

블로그로 돌아가기

댓글 남기기

댓글 게시 전에는 반드시 승인이 필요합니다.