Verwenden von UARTs in allgemeinen Anwendungen

Azure Sphere unterstützt universelle asynchrone Empfänger-Transmitter (UARTs) für die serielle Kommunikation. Ein UART ist eine Art integrierter Schaltung, die zum Senden und Empfangen von Daten über einen seriellen Anschluss an einem Computer oder Peripheriegerät verwendet wird. UARTs sind weit verbreitet und für ihre Einfachheit bekannt. Im Gegensatz zu SPI und I2C unterstützen UARTs jedoch nicht mehrere untergeordnete Geräte.

Hinweis

In diesem Thema wird die Verwendung von UARTs in einer allgemeinen Anwendung beschrieben. Informationen zur Verwendung von UART in RTApps finden Sie unter Verwenden von Peripheriegeräten in einer Echtzeitanwendung .

Allgemeine Azure Sphere-Anwendungen können mit UARTs kommunizieren, indem sie Applibs-UART-APIs aufrufen. Das UART_HighLevelApp Beispiel veranschaulicht die Kommunikation mit UARTs auf einem MT3620-Gerät.

UART-Anforderungen

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

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

Headerdateien

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

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

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

Anwendungsmanifesteinstellungen

Die UART-Einstellungen im Anwendungsmanifest listen die UARTs auf, auf die die Anwendung zugreift. Ein UART kann jeweils nur von einer Anwendung verwendet werden. Um diese Einstellungen zu konfigurieren, fügen Sie die Uart Funktion dem Anwendungsmanifest hinzu, und fügen Sie dann jeden UART zur Funktion hinzu. 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 beim Erstellen der App in Rohwerte.

Hier ist beispielsweise ein Auszug aus einem Anwendungsmanifest, das auf ein MT3620-Referenzentwicklungsboard (RDB) abzielt 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 auf das Avnet MT3620 Starter Kit ausgerichtet ist:

"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, den Sie an Funktionen übergeben können, die Vorgänge für den UART ausführen.

Rufen Sie zum Konfigurieren der Einstellungen die funktion UART_InitConfig Function auf, um die UART_Config Strukturstruktur zu initialisieren. Nachdem Sie die UART_Config Struktur initialisiert haben, können Sie die UART-Einstellungen in der Struktur ändern.

Um den UART zu öffnen und die Einstellungen anzuwenden, rufen Sie die funktion UART_Open auf, und übergeben Sie die UART_Config Struktur.

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

Sie können POSIX-Funktionen verwenden, um Lese- und Schreibvorgänge für einen UART auszuführen. Um einen Lesevorgang für einen UART auszuführen, rufen Sie die read()-Funktion auf. Um einen Schreibvorgang für einen UART auszuführen, rufen Sie die write()-Funktion auf.

Schließen eines UART

Rufen Sie zum Schließen des UART die POSIX-Funktion close() auf.

MT3620-Unterstützung

In diesem Abschnitt werden die UART-Optionen beschrieben, die nur beim Ausführen von Azure Sphere auf einem MT3620 gelten.

Die UART-Spezifikationen für den MT3620 sind unter MT3620-Supportstatus aufgeführt. Im Benutzerhandbuch des MT3620-Entwicklungsboards werden das Pinlayout und die Funktionen für die Verdrahtung 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 master Schnittstellen für mt3620, MT3620 RDB und andere MT3620-Hardware definieren. Der Standardspeicherort für den Ordner HardwareDefinitions ist C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions unter Windows und /opt/azurespheresdk/HardwareDefinitions unter Linux.

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

  • Wenn Sie das MT3620-Entwicklungsboard konfigurieren, können Sie einen beliebigen ISU-Port als UART-Schnittstelle verwenden. Wenn Sie einen ISU-Port als UART-Schnittstelle verwenden, können Sie nicht denselben Port wie eine I2C- oder SPI-Schnittstelle verwenden.
  • Baudrate : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000 und 2000000.
  • Datenbit: 5, 6, 7 und 8.
  • Stoppbit: 1 und 2.
  • Parität: ungerade, gerade und keine.
  • Flusssteuerungsmodus: RTS/CTS, XON/XOFF und keine Flusssteuerung.
  • Hardware-Empfangspuffer: 32 Byte.

Bei Verwendung eines UART in einer allgemeinen Anwendung werden nur 4 der fünf verfügbaren ISU-Peripherieblockpins 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 .