Verwenden von PWMs in allgemeinen Anwendungen

In diesem Thema wird beschrieben, wie Sie auf PwMs (Pulse-Width-Modulatoren) von Geräten zugreifen, die in allgemeinen Azure Sphere-Anwendungen verwendet werden können.

Die Pulsbreitenmodulation wird erreicht, indem der Tastzyklus (Verhältnis von on time zu off time) eines gepulsten digitalen Signals variiert wird. Impulsbreitenmodulatoren werden in einer Vielzahl von Anwendungen wie digitale Motorsteuerung, Kommunikation und digital-analoge Konvertierung verwendet.

Um PWMs in Ihren Azure Sphere-Anwendungen verwenden zu können, müssen Sie die erforderlichen Headerdateien und Pwm Funktionen einschließen und den Controller für die PWM-Kanäle angeben, auf die Ihre Anwendung zugreift.

Das PWM_HighLevelApp Beispiel veranschaulicht die Verwendung von PWM in einer einfachen digital-analogen Konvertierungsanwendung auf einem MT3620-Gerät.

PWM-Anforderungen

Anwendungen, die PWMs verwenden, müssen die entsprechende Headerdatei enthalten und dem Anwendungsmanifest PWM-Einstellungen hinzufügen.

Alle Anwendungen müssen ihre Zielhardware festlegen und die entsprechende Hardwaredefinitionsheaderdatei enthalten.

Headerdateien

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

Ersetzen Sie "path-to-your-target-hardware.h" durch den Pfad zur Headerdatei für Ihre Hardware.

Anwendungsmanifesteinstellungen

Die PWM-Einstellung im Anwendungsmanifest listet die PWM-Controller auf, auf die die Anwendung zugreift. Um diese Einstellungen zu konfigurieren, fügen Sie die Pwm Funktion dem Anwendungsmanifest hinzu, und fügen Sie dann jeden PWM-Controller zur Funktion hinzu. Das Azure Sphere-Anwendungsmanifest enthält weitere Details.

Verwenden Sie in Ihrem Code die Konstanten, die für Ihre Hardware definiert sind, um die PWM-Controller zu identifizieren. Der Compiler übersetzt diese Werte beim Erstellen der App in Rohwerte.

Hier ist beispielsweise ein Auszug aus einem Anwendungsmanifest für eine Anwendung, die auf ein MT3620 Reference Development Board (RDB) ausgerichtet ist.

 "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]

Der folgende Auszug zeigt, wie Sie denselben PWM-Controller in einer Anwendung angeben, die auf das Avnet MT3620 Starter Kit ausgerichtet ist:

  "Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]

PWM-Zugriff

Allgemeine Azure Sphere-Anwendungen können auf ein PWM zugreifen, indem sie Applibs-PWM-APIs aufrufen.

Öffnen eines PWM-Controllers

Um einen PWM-Controller für den Zugriff zu öffnen, rufen Sie PWM_Open auf, und übergeben Sie als Parameter die ID des zu öffnenden Controllers. Wenn der Aufruf erfolgreich ist, wird ein Dateideskriptor zurückgegeben. Andernfalls wird -1 zurückgegeben.

Festlegen des Status eines PWM-Kanals

Um den Zustand eines PWM-Kanals festzulegen oder zu aktualisieren, rufen Sie PWM_Apply auf. Sie übergeben die folgenden Parameter an PWM_Apply:

  • Der von PWM_Open zurückgegebene Dateideskriptor

  • Der PWM-Kanal, der aktualisiert werden soll; Dieser Wert ist plattformabhängig

  • Zeitraum, Einschaltzyklus und Polarität, die auf den Kanal angewendet werden sollen

  • Ob der Kanal aktiviert oder deaktiviert werden soll

Hinweis

Mindest- und Höchstgrenzwerte für Zeitraum und Arbeitszyklus sind geräteabhängig. Beispielsweise werden PWMs auf dem mt3620-Kern mit einer festen Basisfrequenz von 2 MHz mit 16 Bit Ein-/Aus-Vergleichsregistern ausgeführt. Dies setzt eine Zollzyklusauflösung von 500 ns und einen effektiven Höchstzeitraum von ca. 32,77 ms fest. Ausführliche Informationen finden Sie im Datenblatt Ihres jeweiligen Geräts.

MT3620-Unterstützung

Die unterstützten PWM-Features für den MT3620 sind unter MT3620-Supportstatus aufgeführt. Im Benutzerhandbuch des MT3620-Entwicklungsboards werden das Pinlayout und die Pinfunktionen beschrieben.

Das MT3620 verfügt über 12 PWM-Kanäle, PWM0 - PWM11. Sie sind in 3 Gruppen von 4 Kanälen organisiert. Jede Gruppe ist einem PWM-Controller (PWM-CONTROLLER-0, PWM-CONTROLLER-1, PWM-CONTROLLER-2) zugeordnet. Die PWM-Kanäle und GPIO-Pins GPIO0 bis GPIO11 entsprechen den gleichen Pins auf dem MT3260. Wenn Ihre Anwendung einen PWM-Controller verwendet, werden alle diesem Controller zugeordneten Pins für die Verwendung als PWM-Ausgaben zugewiesen. Sie können nicht für andere Peripheriegerätetypen verwendet werden.