Utiliser des pwms dans des applications de haut niveau

Cette rubrique explique comment accéder aux modules de largeur d’impulsion des appareils (PWM) pour les utiliser dans les applications de haut niveau Azure Sphere.

La modulation de largeur d’impulsion est obtenue en faisant varier le cycle de service (rapport entre le temps et le temps d’arrêt) d’un signal numérique pulsé. Les modulateurs de largeur d’impulsion sont utilisés dans un large éventail d’applications telles que le contrôle de moteur numérique, la communication et la conversion numérique-analogique.

Pour utiliser des pwMs dans vos applications Azure Sphere, vous devez inclure les fichiers d’en-tête et Pwm la fonctionnalité requis, et spécifier le contrôleur pour les canaux PWM auxquels votre application accède.

L’exemple PWM_HighLevelApp montre comment utiliser PWM dans une application simple de conversion numérique-analogique sur un appareil MT3620.

Conditions requises pour PWM

Les applications qui utilisent des pwMs doivent inclure le fichier d’en-tête approprié et ajouter des paramètres PWM au manifeste de l’application.

Toutes les applications doivent définir leur matériel cible et inclure le fichier d’en-tête de définition de matériel correspondant.

Fichiers d’en-tête

 #include <applibs/pwm.h>
 #include "path-to-your-target-hardware.h"

Remplacez « path-to-your-target-hardware.h » par le chemin d’accès au fichier d’en-tête de votre matériel.

Paramètres du manifeste d’application

Le paramètre PWM dans le manifeste de l’application répertorie les contrôleurs PWM auxquels l’application accède. Pour configurer ces paramètres, ajoutez la Pwm fonctionnalité au manifeste de l’application, puis ajoutez chaque contrôleur PWM à la fonctionnalité. Le manifeste d’application Azure Sphere contient plus de détails.

Dans votre code, utilisez les constantes définies pour votre matériel afin d’identifier les contrôleurs PWM. Le compilateur traduit ces valeurs en valeurs brutes lorsque vous générez l’application.

Par exemple, voici un extrait d’un manifeste d’application pour une application qui cible une carte de développement de référence (RDB) MT3620.

 "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]

L’extrait suivant montre comment spécifier le même contrôleur PWM dans une application qui cible le Kit de démarrage Avnet MT3620 :

  "Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]

Accès PWM

Les applications de haut niveau Azure Sphere peuvent accéder à un PWM en appelant les API PWM des bibliothèques d’applications.

Ouvrir un contrôleur PWM

Pour ouvrir un contrôleur PWM à des fins d’accès, appelez PWM_Open et passez en tant que paramètre l’ID du contrôleur à ouvrir. Un descripteur de fichier est retourné si l’appel réussit. Sinon, -1 est retourné.

Définir l’état d’un canal PWM

Pour définir ou mettre à jour l’état d’un canal PWM, appelez PWM_Apply. Vous transmettez les paramètres suivants à PWM_Apply :

  • Descripteur de fichier retourné par PWM_Open

  • Canal PWM à mettre à jour ; cette valeur dépend de la plateforme

  • Période, cycle de service et polarité à appliquer au canal

  • Indique s’il faut activer ou désactiver le canal

Note

Les limites minimales et maximales pour la période et le cycle de service dépendent de l’appareil. Par exemple, sur le cœur de haut niveau MT3620, les MVP s’exécutent à une fréquence de base fixe de 2 MHz avec des registres de comparaison activés/désactivés 16 bits. Cela impose une résolution du cycle de service de 500 ns et une période maximale effective d’environ 32,77 ms. Pour plus d’informations, consultez la feuille de données de votre appareil spécifique.

Prise en charge de MT3620

Les fonctionnalités PWM prises en charge pour le MT3620 sont répertoriées dans État du support MT3620. Le guide de l’utilisateur de la carte de développement MT3620 décrit la disposition des broches et les fonctions d’épingle.

Le MT3620 a 12 canaux PWM, PWM0 - PWM11. Ils sont organisés en 3 groupes de 4 canaux. Chaque groupe est associé à un contrôleur PWM (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2). Les canaux PWM et les épingles GPIO GPIO0 à GPIO11 sont mappés aux mêmes broches sur le MT3260. Si votre application utilise un contrôleur PWM, toutes les broches associées à ce contrôleur sont allouées pour être utilisées comme sorties PWM. Ils ne peuvent pas être utilisés pour un autre type de périphérique.