在高级应用程序中使用 UART

Azure Sphere 支持用于串行通信的通用异步接收器 (UART) 。 UART 是一种用于通过计算机或外围设备上的串行端口发送和接收数据的集成电路。 UART 被广泛使用,以其简单性而闻名。 但是,与 SPII2C 不同,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 开发板、模块和芯片的定义。 它包含用于定义 MT3620、MT3620 RDB 以及其他 MT3620 硬件的主接口的标头和 JSON 文件。 HardwareDefinitions 文件夹的默认位置在 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions Windows 和 /opt/azurespheresdk/HardwareDefinitions Linux 上。

GitHub 上的 Azure Sphere 示例存储库包含标头和 JSON 文件,这些文件为 MT3620 芯片MT3620 RDB以及其他 MT3620 硬件定义 SPI 主接口。-->

支持以下 UART 设置。 默认设置为 8N1 (8 个数据位、1 个停止位,并且没有奇偶校验) :

  • 配置 MT3620 开发板时,可以使用任何 ISU 端口作为 UART 接口。 将 ISU 端口用作 UART 接口时,不能使用与 I2C 或 SPI 接口相同的端口。
  • baud 速率: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 外围设备