在高级应用程序中使用 UART
重要
这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。
Azure Sphere 支持使用通用异步收发器 (UART) 进行串行通信。 UART 是一类集成电路,用于在计算机或外围设备上通过串行端口发送和接收数据。 UART 因为其简单而获得广泛使用,也广为人知。 但与 SPI 和 I2C 不同,UART 不支持多个从属设备。
注意
本主题介绍如何在高级应用程序中使用 UART。 有关在 RTApp 中使用 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 外围设备 。