在高階應用程式中使用 SPI

Azure 球體在主模式中支援序列介面 (SPI) 。 SPI 是介面和整合回路之間的通訊所用的序列介面。 SPI 使用主機型/從屬模型,其中主裝置可控制一組部屬裝置。 與 I2C相反,SPI 可以搭配更複雜的高速周邊裝置使用。

應用程式可以透過 SPI 存取周邊設備,方法是呼叫 Applibs SPI API 在 SPI 主介面上執行操作。 LSM6DS3 SPI 範例說明如何在 MT3620 裝置上設定 SPI 硬體並在應用程式中使用 SPI。

選取晶片

晶片選取可管理 SPI 主介面與一組附屬裝置之間的連線;並允許主介面個別傳送和接收資料到每個部屬裝置。 Azure 球體支援晶片選取的主動式低和主動式高設定,使用中低則做為預設設定。 每個 SPI 主介面只能由一個應用程式使用。 應用程式必須先開啟 SPI 主介面,並識別每個連接的部屬裝置,才能在介面上執行讀取和寫入作業。 Azure 球體上的 SPI 讀取和寫入作業會使用封鎖 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」取代為硬體頁首檔案的路徑。

應用程式資訊清單設定

若要使用 SPI API,您必須將該 SpiMaster 功能新增至應用程式資訊清單,然後將每個 SPI 主控制器新增至該功能。 這可讓應用程式存取控制器。 Azure 球體應用程式資訊清單 具有更多有關應用程式資訊清單的詳細資料。

在程式碼中,使用為硬體定義的常數來識別 SPI 主介面。 當您建立應用程式時,編譯器會將這些值翻譯成原始值。

例如,以下是針對 MT3620 參考開發面板 (RDB) 並設定兩個 SPI 主介面的應用程式資訊清單摘要:

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

下列摘要說明如何在針對 Avnet MT3620 Starter Kit的應用程式中指定相同的 SPI 主介面:

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

設定晶片選取並開啟 SPI 主介面

在執行 SPI 主介面的操作之前,您必須先設定選取晶片並開啟介面。 若要設定選取晶片,請呼叫 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 主介面,請致電 SPIMaster_Openfunction。 這會將預設設定套用至介面,並套用晶片選取設定:

  • SPI_Mode_0 以取得 SPI 位順序
  • SPI_BitOrder_MsbFirst 以取得通訊模式

更新 SPI 主介面的設定

初始化之後,您可以變更介面的設定:

在 SPI 主介面上執行讀取和寫入作業

Azure 球體支援數個選項,可用 SPI 執行讀取和寫入作業。 若要執行單向讀取或寫入作業,以及維持某些 POSIX API 的互通性,您可以呼叫 POSIX 讀取 (2) ,並撰寫 (2) 函數。

您可以呼叫 SPIMaster_WriteThenRead 函數,在單一總線交易中執行合併寫入,然後讀取作業,而不中斷另一個交易。

當您需要更精確地控制讀取或寫入作業之間的時間時,請呼叫 SPIMaster_TransferSequential 函數。 這可讓您在一組 CS 啟用和停用狀態之間執行多個讀取和寫入作業。

關閉 SPI 介面

若要關閉介面,請呼叫標準 POSIX 函數關閉 () 。

MT3620 支援

本節說明只有在 MT3620 開發面板上執行 Azure 球體時才適用的 SPI 選項。

MT3620 的 SPI 規格列在 MT3620 支援狀態中。 MT3620 開發面板使用者指南說明針腳配置和連接功能。

Microsoft Azure 球體 SDK 安裝目錄中的 [HardwareDefinitions] 資料夾包含常見 Azure 球體開發面板、模組和晶片的定義。 它包含可定義 MT3620、MT3620 RDB 主介面以及其他 MT3620 硬體的頁首和 JSON 檔案。 HardwareDefinitions 資料夾的預設位置是在 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions Windows 和 /opt/azurespheresdk/HardwareDefinitions Linux 上。

  • 當您設定 MT3620 開發人員面板時,您可以使用任何 ISU 埠做為 SPI 主介面。 您最多可以將兩個部屬裝置連線到每個 ISU。 當您使用 ISU 埠做為 SPI 主介面時,您無法使用與 I2C 或 UART 介面相同的埠。
  • MT3620 支援高達 40 MHz 的 SPI 交易。
  • MT3620 不支援在單一總線交易中同時 (全雙面) SPI 作業。