Créer une application

Ce chapitre décrit la structure logicielle du composant hôte USB et explique son utilisation pour créer une application hôte USB. Ce composant logiciel est disponible pour les utilisateurs de MDK-Professional uniquement.

Le composant hôte USB simplifie le développement logiciel des systèmes de microcontrôleurs qui permettent de connecter des périphériques USB. Les attributs du composant hôte USB sont :

  • Conforme à la spécification USB 2.0.
  • Prise en charge des classes de dispositifs USB HID, MSC, CDC et personnalisés à connecter à l’hôte USB.
  • Support des types de transfert de contrôle, d’interruption et de masse.

Composants RTE

L’image suivante montre les relations des composants RTE avec le périphérique USB Host du microcontrôleur (contrôleur USB). Les composants RTE fournissent des fichiers de configuration et des modèles de code utilisateur. Les fichiers de configuration configurent les composants RTE, les interfaces matérielles, les ressources de mémoire et les paramètres de l’hôte USB. Les modèles de code utilisateur fournissent le squelette pour mettre en œuvre le support de différentes classes de dispositifs USB.

usb_host_blocks_config_files.png

Structure de l’hôte USB

Les étapes pour créer une application de microcontrôleur qui fonctionne comme un hôte USB sont:

  1. Sélectionner les composants RTE qui sont nécessaires pour votre application.
  2. Activer et configurer le pilote d’hôte USB.
  3. Configurer l’hôte USB qui connecte le middleware USB au périphérique USB du microcontrôleur.
  4. Configurer les ressources du système selon les exigences de ressources du composant hôte USB.
  5. Configurer les paramètres des périphériques USB attachés.
  6. Mettre en œuvre le code d’application en utilisant des modèles de code qui sont fournis pour prendre en charge diverses classes de périphériques USB.
  7. Déboguer votre application en utilisant les mécanismes intégrés du composant USB.

Sélection du composant RTE

La sélection du composant RTE se fait en quelques étapes :

  1. Du composant USB :
    • Sélectionnez USB:CORE qui fournit la fonctionnalité de base requise pour la communication USB.
    • Définissez USB:Host à ‘1’. Cela crée un hôte USB pour la communication avec les périphériques USB attachés.
    • Sélectionnez le support souhaité pour les classes USB (HID/MSC/CDC/Custom Class). Par exemple, sélectionnez USB:Host:HID pour prendre en charge les périphériques de classe HID uniquement.
  2. Du composant Pilotes:
    • Sélectionnez un pilote d’hôte USB approprié convenant à votre application.
  3. Du composant Périphérique:
    • Des pilotes supplémentaires spécifiques au périphérique peuvent être requis selon le résultat de la validation.
  4. Du composant CMSIS:
    • Sélectionnez le CMSIS:CORE pour fournir l’interface centrale au processeur.
    • Sélectionnez un CMSIS:RTOS ou CMSIS:RTOS2 approprié qui est un requis pour l’application.

USBH_RTE.png

Sélection des composants RTE

Pilote et contrôleur USB

Le pilote hôte USB et le contrôleur USB du microcontrôleur doivent être correctement configurés. Cela signifie en particulier :

  • Le pilote hôte USB sélectionné sous le composant Pilotes est généralement configuré avec le fichier de configuration RTE_Device.h. Bien que ce fichier fournisse de multiples options, il est généralement suffisant pour activer le périphérique USB Host lié à ce pilote. Certains microcontrôleurs peuvent nécessiter des réglages qui concernent une interface de couche physique (PHY), l’alimentation VBUS USB et la protection contre les surintensités.
  • Le contrôleur USB du microcontrôleur nécessite généralement des réglages d’horloge spécifiques. Consultez le guide de l’utilisateur du microcontrôleur pour comprendre les exigences. Vous pouvez également copier la configuration d’un exemple d’hôte USB fourni pour diverses cartes d’évaluation.

Configuration de l’hôte USB

Le fichier USBH_Config_n.c contient des paramètres supplémentaires pour l’hôte USB spécifique:

  • Le numéro du pilote est défini en fonction du contrôleur USB sélectionné. Pour les contrôleurs de périphériques USB uniques, il sera ‘0’.
  • Certains microcontrôleurs peuvent faire usage de différentes interfaces de contrôleur matériel. Consultez le guide de l’utilisateur du microcontrôleur sélectionné pour choisir le paramètre correct.

Référez-vous à Configuration pour une liste détaillée de tous les paramètres disponibles.

Configuration des ressources du système

Pour un bon fonctionnement, le composant hôte USB nécessite certains paramètres de configuration du système. Les exigences sont :

  • Une taille de pile supplémentaire de 512 octets. Cela peut être configuré dans le fichier du périphérique (Stack_Size).
  • Le composant périphérique USB utilise les threads CMSIS-RTOS. Dans le cas où RTX v5 est utilisé, aucune modification des paramètres RTX n’est nécessaire car toutes les ressources sont allouées statiquement. Dans le cas où RTX v4 est utilisé, vous devez modifier les paramètres suivants dans le fichier :
    • Augmenter le nombre de threads utilisateurs en cours d’exécution simultanée par le nombre de threads requis par l’hôte USB
    • Augmenter le nombre de threads avec la taille de pile fournie par l’utilisateur par le nombre de threads.fournis par l’utilisateur par le nombre de threads requis par l’hôte USB
    • Augmenter la taille totale de la pile pour les threads avec la taille de la pile fournie par l’utilisateur par la taille des threads requis par l’hôte USB
    • Activer les temporisateurs de l’utilisateur

