Использование UART в высокоуровневых приложениях

Azure Sphere поддерживает универсальные асинхронные приемники-преобразователи (UART) для последовательной связи. UART — это тип интегральной схемы, которая используется для отправки и получения данных через последовательный порт на компьютере или периферийном устройстве. UART широко используются и известны своей простотой. Однако, в отличие от SPI и I2C, UART не поддерживают несколько подчиненных устройств.

Примечание

В этом разделе описывается использование UART в высокоуровневом приложении. Сведения об использовании UART в RTApp см. в статье Использование периферийных устройств в приложении с поддержкой реального времени .

Высокоуровневые приложения Azure Sphere могут взаимодействовать с UART, вызывая API UART Applibs. В примере UART_HighLevelApp показано, как взаимодействовать с UART на устройстве MT3620.

Требования 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. Компилятор преобразует эти значения в необработанные значения при сборке приложения.

Например, ниже приведен фрагмент манифеста приложения, который предназначен для эталонной платформы разработки (RDB) MT3620 и настраивает два UART на MT3620.

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

В следующем фрагменте показано, как указать те же UART в приложении, которое предназначено для начального комплекта Avnet MT3620:

"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

В этом разделе описываются параметры UART, которые применяются только при запуске Azure Sphere в MT3620.

Спецификации UART для MT3620 перечислены в разделе Состояние поддержки MT3620. В руководстве пользователя на плате разработки MT3620 описаны макет и функции контактов для подключения.

Папка HardwareDefinitions в каталоге установки пакета SDK microsoft Azure Sphere содержит определения для общих плат разработки, модулей и микросхем Azure Sphere. Он содержит файлы заголовков и JSON, определяющие интерфейсы master для MT3620, MT3620 RDB, а также другого оборудования MT3620. Папка HardwareDefinitions по умолчанию находится C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions в Windows и /opt/azurespheresdk/HardwareDefinitions Linux.

Репозиторий примеров Azure Sphere на GitHub содержит файлы заголовков и JSON, которые определяют интерфейсы SPI master для микросхемы MT3620 и MT3620 RDB, а также другого оборудования MT3620.>

Поддерживаются следующие параметры UART. 8N1 (8 битов данных, 1 стоп-бит и без четности) — это параметр по умолчанию:

  • При настройке платы разработки MT3620 в качестве интерфейса UART можно использовать любой порт ISU . При использовании порта 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 в высокоуровневом приложении используются только 4 из 5 доступных периферийных блок-контактов ISU. Неиспользуемый контакт можно использовать в качестве контакта GPIO в том же высокоуровневом приложении. Список неиспользуемых контактов ISU, которые можно повторно использовать для GPIO, см. в разделе Периферийные устройства ввода-вывода .