Spi használata magas szintű alkalmazásokban
Az Azure Sphere master módban támogatja a soros perifériaillesztőt (SPI). Az SPI a perifériák és az integrált áramkörök közötti kommunikációhoz használt soros interfész. Az SPI egy fő/alárendelt modellt használ, ahol a főeszköz az alárendelt eszközök egy csoportját vezérli. Az I2C-vel ellentétben az SPI összetettebb, nagyobb sebességű perifériákkal is használható.
Az alkalmazások az SPI-n keresztül férhetnek hozzá a perifériákhoz az Applibs SPI API-k meghívásával, hogy műveleteket hajtsanak végre egy SPI-főfelületen. Az LSM6DS3 SPI-minta leírja, hogyan konfigurálhatja az SPI hardverét egy MT3620-eszközön, és hogyan használhatja az SPI-t egy alkalmazásban.
Chip kiválasztása
A Chip Select kezeli az SPI-főfelület és az alárendelt eszközök egy készlete közötti kapcsolatot; és lehetővé teszi, hogy a fő felület egymástól függetlenül küldjön és fogadjon adatokat minden alárendelt eszközre. Az Azure Sphere támogatja a lapkaválasztás aktív-alacsony és aktív-magas beállításait, alapértelmezett beállításként pedig az active-low értéket. Minden SPI-főfelületet kizárólag egy alkalmazás használhat. Az alkalmazásnak meg kell nyitnia az SPI fő felületét, és azonosítania kell az egyes csatlakoztatott alárendelt eszközöket, mielőtt olvasási és írási műveleteket hajt végre a felületen. Az Azure Sphere-en az SPI olvasási és írási műveletei blokkoló API-kat használnak.
SPI-követelmények
Az SPI-t használó alkalmazásoknak tartalmazniuk kell az SPI megfelelő fejlécfájljait, és hozzá kell adniuk az SPI-beállításokat az alkalmazásjegyzékhez.
Minden alkalmazásnak be kell állítania a célhardverét , és tartalmaznia kell a megfelelő hardverdefiníció fejlécfájlját.
Fejlécfájlok
#define SPI_STRUCTS_VERSION 1
#include <applibs/spi.h>
#include "path-to-your-target-hardware.h"
Deklarálja az SPI_STRUCTS_VERSION
előfeldolgozó definícióját, mielőtt belevenné a fejlécfájlt. Ez határozza meg az alkalmazás által használt struct verziót.
Cserélje le a "path-to-your-target-hardware.h" kifejezést a hardver fejlécfájljának elérési útjára.
Alkalmazásjegyzék beállításai
Az SPI API-k használatához hozzá kell adnia a SpiMaster
képességet az alkalmazásjegyzékhez, majd minden SPI fővezérlőt hozzá kell adnia a képességhez. Ez lehetővé teszi, hogy az alkalmazás hozzáférjen a vezérlőhöz. Az Azure Sphere-alkalmazásjegyzék további részleteket tartalmaz az alkalmazásjegyzékről.
A kódban használja a hardverhez definiált állandókat az SPI-főillesztők azonosításához. A fordító ezeket az értékeket nyers értékekre fordítja le az alkalmazás létrehozásakor.
Íme például egy részlet egy alkalmazásjegyzékből, amely egy MT3620 referencia-fejlesztői táblát (RDB) céloz meg, és két SPI fő felületet konfigurál:
"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],
Az alábbi részlet bemutatja, hogyan adhatja meg ugyanazokat az SPI-főillesztőket egy olyan alkalmazásban, amely az Avnet MT3620 Starter Kitet célozza:
"SpiMaster": [ "$AVNET_MT3620_SK_ISU0_SPI", "$AVNET_MT3620_SK_ISU1_SPI" ]
A lapka kiválasztásának konfigurálása és egy SPI-főillesztő megnyitása
Mielőtt műveleteket hajt végre egy SPI-főillesztőn, konfigurálnia kell a lapka kiválasztását, és meg kell nyitnia a felületet. A lapka kiválasztásának konfigurálásához hívja meg a SPIMaster_InitConfig függvényt a SPIMaster_Config Struct struktúrájának inicializálásához. A SPIMaster_Config inicializálása után frissítse a mezőt a csPolarity
SPI_ChipSelectPolarity_ActiveLow. /reference/applibs/ity_Activ. /reference/applibs/rence/applibs/applibs-spi/enum-spi-chipselectpolarity.md).
Egy SPI-mesterfelület megnyitásához hívja meg a SPIMaster_Openfunction. Ez az alapértelmezett beállításokat alkalmazza a felületre, és alkalmazza a chip-kiválasztási beállításokat:
SPI_Mode_0
az SPI bitsorrendhezSPI_BitOrder_MsbFirst
a kommunikációs módhoz
Az SPI-főfelület beállításainak frissítése
Az inicializálás után módosíthatja a felület beállításait:
- A bitsorrend módosításához hívja meg a SPIMaster_SetBitOrder
- Az SPI busz sebességének módosításához hívja meg a SPIMaster_SetBusSpeed
- A kommunikációs mód módosításához hívja meg a SPIMaster_SetMode
Olvasási és írási műveletek végrehajtása az SPI fő felületén
Az Azure Sphere számos lehetőséget támogat az írási és olvasási műveletek spi használatával történő végrehajtására. Az egyirányú olvasási vagy írási műveletekhez, valamint bizonyos POSIX API-kkal való együttműködés fenntartásához meghívhatja a POSIX read(2) és write(2) függvényeket.
Meghívhatja a SPIMaster_WriteThenRead függvényt, hogy egy kombinált írási és olvasási műveletet hajtson végre egyetlen busztranzakcióban, anélkül, hogy egy másik tranzakció megszakítását végezned.
Hívja meg a SPIMaster_TransferSequential függvényt, ha pontosabban kell szabályoznia az olvasási vagy írási műveletek időzítését. Ez lehetővé teszi, hogy több olvasási és írási műveletet hajtson végre egy CS-engedélyezési és -letiltási állapotpár között.
Az SPI-felület bezárása
Az interfész bezárásához hívja meg a standard POSIX függvényt close().
MT3620-támogatás
Ez a szakasz azokat az SPI-beállításokat ismerteti, amelyek csak akkor érvényesek, ha az Azure Sphere-t az MT3620 fejlesztői táblán futtatja.
Az MT3620 SPI-specifikációi az MT3620 támogatási állapotában találhatók. Az MT3620 fejlesztői fal felhasználói útmutatója a kábelezés tűelrendezését és funkcióit ismerteti.
A Microsoft Azure Sphere SDK telepítési könyvtárában található HardwareDefinitions mappa definíciókat tartalmaz a gyakori Azure Sphere fejlesztői táblákhoz, modulokhoz és chipekhez. Fejléc- és JSON-fájlokat tartalmaz, amelyek meghatározzák az MT3620, az MT3620 RDB és más MT3620 hardverek fő felületeit. A HardwareDefinitions mappa C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
alapértelmezett helye Windows és /opt/azurespheresdk/HardwareDefinitions
Linux rendszeren.
- Az MT3620 fejlesztői alaplap konfigurálásakor bármely ISU-portot használhat SPI-főfelületként. Az ISU-khoz legfeljebb két alárendelt eszközt csatlakoztathat. Ha ISU-portot használ SPI-főfelületként, nem használhatja ugyanazt a portot, mint egy I2C- vagy UART-felület.
- Az MT3620 legfeljebb 40 MHz-es SPI-tranzakciókat támogat.
- Az MT3620 nem támogatja az egyidejű kétirányú olvasási és írási (teljes kétoldalas) SPI-műveleteket egyetlen busztranzakción belül.