Crear una aplicación

Este capítulo describe la estructura de software del Componente Anfitrión USB y explica su uso para crear una aplicación Anfitrión USB. Este componente de software está disponible sólo para los usuarios de MDK-Professional.

El Componente USB Host simplifica el desarrollo de software de los sistemas de microcontroladores que permiten conectar Dispositivos USB. Los atributos del componente USB Host son:

  • Cumple con la especificación USB 2.0.
  • Soporta HID, MSC, CDC, y clases de dispositivos USB personalizados para ser conectados al USB Host.
  • Soporte para tipos de control, interrupción y transferencia masiva.

Componentes RTE

La siguiente imagen muestra las relaciones de los Componentes RTE con el periférico USB Host del microcontrolador (Controlador USB). Los Componentes RTE proporcionan archivos de configuración y plantillas de código de usuario. Los archivos de configuración configuran los Componentes RTE, las interfaces de hardware, los recursos de memoria y los parámetros del Host USB. Las plantillas de código de usuario proporcionan el esqueleto para implementar el soporte para diferentes clases de dispositivos USB.

usb_host_blocks_config_files.png

Estructura del Host USB

Los pasos para crear una aplicación de microcontrolador que funcione como un Host USB son:

  1. Seleccionar los Componentes RTE que se requieren para su aplicación.
  2. Habilitar y configurar el Driver del Host USB.
  3. Configurar el Host USB que conecta el Middleware USB al periférico USB del microcontrolador.
  4. Configurar los Recursos del Sistema de acuerdo a los Requerimientos de Recursos del componente Host USB.
  5. Configurar los parámetros de los Dispositivos USB conectados.
  6. Implementar el Código de la Aplicación utilizando las plantillas de código que se proporcionan para soportar varias Clases de Dispositivos USB.
  7. Depurar su aplicación utilizando los mecanismos incorporados del Componente USB.

Selección del Componente RTE

La selección del Componente RTE se realiza en unos pocos pasos:

  1. Desde el Componente USB:
    • Seleccione USB:CORE que proporciona la funcionalidad básica requerida para la comunicación USB.
    • Ajuste USB:Host a ‘1’. Esto crea un Host USB para la comunicación con los dispositivos USB conectados.
    • Seleccione el soporte deseado para las Clases USB (HID/MSC/CDC/Custom Class). Por ejemplo, seleccione USB:Host:HID para admitir sólo dispositivos de clase HID.
  2. Desde el componente de controladores:
    • Seleccione un controlador de host USB adecuado para su aplicación.
  3. Desde el componente de dispositivos:
    • Es posible que se necesiten controladores adicionales específicos para el dispositivo según el resultado de la validación.
  4. Desde el componente CMSIS:
    • Seleccione el CMSIS:CORE para proporcionar la interfaz del núcleo al procesador.
    • Seleccione un CMSIS:RTOS o CMSIS:RTOS2 adecuado que sea necesario para la aplicación.

USBH_RTE.png

Selección de componentes RTE

Controlador y controlador USB

El controlador del host USB y el controlador USB del microcontrolador deben estar correctamente configurados. En particular, esto significa:

  • El controlador del host USB seleccionado en el componente de controladores se configura normalmente con el archivo de configuración RTE_Device.h. Aunque este archivo proporciona múltiples opciones, normalmente es suficiente para habilitar el periférico USB Host relacionado con este controlador. Algunos microcontroladores pueden requerir configuraciones relacionadas con la interfaz de la capa física (PHY), la alimentación VBUS del USB y la protección contra sobrecorrientes.
  • El controlador USB del microcontrolador necesita típicamente configuraciones de reloj específicas. Consulte la guía del usuario del microcontrolador para entender los requisitos. También puede copiar la configuración de un ejemplo de USB Host que se proporciona para varias placas de evaluación.

Configuración del USB Host

El archivo USBH_Config_n.c contiene ajustes adicionales para el USB Host específico:

  • El número de controlador se establece de acuerdo con el controlador USB seleccionado. Para los controladores de dispositivos USB individuales será ‘0’.
  • Algunos microcontroladores pueden hacer uso de diferentes interfaces de controlador de hardware. Consulte la guía del usuario del microcontrolador seleccionado para elegir la configuración correcta.

Recurra a Configuración para obtener una lista detallada de todos los ajustes disponibles.

Configuración de los recursos del sistema

Para un funcionamiento correcto, el componente USB Host requiere algunos ajustes de configuración del sistema. Los requisitos son:

  • Tamaño de pila adicional de 512 bytes. Esto se puede configurar en el archivo del dispositivo (Stack_Size).
  • El componente de dispositivo USB utiliza hilos CMSIS-RTOS. En caso de que se utilice RTX v5 no es necesario cambiar la configuración de RTX ya que todos los recursos se asignan estáticamente. En caso de que se utilice RTX v4 es necesario cambiar los siguientes ajustes en el archivo:
    • Aumentar el Número de hilos de usuario que se ejecutan simultáneamente por el número de hilos requeridos por el Host USB
    • Aumentar el Número de hilos con tamaño de pila proporcionado por el usuario por el número de hilos.proporcionado por el usuario por el número de hilos requeridos por el USB Host
    • Aumentar el tamaño total de la pila para los hilos con el tamaño de la pila proporcionado por el usuario por el tamaño de los hilos requeridos por el USB Host
    • Habilitar los temporizadores de usuario

