Share via


PWM's gebruiken in toepassingen op hoog niveau

In dit onderwerp wordt beschreven hoe u toegang pulsbreedtemodulators (PWM's) voor apparaten opent voor gebruik in azure Sphere-toepassingen op hoog niveau.

Modulatie van de pulsbreedte wordt bereikt door het variƫren van de taakcyclus (verhouding van op tijd tot vrije tijd) van een gepulseerd digitaal signaal. Pulsbreedtemodulatoren worden gebruikt in een breed scala aan toepassingen, zoals digitale motorbesturing, communicatie en digitaal-naar-analoog conversie.

Als u PWM's wilt gebruiken in uw Azure Sphere-toepassingen, moet u de vereiste headerbestanden en Pwm mogelijkheden opnemen en de controller opgeven voor de PWM-kanalen waartoe uw toepassing toegang heeft.

Het PWM_HighLevelApp voorbeeld laat zien hoe u PWM gebruikt in een eenvoudige digitaal-naar-analoge conversietoepassing op een MT3620-apparaat.

PWM-vereisten

Toepassingen die gebruikmaken van PWM's moeten het juiste headerbestand bevatten en PWM-instellingen toevoegen aan het toepassingsmanifest.

Alle toepassingen moeten hun doelhardware instellen en het bijbehorende headerbestand voor de hardwaredefinitie bevatten.

Koptekstbestanden

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

Vervang path-to-your-target-hardware.h door het pad naar het headerbestand voor uw hardware.

Toepassingsmanifestinstellingen

De PWM-instelling in het toepassingsmanifest bevat de PWM-controllers waartoe de toepassing toegang heeft. Als u deze instellingen wilt configureren, voegt u de Pwm mogelijkheid toe aan het toepassingsmanifest en voegt u vervolgens elke PWM-controller toe aan de mogelijkheid. Het Azure Sphere-toepassingsmanifest bevat meer informatie.

Gebruik in uw code de constanten die zijn gedefinieerd voor uw hardware om de PWM-controllers te identificeren. De compiler vertaalt deze waarden naar onbewerkte waarden wanneer u de app bouwt.

Hier volgt bijvoorbeeld een fragment uit een toepassingsmanifest voor een toepassing die is gericht op een MT3620-referentieontwikkelingsbord (RDB).

 "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]

In het volgende fragment ziet u hoe u dezelfde PWM-controller opgeeft in een toepassing die is gericht op de Avnet MT3620 Starter Kit:

  "Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]

PWM-toegang

Azure Sphere-toepassingen op hoog niveau hebben toegang tot een PWM door Applibs PWM-API's aan te roepen.

Een PWM-controller openen

Als u een PWM-controller wilt openen voor toegang, roept u PWM_Open aan en geeft u als parameter de id door van de controller die moet worden geopend. Er wordt een bestandsdescriptor geretourneerd als de aanroep is geslaagd. Anders wordt -1 geretourneerd.

De status van een PWM-kanaal instellen

Als u de status van een PWM-kanaal wilt instellen of bijwerken, roept u PWM_Apply aan. U geeft de volgende parameters door aan PWM_Apply:

  • De bestandsdescriptor die wordt geretourneerd door PWM_Open

  • Het PWM-kanaal dat moet worden bijgewerkt; deze waarde is platformafhankelijk

  • De periode, taakcyclus en polariteit die op het kanaal moeten worden toegepast

  • Het kanaal in- of uitschakelen

Opmerking

De minimum- en maximumlimieten voor de periode en de gebruikscyclus zijn afhankelijk van het apparaat. Op de MT3620-kern op hoog niveau worden PWM's bijvoorbeeld uitgevoerd met een vaste basisfrequentie van 2 MHz met 16-bits aan/uit-vergelijkingsregisters. Dit zorgt voor een resolutie van 500 ns en een effectieve maximumperiode van ongeveer 32,77 ms. Raadpleeg het gegevensblad van uw specifieke apparaat voor meer informatie.

MT3620-ondersteuning

De ondersteunde PWM-functies voor de MT3620 worden vermeld in MT3620-ondersteuningsstatus. In de gebruikershandleiding voor het MT3620-ontwikkelbord worden de pin-indeling en speldfuncties beschreven.

De MT3620 heeft 12 PWM-kanalen, PWM0 - PWM11. Ze zijn ingedeeld in 3 groepen van 4 kanalen. Elke groep is gekoppeld aan een PWM-controller (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2). De PWM-kanalen en GPIO-pinnen GPIO0 via GPIO11 worden toegewezen aan dezelfde pinnen op de MT3260. Als uw toepassing een PWM-controller gebruikt, worden alle pinnen die aan die controller zijn gekoppeld, toegewezen voor gebruik als PWM-uitvoer. Ze kunnen niet worden gebruikt voor een ander randapparaattype.