Dela via


Använda PWM:er i högnivåprogram

Viktigt!

Det här är dokumentationen om Azure Sphere (Legacy). Azure Sphere (Legacy) upphör den 27 september 2027 och användarna måste migrera till Azure Sphere (integrerad) vid den här tiden. Använd versionsväljaren ovanför TOC för att visa dokumentationen om Azure Sphere (integrerad).

Det här avsnittet beskriver hur du kommer åt modulatorer med enhetspulsbredd (PWM) för användning i Azure Sphere-program på hög nivå.

Pulsbreddsmodulering uppnås genom att variera tjänstcykeln (förhållandet mellan tid och ledig tid) för en pulsad digital signal. Modulatorer med pulsbredd används i en mängd olika program, till exempel digital motorstyrning, kommunikation och digital-till-analog-konvertering.

Om du vill använda PWM:er i dina Azure Sphere-program måste du inkludera nödvändiga huvudfiler och Pwm funktioner och ange kontrollanten för PWM-kanalerna som programmet ska komma åt.

Det PWM_HighLevelApp exemplet visar hur du använder PWM i ett enkelt digitalt till analogt konverteringsprogram på en MT3620-enhet.

PWM-krav

Program som använder PWM måste innehålla rätt rubrikfil och lägga till PWM-inställningar i programmanifestet.

Alla program måste ange sin målmaskinvara och inkludera motsvarande rubrikfil för maskinvarudefinition.

Rubrikfiler

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

Ersätt "path-to-your-target-hardware.h" med sökvägen till huvudfilen för maskinvaran.

Inställningar för programmanifest

PWM-inställningen i programmanifestet visar de PWM-kontrollanter som används av programmet. Om du vill konfigurera de här inställningarna lägger du till Pwm funktionen i programmanifestet och lägger sedan till varje PWM-styrenhet i funktionen. Azure Sphere-programmanifestet innehåller mer information.

I koden använder du de konstanter som har definierats för maskinvaran för att identifiera PWM-styrenheterna. Kompilatorn översätter dessa värden till råvärden när du skapar appen.

Här är till exempel ett utdrag från ett programmanifest för ett program som riktar sig till en MT3620-referensutvecklingstavla (RDB).

 "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]

Följande utdrag visar hur du anger samma PWM-styrenhet i ett program som riktar sig till Avnet MT3620 Starter Kit:

  "Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]

PWM-åtkomst

Azure Sphere-program på hög nivå kan komma åt en PWM genom att anropa Applibs PWM-API:er.

Öppna en PWM-styrenhet

Om du vill öppna en PWM-styrenhet för åtkomst anropar du PWM_Open och skickar som en parameter ID:t för kontrollanten som ska öppnas. En filbeskrivning returneras om anropet lyckas. Annars returneras -1.

Ange tillståndet för en PWM-kanal

Om du vill ange eller uppdatera tillståndet för en PWM-kanal anropar du PWM_Apply. Du skickar följande parametrar till PWM_Apply:

  • Filbeskrivningen som returneras av PWM_Open

  • PWM-kanalen som ska uppdateras. det här värdet är plattformsberoende

  • Den period, tjänstcykel och polaritet som ska tillämpas på kanalen

  • Om du vill aktivera eller inaktivera kanalen

Kommentar

Minimi- och maxgränser för period- och tjänstgöringscykel är enhetsberoende. På högnivåkärnan MT3620 körs till exempel PWM:er med en fast basfrekvens på 2 MHz med 16 bitars på/av jämför register. Detta medför en lösning av tullcykeln på 500 ns och en effektiv maximal period på cirka 32,77 ms. Mer information finns i databladet för din specifika enhet.

MT3620-stöd

De PWM-funktioner som stöds för MT3620 visas i supportstatus för MT3620. Användarhandboken för MT3620-utvecklingskortet beskriver pin-layouten och pin-funktionerna.

MT3620 har 12 PWM-kanaler, PWM0 – PWM11. De är ordnade i 3 grupper med 4 kanaler. Varje grupp är associerad med en PWM-styrenhet (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2). PWM-kanalerna och GPIO fäster GPIO0 via GPIO11-kartan på samma stift på MT3260. Om ditt program använder en PWM-styrenhet allokeras alla pins som är associerade med styrenheten för användning som PWM-utdata. De kan inte användas för någon annan kringutrustningstyp.