Pour plus d’informations, consultez la section Ressources requises du composant USB Host.

Configuration des dispositifs USB attachables

Dans les fichiers USBH_Config_HID.h, USBH_Config_MSC.h, USBH_Config_CDC.h ou USBH_Config_CustomClass.h, vous pouvez spécifier le nombre de dispositifs USB concurrents que l’hôte USB prendra en charge. Cela a un impact sur la quantité de mémoire qui sera réservée dans votre application pour l’attachement des dispositifs USB. Les exemples montrent comment configurer un hôte USB pour interagir avec différents périphériques HID, MSC ou CDC.

Les fichiers de mise en œuvre du code utilisateur

fournissent des modèles de fonctions pour prendre en charge diverses classes de périphériques USB sur l’hôte USB. Les fonctions disponibles sont expliquées dans la section Référence du composant hôte USB. Ces routines peuvent être adaptées aux besoins de l’application du microcontrôleur, dans le cas où une fonctionnalité différente puis par défaut est nécessaire.

Les modèles suivants sont disponibles pour le composant USB Host :

Nom du modèle But
USBH_MSC.c Fonctions nécessaires pour supporter les périphériques MSC. Le modèle peut être trouvé ici.
USBH_PL2303.c Fonctions requises pour supporter l’adaptateur USB vers RS232 série Prolific PL2303. Le modèle peut être trouvé ici.
USBH_User_CustomClass.c Fonctions requises pour supporter toute classe de dispositif USB. Le modèle peut être trouvé ici.

Débogage

Le composant hôte USB est distribué sous forme de bibliothèque et ne permet pas son débogage direct du code. Cependant, il peut être facilement configuré pour générer des événements de débogage et fournir une visibilité dynamique du fonctionnement du composant.

Les variantes suivantes peuvent être sélectionnées pour le composant logiciel USB:CORE dans la fenêtre Gérer l’environnement d’exécution:

  • Débogage : cette variante prend en charge les annotations d’événements pour le et rend très facile l’analyse du fonctionnement interne du composant hôte USB pendant le débogage de l’application. Le support des annotations d’événements ci-dessous explique comment configurer et utiliser cette variante.
  • Release : cette variante ne comprend pas de code de débogage supplémentaire. Utilisez cette variante lors du déploiement de l’application.

La figure ci-dessous montre la sélection de la variante Debug.

usbh_debug_variant.png

La variante USB Host:Debug Events décrit les événements mis en œuvre dans le composant de périphérique USB.

Le support de l’enregistreur d’événements

est un outil puissant qui fournit une visibilité sur l’exécution dynamique du programme.

Le composant hôte USB génère un large ensemble d’événements de débogage pour l’enregistreur d’événements et met en œuvre l’infrastructure requise pour s’interfacer avec lui.

Pour utiliser l’enregistreur d’événements, il est nécessaire de créer une image avec un support de génération d’événements. Les étapes nécessaires sont :

  1. : dans la boîte de dialogue de gestion RTE, sélectionnez la variante Debug pour le composant logiciel USB:CORE.
  2. : dans la boîte de dialogue de gestion RTE, activez le composant logiciel Compilateur:Enregistreur d’événements.
  3. Assurez-vous que l’Enregistreur d’événements est initialisé de préférence par si CMSIS-RTOS2 RTX v5 est utilisé, ou alternativement en appelant la fonction dans le code de l’application.
  4. Configuration de l’enregistreur d’événements : si nécessaire, ajustez la configuration par défaut de l’enregistreur d’événements.
  5. Construisez le code de l’application, téléchargez-le sur le matériel cible et démarrez la session de débogage.

Maintenant, lorsque l’hôte USB génère des informations sur les événements, elles peuvent être visualisées dans le .

Configuration de l’enregistreur d’événements

Cette section décrit les paramètres de configuration de l’enregistreur d’événements. L’utilisation nécessite la variante de débogage du composant logiciel USB:CORE ; reportez-vous au support de l’enregistreur d’événements pour plus d’informations.

Configuration de la génération d’événements USB

La sélection de la variante de débogage USB:CORE ajoutera le fichier USB_Debug.c à votre projet. Utilisez ce fichier pour définir la configuration de génération d’événements pour USB core, les pilotes et les classes de périphériques séparément. Le fichier est disponible pour les composants USB Device et Host.

USBH_USB_Debug_c.png

USB_Debug.c pour la configuration de la génération d’événements

Les paramètres suivants sont disponibles pour la configuration de la génération d’événements de chaque module :

  • Off signifie qu’aucun événement ne sera généré par le module
  • Erreurs signifie que seuls les événements d’erreur seront générés par le module
  • Erreurs + API signifie que les événements d’erreur et d’appel API seront générés par le module
  • Tous signifie que tous les événements disponibles seront générés par le module. Outre les événements d’erreur et d’appel d’API, cela contient des événements d’opération et des événements détaillés.

Identifications d’événements

Le composant hôte USB utilise les identifications d’événements suivantes :

Composant Indicateur d’événement
USBH_Core 0xB0
USBH_Driver 0xB1
USBH_CC 0xB2
USBH_CDC 0xB3
USBH_HID 0xB4
USBH_MSC 0xB5