Die SPI-Schnittstelle bietet eine alternative Kommunikationsmethode mit den µINS, µAHRS und µIMU. Das SPI-Protokoll verwendet weitgehend die gleiche Struktur und das gleiche Format wie das binäre Protokoll für die serielle Kommunikation, das im Abschnitt Binärprotokoll des Benutzerhandbuchs beschrieben ist.

SPI aktivieren¶

Um SPI zu aktivieren, halten Sie den Pin G9 (nSPI_EN) beim Start niedrig.

Hinweis: Wenn externe GPS PPS timepulse signal ist aktiviert auf G9, das modul wird ignorieren die nSPI_EN signal und SPI modus wird deaktiviert unabhängig von G9 pin zustand.,

Hardware¶

Inertial Sense SPI interface verwendet 5 linien zu interface mit anderen geräten., id=“c075f8374e“>

Clock Polarität Leerlauf Hoch (CPOL = 1) Clock Phase Fallende Flanke (CPHA = 1) Chip-Select – Active Low Data Ready Aktiv High

Daten Transfer¶

Für die korrekte Verhalten des Empfängers im SPI-Slave-Modus, das master-Gerät senden die Rahmen zu garantieren eine Verzögerung von mindestens einem tbit (tbit wird die Nominale erforderliche Zeit zu übertragen eine etwas) zwischen den einzelnen Zeichen der übertragung., Trägheitssinngeräte benötigen keine fallende Kante des, um einen Zeichenempfang zu initiieren, sondern nur einen niedrigen Pegel. Dieser niedrige Pegel muss jedoch auf dem mindestens einem Tbit vor dem ersten seriellen Taktzyklus vorhanden sein, der dem MSB-Bit entspricht. (1)

Wenn Sie die UINs lesen und keine Daten bereit sind, werden Nullen für die Daten gesendet.

CS niedrig zu halten sollte keine Probleme verursachen. Wenn jedoch die Taktung zwischen Master-und Slave-Prozessoren nicht mehr synchron ist, gibt es nichts, was sie wieder synchron machen könnte., Ground Bounce oder Rauschen während eines Übergangs können dazu führen, dass die UINs zwei Taktränder sehen, wenn nur eine vorhanden sein sollte (aufgrund einer ESD oder eines schnellen transienten Ereignisses). Das Anheben und Absenken der CS-Linie setzt das Schieberegister zurück, wodurch die Uhren neu synchronisiert werden.

Daten Bereit Pin Option¶

Es ist eine daten bereit pin option. Dieses Signal wird ausgelöst, wenn Daten bereit sind. Abhängig davon, wann dies geschieht, können 1-4 Byte Nullen ausgegeben werden, bevor das Paket gestartet wird. Auch diese Zeile wird ein oder zwei Byte inaktiv, bevor das Ende des Pakets gesendet wird., Es ist kein Zeichen „Nicht in einem Datenpaket“ zu senden. Es wird ausschließlich durch Daten bereit Pin und Parsing getan.

Wenn die Chipauswahlleitung während eines Datenpakets abgesenkt wird, kann das übertragene (oder übertragene) Byte verloren gehen. Es wird empfohlen, die Chipauswahl nur zu senken, wenn außerhalb eines Datenpakets und der datenbereite Pin inaktiv ist.

Der interne SPI-Puffer beträgt 4096 Byte. Wenn ein Pufferüberlauf vorhanden ist, wird der Puffer gelöscht. Dies wird durch eine datenbereite Pin angezeigt, die hoch ist, ohne dass Daten vorhanden sind., Wenn ein Überlauf auftritt, wird der Puffer gelöscht, sodass sich das System in der Mitte eines Pakets befindet und die UINs nur Nullen senden. Wenn eine Anforderung an die UINs gesendet wird oder die UINs regelmäßig ein Paket senden, wird die Situation behoben.

