Бөлісу құралы:


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

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

Приложения могут получить доступ к периферийным устройствам через SPI, вызывая API-интерфейсы SPI Applibs для выполнения операций с интерфейсом SPI master. В примере SPI LSM6DS3 описывается, как настроить оборудование для SPI на устройстве MT3620 и использовать SPI в приложении.

Выбор микросхемы

Выбор микросхемы управляет подключением между интерфейсом SPI master и набором подчиненных устройств и позволяет интерфейсу master отправлять и получать данные на каждое подчиненное устройство независимо. Azure Sphere поддерживает параметры "активный-низкий" и "активный-высокий" для выбора микросхемы с параметром "активный-низкий" в качестве параметра по умолчанию. Каждый интерфейс SPI master может использоваться исключительно одним приложением. Перед выполнением операций чтения и записи в интерфейсе приложение должно открыть интерфейс SPI master и определить каждое подключенное подчиненное устройство. Операции чтения и записи SPI в Azure Sphere используют блокирующие API.

Требования SPI

Приложения, использующие SPI, должны включать соответствующие файлы заголовков для SPI и добавлять параметры SPI в манифест приложения.

Все приложения должны задать целевое оборудование и включить соответствующий файл заголовка определения оборудования.

Файлы заголовков

 #define SPI_STRUCTS_VERSION 1
 #include <applibs/spi.h>
 #include "path-to-your-target-hardware.h"

Объявите SPI_STRUCTS_VERSION определение препроцессора перед включением файла заголовка. Это указывает версию структуры, используемую приложением.

Замените path-to-your-target-hardware.h путем к файлу заголовка для оборудования.

Параметры манифеста приложения

Чтобы использовать API SPI, необходимо добавить возможность в SpiMaster манифест приложения, а затем добавить каждый контроллер SPI master в эту возможность. Это позволяет приложению получить доступ к контроллеру. Манифест приложения Azure Sphere содержит дополнительные сведения о манифесте приложения.

В коде используйте константы, определенные для оборудования, чтобы определить интерфейсы SPI master. Компилятор преобразует эти значения в необработанные значения при сборке приложения.

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

"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],

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

"SpiMaster": [ "$AVNET_MT3620_SK_ISU0_SPI", "$AVNET_MT3620_SK_ISU1_SPI" ]

Настройка выбора микросхемы и открытие интерфейса SPI master

Перед выполнением операций с интерфейсом SPI master необходимо настроить выбор микросхемы и открыть интерфейс. Чтобы настроить выбор микросхемы, вызовите функцию SPIMaster_InitConfig для инициализации структуры структуры SPIMaster_Config . После инициализации SPIMaster_Config обновите csPolarity поле с помощью SPI_ChipSelectPolarity_ActiveLow.. /reference/applibs/ity_Activ.. /reference/applibs/rence/applibs/applibs-spi/enum-spi-chipselectpolarity.md).

Чтобы открыть интерфейс SPI master, вызовите SPIMaster_Openfunction. При этом будут применены параметры по умолчанию к интерфейсу и параметры выбора микросхемы:

  • SPI_Mode_0 для битового порядка SPI
  • SPI_BitOrder_MsbFirst для режима связи

Обновление параметров интерфейса SPI master

После инициализации можно изменить параметры интерфейса:

Выполнение операций чтения и записи в интерфейсе SPI master

Azure Sphere поддерживает несколько вариантов выполнения операций чтения и записи с помощью SPI. Для односторонних операций чтения или записи, а также для обеспечения взаимодействия с некоторыми API-интерфейсами POSIX можно вызывать функции чтения (2) и записи (2) POSIX.

Вы можете вызвать функцию SPIMaster_WriteThenRead для выполнения объединенной операции записи, а затем чтения в одной транзакции шины без прерывания другой транзакции.

Вызовите функцию SPIMaster_TransferSequential , если требуется более точный контроль времени между операциями чтения и записи. Это позволяет выполнять несколько операций чтения и записи между парой состояний включения и отключения CS.

Закрытие интерфейса SPI

Чтобы закрыть интерфейс, вызовите стандартную функцию POSIX close().

Поддержка MT3620

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

Спецификации SPI для 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.

  • При настройке платы разработки MT3620 в качестве интерфейса SPI master можно использовать любой порт ISU. К каждому isU можно подключить до двух подчиненных устройств. При использовании порта ISU в качестве интерфейса SPI master нельзя использовать тот же порт, что и интерфейс I2C или UART.
  • MT3620 поддерживает транзакции SPI с частотой до 40 МГц.
  • MT3620 не поддерживает одновременные двунаправленные операции чтения и записи (полнодуплексные) ОПЕРАЦИИ SPI в рамках одной транзакции шины.