Freigeben über


Verwenden von UARTs in allgemeinen Anwendungen

Wichtig

Dies ist die Dokumentation zu Azure Sphere (Legacy). Azure Sphere (Legacy) wird am 27. September 2027 eingestellt, und Benutzer müssen bis zu diesem Zeitpunkt zu Azure Sphere (integriert) migrieren. Verwenden Sie die Versionsauswahl oberhalb des Inhaltsverzeichniss, um die Dokumentation zu Azure Sphere (Integriert) anzuzeigen.

Azure Sphere unterstützt UARTs (Universal Asynchronous Receiver-Transmitters) für die serielle Kommunikation. Ein UART ist eine Art integrierter Schaltkreis zum Senden und Empfangen von Daten über einen seriellen Port eines Computers oder Peripheriegeräts. Die Verwendung von UARTs ist weit verbreitet und unkompliziert. Im Gegensatz zu SPI und I2C unterstützen UARTs allerdings nicht mehrere untergeordnete Geräte.

Hinweis

In diesem Thema wird beschrieben, wie UARTs in einer High-Level-Anwendung verwendet werden. Weitere Informationen zur Verwendung von UARTs in RTApps finden Sie unter Verwenden von Peripheriegeräten in einer Echtzeitanwendung.

Azure Sphere-High-Level-Anwendungen können UART-APIs von Applibs aufrufen, um mit UARTs zu kommunizieren. Das UART_HighLevelApp-Beispiel veranschaulicht die Kommunikation mit UARTs für ein MT3620-Gerät.

UART-Anforderungen

Anwendungen, die mit UARTs kommunizieren, müssen die passenden Headerdateien enthalten und dem Anwendungsmanifest UART-Einstellungen hinzufügen.

Alle Anwendungen müssen ihre Zielhardware festlegen und die entsprechende Hardwaredefinitions-Headerdatei einbinden.

Header Files

 #define UART_STRUCTS_VERSION 1
 #include <applibs/uart.h>
 #include "path-to-your-target-hardware.h"

Deklarieren Sie die Präprozessordefinition UART_STRUCTS_VERSION, bevor Sie die Headerdatei einschließen. Hiermit wird die Strukturversion angegeben, die von der Anwendung verwendet wird.

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

Einstellungen für das Anwendungsmanifest

In den UART-Einstellungen im Anwendungsmanifest werden die UARTs aufgeführt, auf die die Anwendung zugreift. Ein UART kann nicht von mehreren Anwendungen gleichzeitig verwendet werden. Fügen Sie dem Anwendungsmanifest die Funktion Uart und der Funktion anschließend die einzelnen UARTs hinzu, um diese Einstellungen zu konfigurieren. Das Azure Sphere-Anwendungsmanifest enthält weitere Details zum Anwendungsmanifest .

Verwenden Sie in Ihrem Code die Konstanten, die für Ihre Hardware definiert sind, um die UARTs zu identifizieren. Der Compiler übersetzt diese Werte in Rohwerte, wenn Sie die App erstellen.

Dies ist beispielsweise ein Auszug aus einem Anwendungsmanifest, das auf ein MT3620-Referenzentwicklungsboard (Reference Development Board, RDB) ausgerichtet ist und zwei UARTs auf einem MT3620 konfiguriert:

"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],

Der folgende Auszug zeigt, wie Sie die gleichen UARTs in einer Anwendung angeben, die das Avnet MT3620 Starter Kit als Ziel verwendet:

"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],

Konfigurieren und Öffnen eines UART

Bevor Sie Vorgänge für einen UART ausführen, müssen Sie die Einstellungen konfigurieren und den UART öffnen. Wenn Sie einen UART öffnen, wird ein Dateideskriptor zurückgegeben. Diesen Deskriptor können Sie an Funktionen übergeben, die Vorgänge für den UART ausführen.

Rufen Sie zum Konfigurieren der Einstellungen die Funktion UART_InitConfig auf, um die Struktur UART_Config zu initialisieren. Nachdem die Struktur „UART_Config“ initialisiert wurde, können Sie die UART-Einstellungen in der Struktur ändern.

Rufen Sie die Funktion UART_Open auf, und übergeben Sie die Struktur „UART_Config“, um den UART zu öffnen und die Einstellungen anzuwenden.

Ausführen von Lese- und Schreibvorgängen für einen UART

Lese- und Schreibvorgänge für einen UART können mithilfe von POSIX-Funktionen ausgeführt werden. Wenn Sie einen Lesevorgang für einen UART ausführen möchten, rufen Sie die Funktion „read()“ auf. Wenn Sie einen Schreibvorgang für einen UART ausführen möchten, rufen Sie die Funktion „write()“ auf.

Schließen eines UART

Wenn Sie den UART schließen möchten, rufen Sie die POSIX-Funktion „close()“ auf.

MT3620-Unterstützung

In diesem Abschnitt werden die UART-Optionen beschrieben, die nur gelten, wenn Azure Sphere auf einem MT3620-Gerät ausgeführt wird.

Die UART-Spezifikationen für das MT3620-Gerät sind unter Status der MT3620-Unterstützung aufgeführt. Im MT3620-Entwicklungsboard-Benutzerhandbuch werden das Pin-Layout und Funktionen für die Verkabelung beschrieben.

Der Ordner "HardwareDefinitions" im Installationsverzeichnis des Microsoft Azure Sphere SDK enthält Definitionen für allgemeine Azure Sphere-Entwicklungsboards, -Module und -Chips. Sie enthält Header- und JSON-Dateien, die die Masterschnittstellen für die MT3620-, MT3620-RDB- und andere MT3620-Hardware definieren. Der Standardspeicherort für den Ordner "HardwareDefinitions" befindet sich C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions unter Windows und /opt/azurespheresdk/HardwareDefinitions unter Linux.

Das Azure Sphere Samples-Repository auf GitHub enthält Header- und JSON-Dateien, die SPI-Masterschnittstellen für den MT3620-Chip und MT3620 RDB sowie andere MT3620-Hardware definieren.-->

Folgende UART-Einstellungen werden unterstützt. 8N1 (acht Datenbits, ein Stoppbit und keine Parität) ist die Standardeinstellung:

  • Beim Konfigurieren des MT3620-Entwicklungsboards können Sie einen beliebigen ISU-Port als UART-Schnittstelle verwenden. Wenn Sie einen ISU-Port als UART-Schnittstelle nutzen, können Sie den gleichen Port nicht als I2C- oder SPI-Schnittstelle verwenden.
  • Baudsatz : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000 und 200000.
  • Datenbit: 5, 6, 7 und 8.
  • Stoppbit: 1 und 2.
  • Parität: „Ungerade“, „Gerade“ und „Keine“.
  • Ablaufsteuerungsmodus: RTS/CTS, XON/XOFF und keine Flusssteuerung.
  • Hardware-Empfangspuffer: 32 Byte.

Bei Verwendung einer UART in einer high-level-Anwendung werden nur 4 der 5 verfügbaren ISU-Peripherieblock-Pins verwendet. Der nicht verwendete Pin kann von derselben allgemeinen Anwendung als GPIO-Pin verwendet werden. Eine Liste der nicht verwendeten ISU-Pins, die für GPIO wiederverwendet werden können, finden Sie unter "E/A-Peripheriegeräte".