Dela via


Använda PWMs i program på hög nivå

I det här avsnittet beskrivs hur du kommer åt enhetsmodulatorer med pulsbredd (PWMs) för användning i azure sphere-program på hög nivå.

Pulsbreddsmodulering uppnås genom att variera jourcykeln (förhållandet mellan tid och ledig tid) för en pulserad digital signal. Pulsbreddsmodulatorer används i en mängd olika tillämpningar, till exempel digital motorstyrning, kommunikation och digital till analog konvertering.

Om du vill använda PWMs i dina Azure Sphere-program måste du ta med de nödvändiga huvudfilerna och Pwm -funktionen och ange kontrollen för PWM-kanalerna som programmet kommer åt.

Det PWM_HighLevelApp exemplet visar hur du använder PWM i en enkel digital till analog konvertering på en MT3620-enhet.

PWM-krav

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

Alla program måste ange 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-styrenheter som åtkomst ges 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-kontroll i funktionen. Azure Sphere-programmanifestet innehåller mer information.

Använd konstanterna som har definierats för maskinvaran i koden för att identifiera PWM-kontrollerna. Kompilatorn översätter dessa värden till raw-värden när du skapar appen.

Här är till exempel ett utdrag från ett programmanifest för ett program som riktar in sig på 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-kontroll för åtkomst anropar du PWM_Open och skickar som parameter ID för den kontrollant som ska öppnas. En filbeskrivning returneras om samtalet 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 ringer du PWM_Apply. Du skickar följande parametrar till PWM_Apply:

  • Filbeskrivning som returneras av PWM_Open

  • PWM-kanalen som ska uppdateras. detta värde är plattformsberoende

  • Den period, tjänstcykel och polaritet som gäller för kanalen

  • Om du vill aktivera eller inaktivera kanalen

Observera

Minimi- och maxgränser för period och tjänstgöringsperiod är beroende av enheten. På den högnivåkärnan MT3620 körs pwms till exempel med en fast basfrekvens på 2 MHz med 16 bitars på/av jämför register. Detta innebä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-support

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

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 programmet använder en PWM-styrenhet tilldelas alla stift som är kopplade till den kontrollen för användning som PWM-utdata. De kan inte användas för någon annan kringutrustningstyp.