Para más información, consulte la sección de requisitos de recursos del componente USB Host.

Configuración de Dispositivos USB Conectables

En los archivos USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h, o USBH_Config_CustomClass.h se puede especificar el número de Dispositivos USB concurrentes que soportará el Host USB. Esto tiene un impacto en la cantidad de memoria que se reservará en su aplicación para la fijación de los Dispositivos USB. Los Ejemplos muestran cómo configurar un Host USB para interactuar con diferentes dispositivos periféricos HID, MSC o CDC.

Los archivos de Implementación de Código de Usuario

proporcionan plantillas de funciones para soportar varias Clases de Dispositivos USB en el Host USB. Las funciones disponibles se explican en la sección de Referencia del Componente del Host USB. Estas rutinas pueden ser adaptadas a las necesidades de la aplicación del microcontrolador, en caso de que se necesite una funcionalidad diferente a la predeterminada.

Las siguientes plantillas están disponibles para el componente USB Host:

Nombre de la plantilla Propósito
USBH_MSC.c Funciones necesarias para soportar dispositivos MSC. La plantilla se puede encontrar aquí.
USBH_PL2303.c Funciones necesarias para soportar el adaptador USB a RS232 de Prolific PL2303. La plantilla se puede encontrar aquí.
USBH_User_CustomClass.c Funciones necesarias para soportar cualquier clase de dispositivo USB. La plantilla se puede encontrar aquí.

Depuración

El componente USB Host se distribuye en forma de librería y no permite su depuración directa del código. Sin embargo, puede configurarse fácilmente para generar eventos de depuración y proporcionar visibilidad dinámica al funcionamiento del componente.

Se pueden seleccionar las siguientes variantes para el componente de software USB:CORE en la ventana Manage Run-Time Environment:

  • Debug: esta variante admite anotaciones de eventos para el y hace muy fácil analizar el funcionamiento interno del USB Host Component durante la depuración de la aplicación. El soporte de la grabadora de eventos a continuación explica cómo configurar y utilizar esta variante.
  • Release: esta variante no incluye código de depuración adicional. Utilice esta variante al desplegar la aplicación.

La figura siguiente muestra la selección de la variante Debug.

usbh_debug_variant.png

La variante USB Host:Debug Events describe los eventos implementados en el USB Device Component.

El soporte de grabación de eventos

es una potente herramienta que proporciona visibilidad a la ejecución dinámica del programa.

El Componente de Dispositivo USB genera un amplio conjunto de Eventos de Depuración para el Grabador de Eventos e implementa la infraestructura necesaria para interactuar con él.

Para utilizar el Grabador de Eventos se requiere crear una imagen con soporte de generación de eventos. Los pasos necesarios son:

  1. : en el cuadro de diálogo de gestión de RTE seleccione la variante Debug para el componente de software USB:CORE.
  2. : en el cuadro de diálogo de gestión de RTE habilite el componente de software Compiler:Event Recorder.
  3. Asegúrese de que el Event Recorder es inicializado preferentemente por si se utiliza CMSIS-RTOS2 RTX v5, o alternativamente llamando a la función en el código de la aplicación.
  4. Configuración del Grabador de Eventos: si es necesario, ajuste la configuración por defecto del Grabador de Eventos.
  5. Construya el código de la aplicación, descárguelo en el hardware de destino e inicie la sesión de depuración.

Ahora, cuando el USB Host genere información de eventos, se podrá ver en el.

Configuración del Grabador de Eventos

Esta sección describe los ajustes de configuración del Grabador de Eventos. El uso requiere la variante de depuración del componente de software USB:CORE; consulte el soporte de la grabadora de eventos para obtener más información.

Configuración de generación de eventos USB

La selección de la variante de depuración USB:CORE añadirá el archivo USB_Debug.c a su proyecto. Utilice este archivo para establecer la configuración de generación de eventos para el núcleo USB, los controladores y las clases de dispositivos por separado. El archivo está disponible para los componentes USB Device y Host.

USBH_USB_Debug_c.png

USB_Debug.c para la configuración de la generación de eventos

Los siguientes ajustes están disponibles para la configuración de la generación de eventos de cada módulo:

  • Off significa que ningún evento será generado por el módulo
  • Errors significa que sólo los eventos de error serán generados por el módulo
  • Errors + API significa que los eventos de error y de llamada a la API serán generados por el módulo
  • All significa que todos los eventos disponibles serán generados por el módulo. Además de los eventos de error y de llamada a la API, esto contiene eventos de operación y detallados.

Identificadores de eventos

El componente USB Host utiliza los siguientes identificadores de eventos:

Componente Identificación de eventos
USBH_Core 0xB0
USBH_Driver 0xB1
USBH_CC 0xB2
USBH_CDC 0xB3
USBH_HID 0xB4
USBH_MSC 0xB5