Sdílet prostřednictvím


Použití rozhraní SPI v aplikacích vysoké úrovně

Důležité

Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.

Azure Sphere podporuje rozhraní SPI (Serial Peripheral Interface) v hlavním režimu. SPI je sériové rozhraní používané pro komunikaci mezi periferními zařízeními a integrovanými obvody. SpI používá hlavní/podřízený model, kde hlavní zařízení řídí sadu podřízených zařízení. Na rozdíl od I2C lze SPI použít s složitějšími periferními zařízeními s vyšší rychlostí.

Aplikace mají přístup k periferním zařízení prostřednictvím rozhraní SPI voláním rozhraní API služby Applibs SPI, která provádějí operace s hlavním rozhraním SPI. Ukázka LSM6DS3 SPI popisuje, jak nakonfigurovat hardware pro rozhraní SPI na zařízení MT3620 a používat rozhraní SPI v aplikaci.

Výběr čipu

Výběr čipu spravuje připojení mezi hlavním rozhraním SPI a sadou podřízených zařízení; a umožňuje hlavnímu rozhraní odesílat a přijímat data do každého podřízeného zařízení nezávisle. Azure Sphere podporuje nastavení typu aktivní-nízká a aktivní-vysoká pro výběr čipu, přičemž výchozí nastavení je aktivní-nízké. Každé hlavní rozhraní SPI může používat výhradně jedna aplikace. Aplikace musí otevřít hlavní rozhraní SPI a před provedením operací čtení a zápisu v rozhraní identifikovat každé připojené podřízené zařízení. Operace čtení a zápisu spI v Azure Sphere používají blokující rozhraní API.

Požadavky spi

Aplikace, které používají rozhraní SPI, musí obsahovat příslušné soubory hlaviček pro rozhraní SPI a přidat nastavení SPI do manifestu aplikace.

Všechny aplikace musí nastavit cílový hardware a zahrnout odpovídající soubor hlavičky definice hardwaru.

Soubory hlaviček

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

Před zahrnutím souboru hlavičky deklarujte definici SPI_STRUCTS_VERSION preprocesoru. Určuje verzi struktury, kterou aplikace používá.

Nahraďte "path-to-your-target-hardware.h" cestou k souboru hlaviček vašeho hardwaru.

Nastavení manifestu aplikace

Pokud chcete používat rozhraní API spI, musíte do manifestu aplikace přidat funkci a pak do této funkce přidat SpiMaster každý hlavní kontroler SPI. To aplikaci umožní přístup k kontroleru. Manifest aplikace Azure Sphere obsahuje další podrobnosti o manifestu aplikace.

V kódu použijte konstanty definované pro váš hardware k identifikaci hlavních rozhraní SPI. Kompilátor tyto hodnoty při sestavování aplikace přeloží na nezpracované hodnoty.

Tady je například výňatek z manifestu aplikace, který cílí na referenční vývojovou desku MT3620 (RDB) a konfiguruje dvě hlavní rozhraní SPI:

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

Následující výňatek ukazuje, jak určit stejná hlavní rozhraní SPI v aplikaci, která cílí na Úvodní sadu Avnet MT3620:

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

Konfigurace výběru čipu a otevření hlavního rozhraní SPI

Než provedete operace s hlavním rozhraním SPI, musíte nakonfigurovat výběr čipu a otevřít rozhraní. Pokud chcete nakonfigurovat výběr čipu , zavolejte funkci SPIMaster_InitConfig , která inicializuje strukturu SPIMaster_Config . Po inicializaci SPIMaster_Config aktualizujte csPolarity pole nastavením SPI_ChipSelectPolarity_ActiveLow nebo SPI_ChipSelectPolarity_ActiveHigh.

Pokud chcete otevřít hlavní rozhraní SPI, zavolejte funkci SPIMaster_Open . Toto nastavení použije výchozí nastavení pro rozhraní a použije nastavení výběru čipu:

  • SPI_Mode_0 pro pořadí bitů SPI
  • SPI_BitOrder_MsbFirst pro komunikační režim

Aktualizace nastavení pro hlavní rozhraní SPI

Po inicializaci můžete změnit nastavení rozhraní:

Provádění operací čtení a zápisu v hlavním rozhraní SPI

Azure Sphere podporuje několik možností pro provádění operací čtení a zápisu pomocí spI. U jednosměrných operací čtení nebo zápisu a zachování interoperability s některými rozhraními API POSIX můžete volat funkce POSIX read(2) a write(2).

Funkci SPIMaster_WriteThenRead můžete volat k provedení kombinované operace zápisu a následné čtení v jedné sběrnici transakce bez přerušení z jiné transakce.

Funkci SPIMaster_TransferSequential volejte, když potřebujete přesnější kontrolu nad načasováním mezi operacemi čtení nebo zápisu. To umožňuje provádět více operací čtení a zápisu mezi dvojicí cs povolení a zakázání stavů.

Zavření rozhraní SPI

Pokud chcete rozhraní zavřít, zavolejte standardní funkci POSIX close().

Podpora pro MT3620

Tato část popisuje možnosti SPI, které platí jenom při spouštění Azure Sphere na vývojové desce MT3620.

Specifikace SPI pro MT3620 jsou uvedeny ve stavu podpory MT3620. Uživatelská příručka vývojové desky MT3620 popisuje rozložení a funkce kolíků pro zapojení.

Složka HardwareDefinitions v instalačním adresáři sady Microsoft Azure Sphere SDK obsahuje definice pro běžné vývojové desky, moduly a čipy Azure Sphere. Obsahuje hlavičky a soubory JSON, které definují hlavní rozhraní pro MT3620, MT3620 RDB a další hardware MT3620. Výchozí umístění složky HardwareDefinitions je C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions ve Windows a /opt/azurespheresdk/HardwareDefinitions v Linuxu.

Úložiště Ukázek Azure Sphere na GitHubu obsahuje hlavičky a soubory JSON, které definují hlavní rozhraní SPI pro čip MT3620 a MT3620 RDB a další hardware MT3620.-->

  • Při konfiguraci vývojové desky MT3620 můžete jako hlavní rozhraní SPI použít libovolný port ISU . Ke každému isU můžete připojit až dvě podřízená zařízení. Pokud jako hlavní rozhraní SPI používáte port ISU, nemůžete použít stejný port jako rozhraní I2C nebo UART.
  • MT3620 podporuje transakce SPI, které jsou až 40 MHz.
  • MT3620 nepodporuje souběžné obousměrné operace čtení a zápisu (full-duplexní) SPI v rámci jedné sběrnicové transakce.