Guia de Configuração USB no Microcontrolador PIC18F4550
Enviado por Javi e classificado em Eletrônica
Escrito em em
português com um tamanho de 25,55 KB
Características do Módulo USB
Taxa de transferência: Pode ser de baixa velocidade (1.5 Mb/s) ou de alta velocidade (12 Mb/s).
- Interrupções: Toda vez que há uma transmissão ou recepção de dados no barramento, é gerada uma interrupção para o PIC. Isso permite que o atendimento de rotina gerencie os aspectos de baixo nível da especificação USB, tornando a manipulação do protocolo transparente para o núcleo da aplicação.
- Endpoints: Permite a utilização de até 32 terminais (16 vias), mas normalmente utiliza apenas três (endpoints 0, 1 e 2). Um endpoint é um buffer que armazena dados dentro do dispositivo. Todos os dispositivos devem suportar o endpoint 0, utilizado para configuração.
Dual Access RAM: O módulo utiliza 1 Kbyte de RAM de acesso duplo. Quando o módulo USB está desativado, esses bancos funcionam como memória RAM comum. Quando ativado, a memória é alocada como buffer para a operação USB, compartilhada entre o núcleo do microcontrolador e o motor da interface serial (SIE).
SIE (Serial Interface Engine): É responsável pela geração do CRC, sincronização de sinais D+ e D-, e correção de comunicação entre o módulo e o PIC.
Configuração do Módulo
USBEN: Bit de prioridade no registro UCON<3> que ativa ou desativa o módulo USB. Também controla o regulador de tensão e os resistores pull-up.
Definição de Frequência
Para a comunicação USB, a configuração da frequência do relógio é fundamental. Dependendo da velocidade (baixa ou alta), fornecemos ao módulo 6 ou 48 MHz, respectivamente. O sistema utiliza um cristal (ex: 4 MHz) que passa por prescalers e PLLs para atingir os 48 MHz necessários para o USB 2.0.
O sinal passa pelo oscilador, podendo ser injetado diretamente (se for 48 MHz) ou processado via Prescaler PLL e multiplexadores para gerar a frequência correta.
Transmissores e Regulador
- Transmissor Interno: Controlado pelo bit UTRDIS (UCFG<3>).
- Transmissor Externo: Utilizado quando as condições físicas exigem distância entre o transmissor e o SIE (ativado com UTRDIS = 1).
- Regulador Interno: O PIC18F4550 possui um regulador de 3,3 V para o transmissor. Requer um capacitor externo de 220nF e é configurado pelo bit VREG.
Velocidade do Barramento
A velocidade é definida pelo registro UCFG e resistores pull-up:
- FSEN (UCFG<2>): 1 para Full-speed (48 MHz, pull-up em D+); 0 para baixa velocidade (6 MHz, pull-up em D-).
- UPUEN (UCFG<4>): Habilita ou desabilita os resistores pull-up.
Interrupções USB
O PIC18F4550 utiliza registros específicos para gerenciar interrupções:
- PIR2: Contém a flag de interrupção (USBIF).
- PIE2: Contém o bit de permissão (USBI).
- IPR2: Define a prioridade (USBIP).
Controle de Endpoint USB
Os endpoints são buffers de dados. Cada um dos 16 endpoints bidirecionais possui um registro de controle independente (UEPn):
- EPHSHK (UEPn<4>): Controla o protocolo de troca (handshake).
- EPCONDIS (UEPn<3>): Habilita ou desabilita o controle de operações SETUP.
- EPINEN e EPOUTEN: Habilitam operações de entrada e saída, respectivamente.