Seminários S
2
i
Barramento USB
Teoria e Projetos
Apanhado Geral
●
USB = Universal Serial Bus;
●4 vias de comunicação;
●Vias:
–
Vbus (+5V) – Vermelho;
–
D- – Branco;
–
D+ – Verde;
–
GND (referência) - Preto;
●Plug-and-Play;
Comunicação do barramento USB
Aplicativo
API
Driver Cliente
Driver USB
Driver Controlador
Host
Controlador Host
Dispositivos USB
Software Hardware
Envio de Dados
PID
Nome
Tipo
0101
SOF
token
1101
SETUP
1001
IN
0001
OUT
0011
DATA0
data
1011
DATA1
0010
ACK
handshake
1010
NAK
1110
STALL
Envio de Dados
●
SOF – Start of Frame;
Sync
PID
contador de SOFS
crc5 . fim .
●
SETUP, IN, OUT;
8 bits 7 bits 4 bits 5 bits
Sync
PID
ADDR ENDP crc5 . fim .
●
DATA0, DATA1;
8 bits 0 a 1023 x 8 bits 16 bits
Sync
PID
dados de informação
crc16
. fim .
●
ACK, NACK, STALL;
8 bits
Envio de Dados
●Transações:
–Interrupt (Interrupção);
–Bulk (Volumosa);
–Isochronous;
–Control;
Processo de Enumeração
●
O Processo de Enumeração é a designação
dada ao mecanismo de configuração das
funções e dispositivos conectados ao Host;
Passos do Processo de
Enumeração
1.
Dispositivo é conectado ao Host;
2.
O Host detecta eletricamente o Host;
3.
O Controlador Host requisita ao dispositivo que ele
reini-cie;
4.
O Host caracteriza um caminho de comunicação com o
dispositivo;
5.
O Host requisita o tamanho máximo do pipe (caminho
de comunicação) do dispositivo;
6.
O Host atribui um único endereço ao dispositivo;
7.
O Host requisita os descritores e carrega o device driver
apropriado;
Descritores
●
Descritor de
Dis-positivo:
Campo No. bytes
comprimento 1 tipo 1 versão USB 2 classe 1 subclasse 1 protocolo 1 tamanho EP0 1 ID fabricante 2 ID produto 2 versão 2 nome do fabricante 1 nome do produto 1 número serial 1 número de configurações 1
Descritores
●
Descritor de
Configuração:
Campo
No. bytes
comprimento
1
tipo
1
comprimento total
2
num. interfaces
1
índice de configuração
1
nome da configuração
1
atributos
1
carga máxima
1
Campo Atributos D7 D6 D5 D4 D3 D2 D1 D0informa se o dispositivo tem alimentação própria. informa se o dispositivo necessita de alimentação fornecida pelo host
Descritores
●
Descritor de
Interface:
Campo
No. Bytes
comprimento
1
tipo
1
índice da interface
1
alternativo
1
endpoints
1
classe
1
subclasse
1
protocolo
1
nome da interface
1
Descritores
●
Descritor HID (Human Interface Devices):
–
Classe HID, driver com funções básicas de E/S, embutido
nos Sistemas Operacionais;
Campo No. de bytes
comprimento 1 tipo 1 versão HID 2 código do país 1 descritores restantes 1 relatório 1 tamanho relatório 2
Descritor
●
Descritor de Endpoint:
➔
O Descritor de Endpoint tem por função informar o Host sobre
uma pipe (via de comunicação) específica, visto que podemos
configurar o dispositivo para possuir mais de um pipe.
Campo No. de bytes
comprimento 1 tipo 1 endereço do endpoint 1 atributos 1 tamanho máximo do pacote 2 intervalo de polling 1
Descritores
●
Descritor de endpoint:
D7 D6 D5
D4
D3 D2 D1 D0
reservados ENDP (1 a 15)
e iguais a 0 (0 é reservado)
0: endpoint para entrada de dados.
Descritores
●
Descritor de Endpoint:
D7 D6 D5 D4 D3 D2 D1 D0
reservados
e iguais a 0
Controle (control): 00
Isócrona (Isochronous): 01
Volumosa (bulk): 10
Projeto Módulo de Sinais
Requisitos:
●
Velocidade de comunicação entre: os sinais de entrada do
módulo para o PDA e do PDA para os sinais de Saída do
módulo;
●
Robustez na troca de dados;
●
Evitar que problemas de tensão na linha de produção afetem o
PDA;
●
Desenvolver uma API de fácil utilização para que os demais
módulos que a utilizarem não tenham problemas ao fazê-lo;
●
Identificação externa do status de funcionamento do
equipamento;
Projeto Utilizando barramento USB
●
Definir tipo de transação a ser utilizada;
●
Número de bytes enviados por transação;
●
Número de vias a serem utilizadas;
–
Entradas, Saídas, etc.
●
Versão da USB a ser utilizada (Velocidade);
–
Escolha do Chip que fará o controle USB;
–Possibilidades:
●
Microcontroladores com o controlador embutido;
●Controladores USB (Conversores);
Microcontrolador – PIC 16C765
●
Microntrolador com controlador USB
interno;
●
24 Mhz clock;
●
Instruções lentas;
●
Porta B e D (8 pinos);
●
Porta C (5 pinos), E (3 pinos), A (6 pinos);
●Programas Exemplo ╔> mouse, etc.
Troca de Dados
Posição Função
byte 0 Estado dos 8 pinos de entrada
byte 1 Número de comandos recebidos do computador
byte 2 Número de mudanças dos pinos de entrada não processados pelo computados
byte 3 Estado do módulo de sinais Pacote de dados enviado ao computador
Posição Função
byte 0 Comando
byte 1 Parâmetro 1
byte 2 Parâmetro 2
byte 3 Parâmetro 3
API Módulo de Sinais
• PxSigModulePing: esta função envia ao módulo de sinais um pacote
contendo o comando PING, que indica ao módulo de sinais que o software que o controla está em perfeito funcionamento;
• PxSigModuleConfirmPortDChange: esta função envia ao módulo de sinais
um comando de confirmação de recebimento a respeito do último evento ou mudança ocorrida nos pinos de entrada de sinal da linha de produção;
• PxSigModuleGetSinalModuleInformation: esta função retorna, através de
seus parâmetros, informações de configuração que estão contidas no módulo de sinais;
• PxSigModuleSetMaxNumberOfCyclesWithoutCommands: esta função
configura no módulo de sinais o período máximo em que este deve receber os sinais PING provenientes do computador antes que este seja considerado sem comunicação;
API Módulo de Sinais
● PxSigModuleInitializeSigModuleDevice: esta função lista quais são os
dispositivos USB conectados ao computador e verifica se algum deles é o módulo de sinais. Se encontrá-lo, este obtém do sistema operacional uma permissão para utilizá-lo. As demais funções desta biblioteca só podem ser executadas depois que o módulo de sinais for iniciado
● PxSigModuleResetSigModuleDevice: esta função envia um comando ao módulo
de sinais ordenando que este tenha suas variáveis de controle zeradas;
● PxSigModuleGetPortLevels: função utilizada para obter um byte completo
contento o estado da porta de entrada de sinais da linha de produção;
● PxSigModuleGetPinLevel: esta função é usada para saber qual o estado de
qualquer pino das entradas do módulo de sinais separadamente;
● PxSigModuleSetPinLevel: esta função é utilizada para definir qual o estado de
Resultados
●
Protótipo testado e aprovado;
●
API para Win 2000 testada e aprovada;
●
API para Win CE 3.0 em implementação
(fase final);
●
Teste com uma linha de produção (ainda
Agradecimentos
●
Finep/CNPq;
●
Pollux;
●
Lista de discussão USB.org;
●
UFSC / CTC / DAS;
Ponteiros Importantes
●
www.alanmacek.com
–
Alan Macek, site com exemplo de um projeto desenvolvido.
●
www.usb.org
–
Desenvolvedores USB
●
www.lvr.com
–
Jan Axelson, escritor do livro “USB Complete”, exemplo de
desenvolvimento de Driver para dispositivos USB.
●
http://www.rennes.supelec.fr/ren/fi/elec/docs/usb/travail.html
–
projeto desenvolvido utilizando USB em Rennes – França, com
enfase na construção do descritor de HID (Human Interface
Devices).
●
www.microchip.com
–