SPI gebruiken in toepassingen op hoog niveau
Belangrijk
Dit is de Documentatie voor Azure Sphere (verouderd). Azure Sphere (verouderd) wordt op 27 september 2027 buiten gebruik gesteld en gebruikers moeten tegen deze tijd migreren naar Azure Sphere (geïntegreerd). Gebruik de versiekiezer boven de inhoudsweergave om de Documentatie van Azure Sphere (geïntegreerd) weer te geven.
Azure Sphere ondersteunt Serial Peripheral Interface (SPI) in de hoofdmodus. SPI is een seriële interface die wordt gebruikt voor communicatie tussen randapparatuur en geïntegreerde circuits. SPI maakt gebruik van een master-/ondergeschikt model waarbij een hoofdapparaat een set onderliggende apparaten beheert. In tegenstelling tot I2C kan SPI worden gebruikt met complexere randapparatuur met hogere snelheid.
Toepassingen hebben toegang tot randapparatuur via SPI door Applibs SPI-API's aan te roepen om bewerkingen uit te voeren op een SPI-masterinterface. In het LSM6DS3 SPI-voorbeeld wordt beschreven hoe u de hardware voor SPI configureert op een MT3620-apparaat en SPI gebruikt in een toepassing.
Chip selecteren
Chipselectie beheert de verbinding tussen een SPI-masterinterface en een set onderliggende apparaten; en stelt de hoofdinterface in staat om gegevens onafhankelijk van elkaar naar elk ondergeschikt apparaat te verzenden en te ontvangen. Azure Sphere ondersteunt de instellingen voor actief/laag en actief-hoog voor chipselectie, met actief/laag als de standaardinstelling. Elke SPI-masterinterface kan uitsluitend door één toepassing worden gebruikt. De toepassing moet de SPI-hoofdinterface openen en elk verbonden ondergeschikt apparaat identificeren voordat lees- en schrijfbewerkingen op de interface worden uitgevoerd. De spi-lees- en schrijfbewerkingen op Azure Sphere maken gebruik van blokkerende API's.
SPI-vereisten
Toepassingen die gebruikmaken van SPI moeten de juiste headerbestanden voor SPI bevatten en SPI-instellingen toevoegen aan het toepassingsmanifest.
Alle toepassingen moeten hun doelhardware instellen en het bijbehorende headerbestand voor hardwaredefinities bevatten.
Koptekstbestanden
#define SPI_STRUCTS_VERSION 1
#include <applibs/spi.h>
#include "path-to-your-target-hardware.h"
Declareer de SPI_STRUCTS_VERSION
preprocessordefinitie voordat u het headerbestand opgeeft. Hiermee geeft u de structversie op die wordt gebruikt door de toepassing.
Vervang 'path-to-your-target-hardware.h' door het pad naar het headerbestand voor uw hardware.
Toepassingsmanifestinstellingen
Als u de SPI-API's wilt gebruiken, moet u de SpiMaster
mogelijkheid toevoegen aan het toepassingsmanifest en vervolgens elke SPI-mastercontroller toevoegen aan de mogelijkheid. Hierdoor heeft de toepassing toegang tot de controller. Het Azure Sphere-toepassingsmanifest bevat meer informatie over het toepassingsmanifest.
Gebruik in uw code de constanten die zijn gedefinieerd voor uw hardware om de SPI-masterinterfaces te identificeren. De compiler vertaalt deze waarden naar onbewerkte waarden wanneer u de app bouwt.
Hier volgt bijvoorbeeld een fragment uit een toepassingsmanifest dat is gericht op een MT3620-referentieontwikkelingsbord (RDB) en twee SPI-masterinterfaces configureert:
"SpiMaster": [ "$MT3620_RDB_HEADER2_ISU0_SPI", "$MT3620_RDB_HEADER4_ISU1_SPI" ],
In het volgende fragment ziet u hoe u dezelfde SPI-masterinterfaces opgeeft in een toepassing die gericht is op de Avnet MT3620 Starter Kit:
"SpiMaster": [ "$AVNET_MT3620_SK_ISU0_SPI", "$AVNET_MT3620_SK_ISU1_SPI" ]
Chip selecteren en openen van een SPI-masterinterface configureren
Voordat u bewerkingen uitvoert op een SPI-masterinterface, moet u chipselectie configureren en de interface openen. Als u chipselectie wilt configureren, roept u de SPIMaster_InitConfig-functie aan om de SPIMaster_Config-struct te initialiseren. Nadat u SPIMaster_Config hebt geïnitialiseerd, werkt u het csPolarity
veld bij met de instelling SPI_ChipSelectPolarity_ActiveLow of SPI_ChipSelectPolarity_ActiveHigh.
Als u een SPI-masterinterface wilt openen, roept u de SPIMaster_Open-functie aan. Hiermee worden de standaardinstellingen op de interface toegepast en worden de instellingen voor chipselectie toegepast:
SPI_Mode_0
voor de SPI-bitvolgordeSPI_BitOrder_MsbFirst
voor de communicatiemodus
De instellingen voor een SPI-masterinterface bijwerken
Na de initialisatie kunt u de instellingen voor de interface wijzigen:
- Als u de bitvolgorde wilt wijzigen, roept u SPIMaster_SetBitOrder
- Als u de SPI-bussnelheid wilt wijzigen, belt u SPIMaster_SetBusSpeed
- Als u de communicatiemodus wilt wijzigen, roept u SPIMaster_SetMode
Lees- en schrijfbewerkingen uitvoeren op de SPI-masterinterface
Azure Sphere ondersteunt verschillende opties voor het uitvoeren van lees- en schrijfbewerkingen met SPI. Voor lees- of schrijfbewerkingen in één richting en om de interoperabiliteit met sommige POSIX-API's te behouden, kunt u de FUNCTIES POSIX read(2) en write(2) aanroepen.
U kunt de SPIMaster_WriteThenRead-functie aanroepen om een gecombineerde schrijfbewerking en leesbewerking uit te voeren in één bustransactie zonder onderbreking van een andere transactie.
Roep de SPIMaster_TransferSequential-functie aan wanneer u meer controle nodig hebt over de timing tussen lees- of schrijfbewerkingen. Hiermee kunt u meerdere lees- en schrijfbewerkingen uitvoeren tussen een paar cs-statussen in- en uitschakelen.
Sluit de SPI-interface
Als u de interface wilt sluiten, roept u de standaard POSIX-functie close() aan.
Ondersteuning voor MT3620
In deze sectie worden de SPI-opties beschreven die alleen van toepassing zijn bij het uitvoeren van Azure Sphere op het MT3620-ontwikkelbord.
De SPI-specificaties voor de MT3620 worden vermeld in de ondersteuningsstatus van MT3620. In de gebruikershandleiding voor MT3620 development board worden de pinindeling en functies voor bedrading beschreven.
De map HardwareDefinitions in de installatiemap van de Microsoft Azure Sphere SDK bevat definities voor algemene Azure Sphere-ontwikkelborden, modules en chips. Het bevat header- en JSON-bestanden die de hoofdinterfaces definiëren voor de MT3620, MT3620 RDB, samen met andere MT3620-hardware. De standaardlocatie voor de map HardwareDefinitions bevindt zich C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
in Windows en /opt/azurespheresdk/HardwareDefinitions
in Linux.
De Opslagplaats Azure Sphere-voorbeelden op GitHub bevat header- en JSON-bestanden die SPI-masterinterfaces definiëren voor de MT3620-chip en MT3620 RDB, samen met andere MT3620-hardware.-->
- Wanneer u het MT3620-ontwikkelbord configureert, kunt u elke ISU-poort gebruiken als een SPI-masterinterface. U kunt maximaal twee onderliggende apparaten verbinden met elke ISU. Wanneer u een ISU-poort als een SPI-masterinterface gebruikt, kunt u niet dezelfde poort gebruiken als een I2C- of UART-interface.
- De MT3620 ondersteunt SPI-transacties van maximaal 40 MHz.
- Mt3620 biedt geen ondersteuning voor gelijktijdige bidirectionele lees- en schrijfbewerkingen (full-duplex) SPI-bewerkingen binnen één bustransactie.