Usare UART in applicazioni di alto livello
Importante
Questa è la documentazione di Azure Sphere (legacy). Azure Sphere (legacy) viene ritirato il 27 settembre 2027 e gli utenti devono eseguire la migrazione ad Azure Sphere (integrato) entro questo periodo. Usare il selettore di versione posizionato sopra il sommario per visualizzare la documentazione di Azure Sphere (integrata).
Azure Sphere supporta i dispositivi UART (Universal Asynchronous Receiver-Transmitter) per la comunicazione seriale. Un UART è un tipo di circuito integrato usato per inviare e ricevere dati tramite una porta seriale di un computer o di un dispositivo periferico. I dispositivi UART sono ampiamente diffusi e sono 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 UART in un'applicazione di alto livello. Per informazioni sull'uso di UART in RTApps, vedere Usare periferiche in un'applicazione con funzionalità in tempo reale.
Le applicazioni di alto livello di Azure Sphere possono comunicare con gli UART chiamando le API UART di Applibs. L'esempio UART_HighLevelApp illustra come comunicare con gli UART in un dispositivo MT3620.
Requisiti di UART
Le applicazioni che comunicano con gli UART devono includere i file di intestazione appropriati e aggiungere le impostazioni di UART al manifesto dell'applicazione.
Tutte le applicazioni devono impostare il relativo hardware di destinazione e includere il corrispondente file di intestazione di definizione dell'hardware.
File di intestazione
#define UART_STRUCTS_VERSION 1
#include <applibs/uart.h>
#include "path-to-your-target-hardware.h"
Dichiarare la definizione del preprocessore UART_STRUCTS_VERSION
prima di includere il file di intestazione. Specifica la versione dello struct usato dall'applicazione.
Sostituire "path-to-your-target-hardware.h" con il percorso del file di intestazione dell'hardware in uso.
Impostazioni del manifesto dell'applicazione
Le impostazioni di UART nel manifesto dell'applicazione includono gli UART accessibili dall'applicazione. Ogni dispositivo UART può essere usato da una sola applicazione alla volta. Per configurare queste impostazioni, aggiungere la funzionalità Uart
al manifesto dell'applicazione e quindi aggiungere ogni UART a tale funzionalità. Il manifesto dell'applicazione Azure Sphere contiene altri dettagli sul manifesto dell'applicazione.
Nel codice usare le costanti definite per l'hardware in uso per identificare gli UART. Il compilatore convertirà questi valori in valori non elaborati quando si compila l'app.
Ad esempio, di seguito è riportato un estratto di un manifesto dell'applicazione che ha come destinazione una scheda di sviluppo di riferimento (Reference Development Board, RDB) MT3620 e configura due UART su MT3620.
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
Nell'estratto seguente viene illustrato come specificare gli stessi UART in un'applicazione che ha come destinazione Avnet MT3620 Starter Kit:
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
Configurare e aprire un dispositivo UART
Prima di eseguire operazioni con un dispositivo UART, è necessario configurare le impostazioni e aprirlo. Quando si apre un UART, viene restituito un descrittore di file che è possibile passare alle funzioni che eseguono operazioni con il dispositivo UART.
Per configurare le impostazioni, chiamare la funzione UART_InitConfig per inizializzare lo struct UART_Config. Dopo aver inizializzato lo struct UART_Config, è possibile cambiare le impostazioni del dispositivo UART al suo interno.
Per aprire il dispositivo UART e applicare le impostazioni, chiamare la funzione UART_Open e passare lo struct UART_Config.
Eseguire operazioni di lettura e scrittura in un dispositivo UART
È possibile usare funzioni POSIX per eseguire operazioni di lettura e scrittura in un dispositivo UART. Per eseguire un'operazione di lettura in un dispositivo UART, chiamare la funzione read(). Per eseguire un'operazione di scrittura in un dispositivo UART, chiamare la funzione write().
Chiudere un dispositivo UART
Per chiudere il dispositivo UART, chiamare la funzione POSIX close().
Supporto di MT3620
Questa sezione descrive le opzioni di UART applicabili solo quando si esegue Azure Sphere su MT3620.
Le specifiche di UART per MT3620 sono indicate in MT3620: stato del supporto. Il manuale utente della scheda di sviluppo MT3620 descrive il layout dei pin e le funzioni per il cablaggio.
La cartella HardwareDefinitions nella directory di installazione di Microsoft Azure Sphere SDK contiene definizioni per schede di sviluppo, moduli e chip di Azure Sphere comuni. 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 si trova C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
in Windows e /opt/azurespheresdk/HardwareDefinitions
in Linux.
Il repository di esempi di Azure Sphere in GitHub contiene file di intestazione e JSON che definiscono interfacce master SPI per il chip MT3620 e MT3620 RDB, insieme ad altri hardware MT3620.>
Sono supportate le impostazioni di UART seguenti. 8N1 (8 bit di dati, 1 bit di stop e nessuna parità) è l'impostazione predefinita:
- Quando si configura la scheda di sviluppo MT3620, è possibile usare qualsiasi porta ISU come interfaccia UART. Se si usa una porta ISU come interfaccia UART, non è possibile usare la stessa porta come interfaccia I2C o SPI.
- baud rate : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 50000, 576000, 921600, 100000, 1152000, 1500000 e 2000000.
- Bit di dati: 5, 6, 7 e 8.
- Bit di arresto: 1 e 2.
- Parità: dispari, pari e nessuna.
- Modalità di controllo del flusso: RTS/CTS, XON/XOFF e nessun controllo del flusso.
- Buffer di ricezione hardware: 32 byte.
Quando si usa un UART in un'applicazione di alto livello, vengono usati solo 4 dei 5 pin di blocco delle periferiche ISU disponibili. Il pin inutilizzato può essere usato come pin GPIO dalla stessa applicazione di alto livello. Vedere Periferiche di I/O per un elenco dei pin ISU inutilizzati che possono essere riutilizzati per GPIO.