Použití SPI v aplikacích vysoké úrovně
Azure Sphere podporuje sériové periferní rozhraní (SPI) v hlavním režimu. SPI je sériové rozhraní používané pro komunikaci mezi periferiemi a integrovanými obvody. SPI používá hlavní/podřízený model, ve kterém hlavní zařízení řídí sadu podřízených zařízení. Na rozdíl od I2C lze SPI používat se složitějšími periferními zařízeními s vyšší rychlostí.
Aplikace můžou přistupovat k periferním prostředkům prostřednictvím ROZHRANÍ SPI voláním rozhraní API spi služby Applibs, aby prováděly operace na hlavním rozhraní SPI. Ukázka LSM6DS3 SPI popisuje, jak nakonfigurovat hardware pro SPI na zařízení MT3620 a použít SPI v aplikaci.
Výběr čipu
Chip select 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 na sobě. Azure Sphere podporuje nastavení aktivní-nízké a aktivní-vysoké pro výběr čipů s výchozím nastavením aktivní-nízké. Každé hlavní rozhraní SPI může používat výhradně jedna aplikace. Aplikace musí před provedením operací čtení a zápisu v rozhraní otevřít hlavní rozhraní SPI a identifikovat všechna 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í SPI, musí obsahovat příslušné soubory hlaviček pro SPI a přidat nastavení SPI do manifestu aplikace.
Všechny aplikace musí nastavit svůj 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"
Deklarujte definici SPI_STRUCTS_VERSION
preprocesoru před zahrnutím souboru hlaviček. Určuje verzi struktury, kterou aplikace používá.
Nahraďte path-to-your-target-hardware.h cestou k souboru hlaviček pro váš hardware.
Nastavení manifestu aplikace
Pokud chcete používat rozhraní API SPI, musíte tuto funkci přidat SpiMaster
do manifestu aplikace a pak do funkce přidat 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 při sestavování aplikace přeloží tyto hodnoty na nezpracované hodnoty.
Tady je například výňatek z manifestu aplikace, který cílí na referenční vývojovou desku (RDB) MT3620 a konfiguruje dvě hlavní rozhraní SPI:
"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],
Následující úryvek 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
Před prováděním operací s hlavním rozhraním SPI musíte nakonfigurovat výběr čipu a otevřít rozhraní. Pokud chcete nakonfigurovat čipový výběr, zavolejte funkci SPIMaster_InitConfig , která inicializuje strukturu SPIMaster_Config Struct . Po inicializaci SPIMaster_Config aktualizujte csPolarity
pole SPI_ChipSelectPolarity_ActiveLow. /reference/applibs/ity_Activ.. /reference/applibs/rence/applibs/applibs-spi/enum-spi-chipselectpolarity.md).
Pokud chcete otevřít hlavní rozhraní SPI, zavolejte SPIMaster_Openfunction. Tím se pro rozhraní použije výchozí nastavení a použije se nastavení výběru čipu:
-
SPI_Mode_0
pro pořadí bitů SPI -
SPI_BitOrder_MsbFirst
pro režim komunikace
Aktualizace nastavení hlavního rozhraní SPI
Po inicializaci můžete změnit nastavení rozhraní:
- Pokud chcete změnit pořadí bitů, zavolejte SPIMaster_SetBitOrder
- Pokud chcete změnit rychlost sběrnice SPI, zavolejte SPIMaster_SetBusSpeed
- Pokud chcete změnit režim komunikace, zavolejte SPIMaster_SetMode
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. Pro jednosměrné operace č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).
Můžete volat funkci SPIMaster_WriteThenRead k provedení kombinované operace zápisu a č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í a zápisu. To vám umožní provádět několik operací čtení a zápisu mezi jednotlivými stavy povolení a zakázání cs.
Zavřete rozhraní SPI.
Pokud chcete rozhraní zavřít, zavolejte standardní funkci POSIX close().
Podpora pro MT3620
Tato část popisuje možnosti SPI, které platí pouze při spuštění Azure Sphere na vývojovém panelu MT3620.
Specifikace SPI pro MT3620 jsou uvedené v tématu Stav podpory MT3620. Uživatelská příručka vývojové desky MT3620 popisuje rozložení kolíků a funkce pro zapojení.
Složka HardwareDefinitions v instalačním adresáři sady Microsoft Azure Sphere SDK obsahuje definice pro běžné vývojové panely, 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.
- Při konfiguraci vývojového panelu MT3620 můžete jako hlavní rozhraní SPI použít libovolný port ISU . Ke každé jednotce ISU můžete připojit až dvě podřízená zařízení. Pokud jako hlavní rozhraní SPI použijete 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 spi pro čtení a zápis (plně duplexní) SPI v rámci jedné transakce sběrnice.