在高階應用程式中使用UART
重要
這是 Azure Sphere (舊版) 檔。 Azure Sphere(舊版)將於 2027 年 9 月 27 日淘汰,且使用者此時必須移轉至 Azure Sphere(整合式)。 使用位於 TOC 上方的版本選取器來檢視 Azure Sphere (整合式) 檔。
Azure Sphere 支援用於序列通訊的通用異步接收者傳輸器(UART)。 UART 是一種積體電路,可用來透過電腦或周邊裝置上的序列埠來傳送和接收數據。 UART 廣泛使用,並以其簡單性而聞名。 不過,不同於 SPI 和 I2C,UART 不支援多個次級裝置。
注意
本主題描述如何在高階應用程式中使用UART。 如需 RTApps 中使用 UART 的相關信息,請參閱 在即時可用的應用程式中 使用周邊。
Azure Sphere 高階應用程式可以藉由呼叫 Applibs UART API 來與 UART 通訊。 UART_HighLevelApp範例示範如何在 MT3620 裝置上與 UART 通訊。
UART 需求
與 UART 通訊的應用程式必須包含適當的頭檔,並將 UART 設定新增至 應用程式指令清單。
所有應用程式都必須 設定其目標硬體 ,並包含對應的硬體定義頭檔。
標頭檔
#define UART_STRUCTS_VERSION 1
#include <applibs/uart.h>
#include "path-to-your-target-hardware.h"
UART_STRUCTS_VERSION
先宣告預處理器定義,再包含頭檔。 這會指定應用程式所使用的結構版本。
將 「path-to-your-target-hardware.h」 取代為硬體頭文件的路徑。
應用程式指令清單設定
應用程式指令清單中的 UART 設定會列出應用程式所存取的 UART。 一次只能有一個應用程式使用UART。 若要設定這些設定,請將功能新增 Uart
至應用程式指令清單,然後將每個 UART 新增至功能。 Azure Sphere 應用程式指令清單 有更多應用程式指令清單的詳細數據。
在您的程式代碼中,使用為硬體定義的常數來識別 UART。 當您建置應用程式時,編譯程式會將這些值轉譯為原始值。
例如,以下是以 MT3620 參考開發板 (RDB) 為目標的應用程式指令清單摘錄,並在 MT3620 上設定兩個 UART。
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
下列摘錄顯示如何在以 Avnet MT3620 入門套件為目標的應用程式中指定相同的 UART:
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
設定並開啟UART
在UART上執行作業之前,您必須先設定設定並開啟UART。 當您開啟 UART 時,會傳回檔案描述元,您可以傳遞至在 UART 上執行作業的函式。
若要設定設定,請呼叫 UART_InitConfig 函式來初始化 UART_Config 結構。 初始化UART_Config結構之後,您可以變更結構中的 UART 設定。
若要開啟 UART 並套用設定,請呼叫 UART_Open 函式,並傳遞UART_Config結構。
在 UART 上執行讀取和寫入作業
您可以使用 POSIX 函式在 UART 上執行讀取和寫入作業。 若要在 UART 上執行讀取作業,請呼叫 read() 函式。 若要在 UART 上執行寫入作業,請呼叫 write() 函式。
關閉 UART
若要關閉 UART,請呼叫 POSIX 函式 close()。
MT3620 支援
本節說明只有在 MT3620 上執行 Azure Sphere 時才適用的 UART 選項。
MT3620 的UART規格列在 MT3620支援狀態中。 MT3620 開發板使用者指南說明線路的針腳配置和功能。
Microsoft Azure Sphere SDK 安裝目錄中的 HardwareDefinitions 資料夾包含一般 Azure Sphere 開發板、模組和晶片的定義。 其中包含標頭和 JSON 檔案,這些檔案會定義 MT3620、MT3620 RDB 和其他 MT3620 硬體的主要介面。 HardwareDefinitions 資料夾的預設位置位於 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
Windows 和 /opt/azurespheresdk/HardwareDefinitions
Linux 上。
GitHub 上的 Azure Sphere 範例存放庫包含標頭和 JSON 檔案,可定義 MT3620 晶片和 MT3620 RDB 的 SPI 主要介面,以及其他 MT3620 硬體。-->
支援下列 UART 設定。 8N1 (8 個數據位、1 個停止位和無同位)是預設設定:
- 當您設定 MT3620 開發面板時,可以使用任何 ISU 埠作為 UART 介面。 當您使用 ISU 連接埠做為 UART 介面時,您無法使用與 I2C 或 SPI 介面相同的連接埠。
- baud rate: 1200, 2400, 4800, 9600, 19200、38400、57600、115200、230400、460800、500000、576000、921600、1000000、1152000、1500000 和 2000000。
- 數據位:5、6、7 和 8。
- 停止位:1 和 2。
- 同位:奇數、偶數和無。
- 流量控制模式:RTS/CTS、XON/XOFF 和無流量控制。
- 硬體接收緩衝區:32 位元組。
在高階應用程式中使用 UART 時,只會使用 5 個可用的 ISU 周邊區塊針腳中的 4 個。 未使用的針腳可以做為相同高階應用程式的 GPIO 針腳。 如需可用於 GPIO 的未使用 ISU 針腳清單,請參閱 I/O 周邊 。