Utilizzare UARTs in applicazioni di alto livello

Azure Sphere supporta i trasmettitori ricevitore asincroni universali (UARTs) per la comunicazione seriale. Un oggetto UART è un tipo di circuito integrato usato per inviare e ricevere dati su una porta seriale di un computer o di una periferica. Gli UART sono ampiamente utilizzati e noti per la loro semplicità. Tuttavia, a differenza di SPI e I2C, gli UART non supportano più dispositivi subordinati.

Nota

Questo argomento descrive come usare gli UARTs in un'applicazione di alto livello. Per informazioni sull'uso di UART in RTApps, vedere Usare le periferiche in un'applicazione in tempo reale .

Le applicazioni di alto livello Azure Sphere possono comunicare con gli UARTs chiamando le API UART Applibs. Nell'esempio UART_HighLevelApp viene illustrato come comunicare con gli UARTs in un dispositivo MT3620.

Requisiti UART

Le applicazioni che comunicano con gli UART devono includere i file di intestazione appropriati e aggiungere le impostazioni UART al manifesto dell'applicazione.

Tutte le applicazioni devono impostare l'hardware di destinazione e includere il file di intestazione di definizione hardware corrispondente.

File di intestazione

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

Dichiarare la definizione del UART_STRUCTS_VERSION preprocessore prima di includere il file di intestazione. Specifica la versione struct usata dall'applicazione.

Sostituire "path-to-your-target-hardware.h" con il percorso del file di intestazione per l'hardware.

Impostazioni del manifesto dell'applicazione

Le impostazioni UART nel manifesto dell'applicazione elencano gli UARTs a cui l'applicazione accede. Solo un'applicazione può usare un oggetto UART alla volta. Per configurare queste impostazioni, aggiungere la Uart funzionalità al manifesto dell'applicazione e quindi aggiungere ogni oggetto UART alla funzionalità. Il manifesto dell'applicazione Azure Sphere ha maggiori dettagli sul manifesto dell'applicazione.

Nel codice utilizzare le costanti definite per l'hardware per identificare gli UARTs. Il compilatore tradurrà questi valori in valori non elaborati quando si compila l'app.

Ad esempio, ecco un estratto di un manifesto dell'applicazione che si rivolge a un consiglio di sviluppo di riferimento (RDB) MT3620 e configura due UART su un MT3620.

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

Il seguente estratto mostra come specificare gli stessi UARTs in un'applicazione che riguarda l'Avnet MT3620 Starter Kit:

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

Configurare e aprire un oggetto UART

Prima di eseguire operazioni su un oggetto UART, è necessario configurare le impostazioni e aprire l'oggetto UART. Quando si apre un oggetto UART, viene restituito un descrittore di file che è possibile passare alle funzioni che eseguono operazioni sulla UART.

Per configurare le impostazioni, chiamare la funzione UART_InitConfig Function per inizializzare la UART_Config Struct struct . Dopo aver inizializzato il UART_Config struct, è possibile modificare le impostazioni UART nella struct.

Per aprire l'oggetto UART e applicare le impostazioni, chiamare la funzione UART_Open e passare la struttura UART_Config.

Eseguire operazioni di lettura e scrittura in un oggetto UART

È possibile usare le funzioni POSIX per eseguire operazioni di lettura e scrittura su un oggetto UART. Per eseguire un'operazione di lettura su un oggetto UART, chiamare la funzione read(). Per eseguire un'operazione di scrittura su un oggetto UART, chiamare la funzione write().

Chiudere un oggetto UART

Per chiudere l'oggetto UART, chiamare la funzione POSIX close().

Supporto per MT3620

Questa sezione descrive le opzioni UART che si applicano solo quando si esegue Azure Sphere su un MT3620.

Le specifiche UART per MT3620 sono elencate nello stato di supporto di MT3620. Il manuale dell'utente della scheda di sviluppo MT3620 descrive il layout dei piedini e le funzioni per il wiring.

La cartella HardwareDefinitions nella directory di installazione di Microsoft Azure Sphere SDK contiene le definizioni per comuni schede di sviluppo, moduli e chip di Azure Sphere. Contiene file di intestazione e JSON che definiscono le interfacce master per MT3620, MT3620 RDB, insieme ad altri hardware MT3620. Il percorso predefinito per la cartella HardwareDefinitions è C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions in Windows e /opt/azurespheresdk/HardwareDefinitions su Linux.

Sono supportate le impostazioni UART seguenti. 8N1 (8 bit di dati, 1 bit di interruzione e nessuna parità) è l'impostazione predefinita:

  • Quando configuri la scheda di sviluppo MT3620, puoi utilizzare qualsiasi porta ISU come interfaccia UART. Quando si utilizza una porta ISU come interfaccia UART, non è possibile usare la stessa porta di un'interfaccia I2C o SPI.
  • velocità di baud: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000, 921600, 1000000, 1152000, 1500000 e 2000000.
  • Bit di dati: 5, 6, 7 e 8.
  • Bit di arresto: 1 e 2.
  • Parità: dispari, pari e nessuno.
  • Modalità controllo flusso: RTS/CTS, XON/XOFF e nessun controllo di flusso.
  • Buffer di ricezione hardware: 32 byte.

Quando si usa un oggetto UART in un'applicazione di alto livello, vengono utilizzati solo 4 dei 5 pin di blocco periferico ISU disponibili. Il pin inutilizzato può essere usato come pin GPIO dalla stessa applicazione di alto livello. Per un elenco dei pin ISU inutilizzati che possono essere riutilizzati per GPIO, vedere Periferiche di I/O .