Dela via


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

Azure Sphere stöder UARTs (Universal asynchronous receiver-transmitters) för seriell kommunikation. En UART är en typ av integrerad krets som används för att skicka och ta emot data över en seriell port på en dator eller kringutrustning. UARTs används ofta och är kända för sin enkelhet. Till skillnad från SPI och I2C stöder dock inte UARTs flera underordnade enheter.

Observera

I det här avsnittet beskrivs hur du använder UARTs i ett program på hög nivå. Mer information om UART-användning i RTApps finns i Använda kringutrustning i ett program som kan användas i realtid .

Azure Sphere-program på hög nivå kan kommunicera med UARTs genom att anropa Applibs UART-API:er. Det UART_HighLevelApp exemplet visar hur du kommunicerar med UARTs på en MT3620-enhet.

UART-krav

Program som kommunicerar med UARTs måste innehålla lämpliga rubrikfiler och lägga till UART-inställningar i programmanifestet.

Alla program måste ange målmaskinvara och inkludera motsvarande rubrikfil för maskinvarudefinition.

Rubrikfiler

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

Deklarera förprocessordefinitionen UART_STRUCTS_VERSION innan rubrikfilen inkluderas. Detta anger den struct-version som används av programmet.

Ersätt "path-to-your-target-hardware.h" med sökvägen till huvudfilen för maskinvaran.

Inställningar för programmanifest

UART-inställningarna i programmanifestet listar de UARTs som programmet använder. Endast ett program kan använda UART i taget. Om du vill konfigurera de här inställningarna lägger du till Uart funktionen i programmanifestet och lägger sedan till varje UART i funktionen. Azure Sphere-programmanifestet innehåller mer information om programmanifestet.

Använd konstanterna som har definierats för maskinvaran i koden för att identifiera UARTs. 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 som riktar in sig på en MT3620-referensutvecklingstavla (RDB) och konfigurerar två UARTs på en MT3620.

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

Följande utdrag visar hur du anger samma UARTs i ett program som riktar sig till Avnet MT3620 Starter Kit:

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

Konfigurera och öppna en UART

Innan du utför åtgärder på en UART måste du konfigurera inställningarna och öppna UART. När du öppnar en UART returneras en filbeskrivning som du kan överföra till funktioner som utför åtgärder på UART.

Om du vill konfigurera inställningarna anropar du funktionen UART_InitConfig för att initiera UART_Config Struct-struct . När du har initierat UART_Config struct kan du ändra UART-inställningarna i struct.

Om du vill öppna UART och tillämpa inställningarna anropar du funktionen UART_Open och skickar UART_Config struct.

Utföra läs- och skrivåtgärder på en UART

Du kan använda POSIX-funktioner för att utföra läs- och skrivåtgärder på en UART. Om du vill utföra en läsåtgärd på ett UART-objekt anropar du funktionen read(). Om du vill utföra en skrivåtgärd på en UART anropar du funktionen skriv().

Stänga en UART

Stäng UART genom att anropa POSIX-funktionen close().

MT3620-support

I det här avsnittet beskrivs de UART-alternativ som bara gäller när du kör Azure Sphere på en MT3620.

UART-specifikationerna för MT3620 visas i supportstatusen för MT3620. Användarhandboken för utvecklingstavlan för MT3620 beskriver pin-layouten och funktionerna för ledningar.

Mappen HardwareDefinitions i installationskatalogen Microsoft Azure Sphere SDK innehåller definitioner för vanliga azure sphere-utvecklingstavlor, moduler och kretsar. Den innehåller rubrik- och JSON-filer som definierar huvudgränssnitten för MT3620, MT3620 RDB, tillsammans med annan MT3620-maskinvara. Standardplatsen för mappen HardwareDefinitions är C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions i Windows och /opt/azurespheresdk/HardwareDefinitions linux.

Följande UART-inställningar stöds. 8N1 (8 databitar, 1 stoppbit och ingen paritet) är standardinställningen:

  • När du konfigurerar utvecklingskortet för MT3620 kan du använda valfri ISU-port som ett UART-gränssnitt. När du använder en ISU-port som ett UART-gränssnitt kan du inte använda samma port som ett I2C- eller SPI-gränssnitt.
  • baud rate : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000 och 2000000.
  • Databit: 5, 6, 7 och 8.
  • Stoppbit: 1 och 2.
  • Paritet: udda, jämna och inga.
  • Flödeskontrollläge: RTS/CTS, XON/XOFF och ingen flödeskontroll.
  • Buffert för maskinvaru mottagning: 32 byte.

När du använder en UART i ett program på hög nivå används endast 4 av de 5 tillgängliga ISU-koderna. Den oanvända kartnålen kan användas som en GPIO-kartnål av samma program på hög nivå. I I/O-kringutrustning finns en lista över oanvända ISU-stift som kan återanvändas för GPIO.