Die SPI-Schnittstelle unterstützt bis zu 3 Mbs Datenrate. (5 Mbs funktioniert, wenn die Daten bereit pin verwendet wird, um die Daten zu empfangen-siehe B unten.)

Daten lesen¶

Es gibt zwei Strategien, mit denen die Daten gelesen werden können:

A. Lesen Sie in jedem festgelegten Zeitintervall eine feste Datengröße aus., Es werden mehr Daten gelesen, als die uINx in einem regulären Intervall erzeugt, z. B. 512 Bytes alle 4 ms.

Das Paket wird 0x00 aufgefüllt, wenn die gelesenen Bytes die Paketgröße überschreiten.

B. Lesen Sie, während der datenbereite Pin aktiv ist oder wir uns in einem Datenpaket befinden. Eine Anomalie ist, dass der datenbereite Pin ein oder zwei Byte ablegt, bevor das Ende getaktet wird, sodass nach dem Ende des Pakets gesucht werden muss.

Pseudocode zum Lesen von Daten:¶

  1. Überprüfen Sie die Daten bereit pin. Wenn Pin niedrig ist, verzögern und Pin erneut überprüfen.,
  2. Senken Sie die CS-Zeile und lesen Sie einen Datenblock. Lesegrößen sind beliebig, funktionieren jedoch tendenziell besser, wenn die Leseanzahl lang genug ist, um die meisten Datenpakete zu enthalten.
  3. Nach lesen abgeschlossen, überprüfen daten bereit pin. Wenn es hoch ist, lesen Sie mehr Daten. Heben Sie die CS-Leitung NICHT an, während der datenbereite Pin hoch ist, da dies zu Datenverlust führt. Wenn data ready niedrig ist, heben Sie die CS-Zeile an. Auf einem ausgelasteten System (und abhängig von der Baudrate) müsste dies zusammen mit den gelesenen Daten geschehen, da der datenbereite Pin zwischen den Paketen möglicherweise nicht niedrig ist.,
  4. Parse Daten auf der Suche nach Start des Pakets (0xFF) Verwerfen von Daten, bis gefunden. Einmal gefunden starten Sie die Daten zu speichern.
  5. Speichern und Analysieren von Daten auf der Suche nach dem Ende des Pakets (0xFE). Einmal gefunden senden paket off für den einsatz. Wenn bei der Suche nach dem Ende ein Anfang des Paketzeichens angezeigt wird, verwerfen Sie die vorherigen Daten und starten Sie die Paketspeicherung von vorne.

EVB-2 SPI Dev Kit¶

Das EVB-2 demonstriert die SPI-Schnittstelle mit den UINs. Der EVB-2 ATSAM-E70 (E70) Prozessor stellt die Beispiel-SPI-Schnittstelle mit den UINs bereit., Der EVB-2 muss in den CBPreset-Modus 6 (CONFIG led Color Cyan) versetzt werden, gefolgt von einem System-Reset, um den SPI-Modus zu aktivieren. Der Projektquellcode EVB-2 (E70) ist im SDK als Referenz verfügbar.

Fehlerbehebung¶

Wenn jedes andere Zeichen aus einem Paket verloren geht, kann es sein, dass die CS-Zeile nach jedem Byte umgeschaltet wird.

Die UINs 3.1 verwendet eine USART SPI Peripherial, die eine minimale Verzögerung von einem tbit (tbit ist die nominale Zeit erforderlich, um ein Bit zu übertragen) Abstand zwischen den gesendeten Zeichen erfordert. Das Lesen von Bytes nacheinander kann beim Streamen von Daten zu erheblichen Zeitverzögerungen führen., Abhängig von der Menge an Daten-Streaming, die UINs mable zu halten und der Puffer könnte Überlauf. Einzelne Nachrichtenanforderungen sollten ordnungsgemäß funktionieren, aber das Streaming funktioniert wahrscheinlich nicht gut. Wenn die Master-Hardware die Verzögerung nicht verarbeiten kann, sollte die UINs 3.2-Hardware verwendet werden.