L’interfaccia SPI fornisce un metodo alternativo di comunicazione con µINS, µAHRS e µIMU. Il protocollo SPI utilizza gran parte della stessa struttura e formato del protocollo binario di comunicazione seriale che è delineato nella sezione del protocollo binario del manuale dell’utente.

Abilita SPI¶

Per abilitare SPI, tenere premuto il pin G9 (nSPI_EN) all’avvio.

Nota: Quando il segnale GPS PPS timepulse esterno è abilitato su G9, il modulo ignorerà il segnale nSPI_EN e la modalità SPI verrà disabilitata indipendentemente dallo stato del pin G9.,

Hardware¶

Inertial Sense SPI Interface utilizza 5 linee per interfacciarsi con altri dispositivi., id=”c075f8374e”>

Orologio Polarità Idle Alta (CPOL = 1) Fase di Clock Falling Edge (CPHA = 1) Chip Select Attivo Basso Dati Active High

Trasferimento Dati¶

Per garantire il corretto comportamento del ricevitore in SPI Slave, il master dispositivo di inviare il telaio deve garantire un minimo ritardo di un tbit (tbit essere nominale per il tempo necessario a trasmettere un po’) tra ogni carattere di trasmissione., I dispositivi di rilevamento inerziale non richiedono un margine di discesa del per avviare una ricezione di caratteri, ma solo un livello basso. Tuttavia, questo basso livello deve essere presente su almeno un tbit prima del primo ciclo di clock seriale corrispondente al bit MSB. (1)

Quando si leggono gli UIN e non ci sono dati pronti, invierà zeri per i dati.

Mantenere CS basso non dovrebbe causare problemi. Tuttavia, se il clock tra i processori master e slave non viene sincronizzato, non c’è nulla per ripristinarli., Il rimbalzo del terreno o il rumore durante una transizione potrebbero causare l’UINS vede due bordi di clock quando dovrebbe esserci stato solo uno (a causa di un ESD o di un evento transitorio veloce). Alzando e abbassando la linea CS ripristina il registro shift risincronizzerà gli orologi.

Opzione Data Ready Pin¶

Esiste un’opzione data ready pin. Questo segnale verrà generato quando i dati diventano pronti. A seconda di quando questo accade ci possono essere 1-4 byte di zeri che usciranno prima dell’avvio del pacchetto. Anche questa linea diventerà inattiva un byte o due prima che la fine del pacchetto venga inviata., Non c’è un carattere “non in un pacchetto di dati” da inviare. È fatto rigorosamente dal pin pronto per i dati e dall’analisi.

Se la linea di selezione del chip viene abbassata durante un pacchetto di dati, il byte trasmesso (o che verrebbe trasmesso) può essere perso. Si consiglia di abbassare solo il chip select quando al di fuori di un pacchetto di dati e il pin pronto per i dati è inattivo.

Il buffer SPI interno è di 4096 byte. Se c’è un overflow del buffer, il buffer viene eliminato. Questo è indicato da un pin pronto per i dati che è alto senza che i dati siano lì., Quando si verifica un overflow, cancella il buffer, quindi il sistema potrebbe trovarsi nel mezzo di un pacchetto e gli UIN invierebbero semplicemente zeri. Se una richiesta viene inviata agli UIN o gli UIN inviano periodicamente un pacchetto, risolverà la situazione.

L’interfaccia SPI supporta fino a 3 Mb di velocità di trasmissione dati. (5 Mbs funziona se il pin pronto per i dati viene utilizzato per ricevere i dati-vedere B sotto.)

Lettura dei dati¶

Ci sono due strategie che possono essere utilizzate per leggere i dati:

A. Leggere una dimensione dei dati fissa ogni intervallo di tempo impostato., Verranno letti più dati di quelli che uINx produrrà su un intervallo regolare, ad esempio, leggendo 512 byte ogni 4 ms.

Il pacchetto sarà 0x00 imbottito se i byte letti superano la dimensione del pacchetto.

B. Leggi mentre il pin pronto per i dati è attivo o siamo all’interno di un pacchetto di dati. Un’anomalia è che il pin pronto per i dati lascerà cadere un byte o due prima che la fine venga bloccata, quindi è necessario guardare la fine del pacchetto.

Pseudo codice per la lettura dei dati:¶

  1. Controlla il pin pronto per i dati. Se il pin è basso, ritardare e controllare di nuovo il pin.,
  2. Abbassare la linea CS e leggere un blocco di dati. Le dimensioni di lettura sono arbitrarie, ma tende a funzionare meglio se il conteggio di lettura è abbastanza lungo da contenere la maggior parte dei pacchetti di dati.
  3. Dopo aver letto completa, controllare i dati pronto pin. Se è alto, leggere più dati. NON sollevare la linea CS mentre il pin pronto per i dati è alto, causerà la perdita di dati. Se i dati pronti sono bassi, sollevare la linea CS. Su un sistema occupato (e in base alla velocità di trasmissione) ciò dovrebbe accadere insieme ai dati letti poiché il pin pronto per i dati potrebbe non scendere tra i pacchetti.,
  4. Analizza i dati cercando l’inizio del pacchetto (0xFF) scartando i dati fino a quando non viene trovato. Una volta trovato iniziare a salvare i dati.
  5. Salva e analizza i dati alla ricerca della fine del pacchetto (0xFE). Una volta trovato inviare pacchetto fuori per l’uso. Se si vede un carattere di inizio del pacchetto mentre si cerca la fine, scartare i dati precedenti e avviare il salvataggio del pacchetto.

EVB-2 SPI Dev Kit¶

L’EVB-2 dimostra l’interfaccia SPI con gli UIN. Il processore EVB-2 ATSAM-E70 (E70) fornisce l’interfaccia SPI di esempio con gli UIN., L’EVB-2 deve essere messo in modalità CBPreset 6 (CONFIG led colore ciano) seguito da un reset del sistema per abilitare la modalità SPI. Il codice sorgente del progetto EVB-2 (E70) è disponibile nell’SDK per riferimento.

Risoluzione dei problemi¶

Se ogni altro carattere di un pacchetto viene perso, potrebbe essere che la linea CS venga attivata dopo ogni byte.

uINS 3.1 utilizza una periferica SPI USART che richiede un ritardo minimo di un tbit (tbit è il tempo nominale richiesto per trasmettere un bit) spaziatura tra i caratteri inviati. La lettura dei byte uno per uno può causare ritardi significativi durante lo streaming dei dati., A seconda della quantità di streaming di dati, la UINS mable per tenere il passo e il buffer potrebbe essere overflow. Le richieste di messaggi singoli dovrebbero funzionare correttamente, ma lo streaming probabilmente non funzionerà bene. Se l’hardware master non è in grado di gestire il ritardo, è necessario utilizzare l’hardware uINS 3.2.