Este capítulo descreve a estrutura do software do componente USB Host e explica o seu uso para criar um aplicativo USB Host. Este componente de software está disponível apenas para usuários do MDK-Professional.
O componente Host USB simplifica o desenvolvimento de software de sistemas microcontroladores que permitem a conexão de dispositivos USB. Os atributos do Componente Host USB são:
- Conforme com a especificação USB 2.0.
- Suporte para HID, MSC, CDC, e Classes de Dispositivos USB Personalizados a serem conectados ao Host USB.
- Suporte para tipos de controle, interrupção e transferência em massa.
Componentes RTE
A figura seguinte mostra as relações dos Componentes RTE com o periférico USB Host do microcontrolador (Controlador USB). Os Componentes RTE fornecem arquivos de configuração e modelos de código de usuário. Os arquivos de configuração configuram os Componentes RTE, interfaces de hardware, recursos de memória e parâmetros USB Host. Os modelos de código de usuário fornecem o esqueleto para implementar suporte a diferentes classes de dispositivos USB.
Os passos para criar uma aplicação microcontroladora que funcione como um Host USB são:
- Selecione os Componentes RTE que são necessários para sua aplicação.
- Ativar e configurar o Driver Host USB.
- Configurar o Host USB que conecta o Middleware USB ao periférico USB do microcontrolador.
- Configurar os Recursos do Sistema de acordo com os Requisitos de Recursos do componente Host USB.
- Configure os parâmetros dos dispositivos USB anexados.
- Implemente o Código da Aplicação usando modelos de código que são fornecidos para suportar várias Classes de Dispositivos USB.
- Depure a sua aplicação usando os mecanismos incorporados do componente USB.
Selecionar componente RTE
A seleção do componente RTE é feita em alguns passos:
- Do componente USB:
- Selecionar USB:CORE que fornece a funcionalidade básica necessária para comunicação USB.
- Configurar USB:Host para ‘1’. Isto cria um Anfitrião USB para comunicação com dispositivos USB anexados.
- Selecione o suporte desejado para Classes USB (HID/MSC/CDC/Custom Class). Por exemplo, selecione USB:Host:HID para suportar somente HID Class Devices.
- From the Drivers Component:
- Selecione um driver USB Host apropriado para sua aplicação.
- From the Device Component:
- Permitir que sejam necessários drivers adicionais específicos do dispositivo de acordo com a saída de validação.
- Do Componente CMSIS:
- Selecione o CMSIS:CORE para prover a interface central para o processador.
- Selecione um CMSIS:RTOS ou CMSIS:RTOS2 adequado que seja necessário para a aplicação.
Controlador e Driver USB
O Driver USB Host e o Controlador USB do microcontrolador precisam ser configurados corretamente. Em particular isto significa:
- O Driver USB Host Driver seleccionado no Componente Drivers é normalmente configurado com o ficheiro de configuração RTE_Device.h. Enquanto este arquivo fornece múltiplas opções, normalmente é suficiente para habilitar o periférico USB Host relacionado a este driver. Alguns microcontroladores podem requerer configurações relacionadas a uma interface de camada física (PHY), a alimentação VBUS USB e a proteção de sobrecorrente.
- O Controlador USB do microcontrolador precisa tipicamente de configurações de relógio específicas. Consulte o guia do usuário do microcontrolador para entender os requisitos. Em alternativa pode copiar a configuração de um exemplo de Host USB que é fornecido para várias placas de avaliação.
Configuração do Host USB
O ficheiro USBH_Config_n.c contém configurações adicionais para o Host USB específico:
- O Número do Controlador é definido de acordo com o Controlador USB seleccionado. Para controladores de dispositivos USB únicos será ‘0’.
- Alguns microcontroladores podem fazer uso de diferentes interfaces de controladores de hardware. Consulte o guia do usuário do microcontrolador selecionado para escolher a configuração correta.
Refer to Configuration para obter uma lista detalhada de todas as configurações disponíveis.
System Resource Configuration
Para uma operação adequada, o Componente Host USB requer algumas configurações do sistema. Os requisitos são:
- Adicional tamanho de pilha de 512 bytes. Isto pode ser configurado no arquivo do dispositivo (
Stack_Size
). - O Componente de Dispositivo USB usa threads CMSIS-RTOS. No caso do RTX v5 ser utilizado, não são necessárias alterações nas configurações do RTX, pois todos os recursos são alocados estaticamente. No caso do RTX v4 ser utilizado, você precisa alterar as seguintes configurações no arquivo:
- Incrementar o Número de threads do usuário em execução simultânea pelo número de threads requeridos pelo host USB
- Incrementar o Número de threads com o usuário…fornecido tamanho da pilha pelo número de roscas requerido pelo Host USB
- Increase Tamanho total da pilha para roscas com tamanho da pilha fornecido pelo usuário por tamanho de roscas requerido pelo Host USB
- Enable User Timers
Para mais informações, Verifique a secção Requisitos de Recursos do componente USB Host.
Configuração de Dispositivos USB Anexáveis
No USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h, ou USBH_Config_CustomClass.h você pode especificar o número de Dispositivos USB simultâneos que o Host USB suportará. Isto tem um impacto na quantidade de memória que será reservada em seu aplicativo para a conexão de Dispositivos USB. Os Exemplos mostram como configurar um Host USB para interagir com diferentes dispositivos periféricos HID, MSC ou CDC.
Implementação de Código de Usuário
arquivos fornecem modelos de funções para suportar várias Classes de Dispositivos USB no Host USB. As funções disponíveis são explicadas na seção Referência do componente Anfitrião USB. Estas rotinas podem ser adaptadas às necessidades da aplicação microcontroladora, caso seja necessária uma funcionalidade diferente da predefinida.
Estão disponíveis os seguintes modelos para o componente Anfitrião USB:
Nome do Template | Propósito | USBH_MSC.c | Funções requeridas para suportar dispositivos MSC. O modelo pode ser encontrado aqui. |
---|---|
USBH_PL2303.c | Funções requeridas para suportar o adaptador Prolific PL2303 USB para RS232 serial. O modelo pode ser encontrado aqui. |
USBH_User_CustomClass.c | Funções requeridas para suportar qualquer classe de dispositivo USB. O modelo pode ser encontrado aqui. |
Debugging
USB Host Component é distribuído em forma de biblioteca e não permite a depuração direta do seu código. No entanto, ele pode ser facilmente configurado para gerar eventos de depuração e fornecer visibilidade dinâmica à operação do componente.
Variantes de acompanhamento podem ser selecionadas para o componente de software USB:CORE na janela Manage Run-Time Environment:
- Debug: esta variante suporta anotações de eventos para o componente e facilita muito a análise da operação interna do componente USB Host durante a depuração da aplicação. O Suporte a Gravador de Eventos abaixo explica como configurar e usar esta variante.
- Release: esta variante não inclui código de depuração adicional. Use esta variante ao implementar a aplicação.
A figura abaixo mostra a seleção da variante de depuração.
O Anfitrião USB:Eventos de Debug descreve os eventos implementados no Componente do Dispositivo USB.
Event Recorder Support
é uma ferramenta poderosa que fornece visibilidade para a execução dinâmica do programa.
O Componente Anfitrião USB gera um amplo conjunto de Eventos de Depuração para o Gravador de Eventos e implementa a infra-estrutura necessária para fazer interface com ele.
Para usar o Gravador de Eventos é necessário criar uma imagem com suporte a geração de eventos. Os passos necessários são:
- : no diálogo de gerenciamento RTE selecione a variante Debug para o componente de software USB:CORE.
- : no diálogo de gerenciamento RTE habilite o componente de software Compiler:Event Recorder.
- Assegure que o Event Recorder seja inicializado preferencialmente pelo CMSIS-RTOS2 RTX v5, ou alternativamente chamando a função no código da aplicação.
- Configuração do Gravador de Eventos: se necessário, ajuste a configuração padrão do Gravador de Eventos.
- Build o código da aplicação, faça o download para o hardware de destino e inicie a sessão de depuração.
Agora, quando o Host USB gera informações de eventos, elas podem ser visualizadas no arquivo .
Configuração do Gravador de Eventos
Esta seção descreve as configurações para o Gravador de Eventos. A utilização requer a variante de depuração do componente de software USB:CORE; consulte Suporte do Gravador de Eventos para mais informações.
Configuração de Geração de Eventos USB
Selecionar a variante de depuração USB:CORE adicionará o arquivo USB_Debug.c
ao seu projeto. Use este arquivo para definir a configuração de geração de eventos para o núcleo USB, drivers e classes de dispositivos separadamente. O arquivo está disponível para os componentes USB Device e Host.
As seguintes configurações estão disponíveis para configuração de geração de eventos de cada módulo:
- Off significa que nenhum evento será gerado pelo módulo
- Erros significa que somente eventos de erro serão gerados pelo módulo
- Erros + API significa erro e eventos de chamada de API serão gerados pelo módulo
- Todos significa que todos os eventos disponíveis serão gerados pelo módulo. Além dos eventos de erro e de chamada da API, isto contém operação e eventos detalhados.
Event IDs
O componente Host USB usa os seguintes IDs de evento:
Componente | ID do evento | USBH_Core | 0xB0 | USBH_Driver | 0xB1 | USBH_CC | 0xB2 | USBH_CDC | 0xB3 | USBH_HID | 0xB4 | USBH_MSC | 0xB5 |
---|