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.