Share via


Usare spi in applicazioni di alto livello

Azure Sphere supporta SPI (Serial Peripheral Interface) in modalità master. SPI è un'interfaccia seriale utilizzata per la comunicazione tra periferiche e circuiti integrati. SPI utilizza un modello master/subordinato in cui un dispositivo master controlla un set di dispositivi subordinati. A differenza di I2C, SPI può essere utilizzato con periferiche più complesse ad alta velocità.

Le applicazioni possono accedere alle periferiche tramite SPI chiamando Applibs SPI API per eseguire operazioni su un'interfaccia master SPI. L'esempio LSM6DS3 SPI descrive come configurare l'hardware per SPI in un dispositivo MT3620 e utilizzare SPI in un'applicazione.

Selezione del chip

Chip select gestisce la connessione tra un'interfaccia master SPI e un set di dispositivi subordinati; e consente all'interfaccia master di inviare e ricevere dati a ogni dispositivo subordinato in modo indipendente. Azure Sphere supporta le impostazioni active-low e active-high per la selezione del chip, con valore attivo-basso come impostazione predefinita. Ogni interfaccia master SPI può essere utilizzata esclusivamente da un'applicazione. L'applicazione deve aprire l'interfaccia master SPI e identificare ogni dispositivo subordinato connesso prima di eseguire operazioni di lettura e scrittura sull'interfaccia. Le operazioni di lettura e scrittura SPI su Azure Sphere usano API di blocco.

Requisiti SPI

Le applicazioni che utilizzano SPI devono includere i file di intestazione appropriati per SPI e aggiungere le impostazioni SPI al manifesto dell'applicazione.

Tutte le applicazioni devono impostare l'hardware di destinazione e includere il file di intestazione di definizione hardware corrispondente.

File di intestazione

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

Dichiarare la definizione del SPI_STRUCTS_VERSION preprocessore prima di includere il file di intestazione. Specifica la versione struct usata dall'applicazione.

Sostituire "path-to-your-target-hardware.h" con il percorso del file di intestazione per l'hardware.

Impostazioni del manifesto dell'applicazione

Per utilizzare le API SPI, è necessario aggiungere la SpiMaster funzionalità al manifesto dell'applicazione e quindi aggiungere ogni controller master SPI alla funzionalità. In questo modo l'applicazione può accedere al controller. Il manifesto dell'applicazione Azure Sphere ha maggiori dettagli sul manifesto dell'applicazione.

Nel codice, utilizzare le costanti definite per l'hardware per identificare le interfacce master SPI. Il compilatore tradurrà questi valori in valori non elaborati quando si compila l'app.

Ad esempio, ecco un estratto di un manifesto dell'applicazione che si rivolge a una scheda di sviluppo di riferimento (RDB) MT3620 e configura due interfacce master SPI:

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

Il seguente estratto mostra come specificare le stesse interfacce master SPI in un'applicazione che si rivolge a Avnet MT3620 Starter Kit:

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

Configurare la selezione del chip e aprire un'interfaccia master SPI

Prima di eseguire operazioni su un'interfaccia master SPI, è necessario configurare la selezione del chip e aprire l'interfaccia. Per configurare la selezione del chip, chiamare la funzione SPIMaster_InitConfig per inizializzare la struttura di SPIMaster_Config . Dopo aver inizializzato SPIMaster_Config, aggiornare il csPolarity campo con l'impostazione SPI_ChipSelectPolarity_ActiveLow o SPI_ChipSelectPolarity_ActiveHigh.

Per aprire un'interfaccia master SPI, chiamare la funzione SPIMaster_Open . Verranno applicate le impostazioni predefinite all'interfaccia e verranno applicate le impostazioni di selezione del chip:

  • SPI_Mode_0 per l'ordine di bit SPI
  • SPI_BitOrder_MsbFirst per la modalità di comunicazione

Aggiornare le impostazioni per un'interfaccia master SPI

Dopo l'inizializzazione è possibile modificare le impostazioni per l'interfaccia:

Eseguire operazioni di lettura e scrittura sull'interfaccia master SPI

Azure Sphere supporta diverse opzioni per eseguire operazioni di lettura e scrittura con SPI. Per operazioni di lettura o scrittura unidirezionale e per mantenere l'interoperabilità con alcune API POSIX, è possibile chiamare le funzioni POSIX read(2) e write(2).

È possibile chiamare la funzione SPIMaster_WriteThenRead per eseguire un'operazione combinata di scrittura e lettura in una singola transazione bus senza interruzioni da un'altra transazione.

Chiamare la funzione SPIMaster_TransferSequential quando è necessario un controllo più preciso sull'intervallo tra le operazioni di lettura o scrittura. In questo modo è possibile eseguire più operazioni di lettura e scrittura tra una coppia di stati di abilitazione e disabilitazione CS.

Chiudere l'interfaccia SPI

Per chiudere l'interfaccia, chiamare la funzione POSIX standard close().

Supporto per MT3620

Questa sezione descrive le opzioni SPI che si applicano solo quando si esegue Azure Sphere sulla bacheca di sviluppo di MT3620.

Le specifiche SPI per MT3620 sono elencate nello stato di supporto di MT3620. Il manuale dell'utente della scheda di sviluppo MT3620 descrive il layout dei piedini e le funzioni per il wiring.

La cartella HardwareDefinitions nella directory di installazione di Microsoft Azure Sphere SDK contiene le definizioni per comuni schede di sviluppo, moduli e chip di Azure Sphere. Contiene file di intestazione e JSON che definiscono le interfacce master per MT3620, MT3620 RDB, insieme ad altri hardware MT3620. Il percorso predefinito per la cartella HardwareDefinitions è C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions in Windows e /opt/azurespheresdk/HardwareDefinitions su Linux.

Il repository Azure Sphere Samples su GitHub contiene file di intestazione e JSON che definiscono le interfacce master SPI per il chip MT3620 e MT3620 RDB, insieme ad altri hardware MT3620.-->

  • Quando configuri la scheda di sviluppo MT3620, puoi utilizzare qualsiasi porta ISU come interfaccia master SPI. È possibile connettere fino a due dispositivi subordinati a ogni ISU. Quando si utilizza una porta ISU come interfaccia master SPI, non è possibile usare la stessa porta di un'interfaccia I2C o UART.
  • MT3620 supporta transazioni SPI fino a 40 MHz.
  • Mt3620 non supporta simultaneamente operazioni SPI di lettura e scrittura bidirezionale (full-duplex) all'interno di una singola transazione bus.