Informationen zum SPI-Kommunikationsprotokoll in Embedded

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





Kommunikation spielt eine wesentliche Rolle beim Entwurf eingebetteter Systeme. Ohne auf die Protokolle zuzugreifen, ist die Peripherieerweiterung sehr komplex und verbraucht viel Strom. Das Eingebettetes System Grundsätzlich wird serielle Kommunikation verwendet, um mit den Peripheriegeräten zu kommunizieren.
Es gibt viele serielle Kommunikationsprotokolle wie UART-, CAN-, USB-, I2C- und SPI-Kommunikation. Die Serie Kommunikationsprotokolle Zu den Merkmalen gehören hohe Geschwindigkeit und geringer Datenverlust. Dies erleichtert das Entwerfen auf Systemebene und gewährleistet eine zuverlässige Datenübertragung.

Serielle Datenkommunikation

Elektrisch codierte Informationen werden als serielle Daten bezeichnet, die über einen Satz von Protokollen Stück für Stück von einem Gerät zum anderen übertragen werden. In dem eingebetteten System werden Steuerungssensoren und Aktuatordaten empfangen oder an die Steuergeräte wie Mikrocontroller gesendet, so dass die Daten weiter analysiert und verarbeitet werden. Da die Mikrocontroller mit den digitalen Daten arbeiten, werden die Informationen aus dem analoge Sensoren , Aktuatoren und andere Peripheriegeräte werden vor der Übertragung an den Mikrocontroller in ein 8-Bit-Binärwort umgewandelt.




Serielle Datenkommunikation

Serielle Datenkommunikation

Diese seriellen Daten werden in Bezug auf bestimmte Taktimpulse übertragen. Die Datenübertragungsrate wird als Baudrate bezeichnet. Die Anzahl der Datenbits, die pro Sekunde übertragen werden können, wird als Baudrate bezeichnet. Angenommen, die Daten haben 12 Bytes, dann wird jedes Byte in 8 Bit konvertiert, so dass die Gesamtgröße der Datenübertragung etwa 96 Bit / s der Daten beträgt (12 Byte * 8 Bit pro Byte). Wenn die Daten einmal pro Sekunde übertragen werden können, liegen die Baudraten bei 96 Bit / s oder 96 Baud. Der Bildschirm aktualisiert den Datenwert einmal pro Sekunde.



Grundlagen der seriellen Peripherieschnittstelle

Die SPI-Kommunikation steht für serielle Peripherieschnittstelle Kommunikationsprotokoll Die SPI-Schnittstelle ist auf gängigen Kommunikationscontrollern wie PIC, AVR und verfügbar ARM-Controller usw. Es verfügt über eine synchrone serielle Kommunikationsdatenverbindung, die im Vollduplexbetrieb arbeitet, was bedeutet, dass die Datensignale beide Richtungen gleichzeitig übertragen.

Das SPI-Protokoll besteht aus vier Drähten wie MISO, MOSI, CLK, SS, die für die Master / Slave-Kommunikation verwendet werden. Der Master ist ein Mikrocontroller, und die Slaves sind andere Peripheriegeräte wie Sensoren. GSM-Modem und GPS-Modem usw. Die mehreren Slaves sind über einen seriellen SPI-Bus mit dem Master verbunden. Das SPI-Protokoll unterstützt die Multi-Master-Kommunikation nicht und wird für eine kurze Entfernung innerhalb einer Leiterplatte verwendet.

Grundlagen der seriellen Peripherieschnittstelle

Grundlagen der seriellen Peripherieschnittstelle

SPI-Linien

MISO (Master in Slave out) : Die MISO-Leitung ist als Eingang in einem Master-Gerät und als Ausgang in einem Slave-Gerät konfiguriert.


MOSI (Master out Slave in) : Der MOSI ist eine Leitung, die als Ausgang in einem Master-Gerät und als Eingang in einem Slave-Gerät konfiguriert ist und zum Synchronisieren der Datenbewegung verwendet wird.

SCK (serielle Uhr) : Dieses Signal wird immer vom Master zur synchronen Datenübertragung zwischen Master und Slave angesteuert. Es wird verwendet, um die Datenbewegung sowohl über die MOSI- als auch über die MISO-Leitung zu synchronisieren.

SS (Slave Select) und CS (Chip Select) : Dieses Signal wird vom Master angesteuert, um einzelne Slaves / Peripheriegeräte auszuwählen. Dies ist eine Eingangsleitung zur Auswahl der Slave-Geräte.

Master-Slave-Kommunikation mit dem seriellen SPI-Bus

Single Master- und Single Slave SPI-Implementierung

Hier wird die Kommunikation immer vom Master initiiert. Das Master-Gerät konfiguriert zunächst die Taktfrequenz, die kleiner oder gleich der vom Slave-Gerät unterstützten Maximalfrequenz ist. Der Master wählt dann den gewünschten Slave für die Kommunikation aus, indem er die Chipauswahlleitung (SS) dieses bestimmten Slave-Geräts zieht, um in den niedrigen Zustand zu wechseln und aktiv zu werden. Der Master generiert die Informationen auf der MOSI-Leitung, die die Daten vom Master zum Slave überträgt.

Master-Slave-Kommunikation

Master-Slave-Kommunikation

Single Master- und Multiple Slave-Implementierungen

Dies ist eine Konfiguration mit mehreren Slaves mit einem Master und mehreren Slaves über den seriellen SPI-Bus. Die mehreren Slaves sind parallel zum Master-Gerät mit dem seriellen SPI-Bus verbunden. Hier sind alle Taktleitungen und Datenleitungen miteinander verbunden, aber der Chipauswahlstift von jedem Slave-Gerät muss mit einem separaten Slave-Auswahlstift am Maser-Gerät verbunden sein.

Einzelner Master und mehrere Slaves

Einzelner Master und mehrere Slaves

In diesem Prozess wird die Steuerung jedes Slave-Geräts durch eine Chipauswahlleitung (SS) durchgeführt. Der Chipauswahlstift geht auf Low, um das Slave-Gerät zu aktivieren, und auf High, um das Slave-Gerät zu deaktivieren.

Die Datenübertragung wird unter Verwendung der Schieberegister sowohl an Master- als auch an Slave-Geräten mit einer gegebenen Wortgröße von etwa 8 Bit bzw. 16 Bit organisiert. Beide Geräte sind ringförmig verbunden, so dass der Maser-Schieberegisterwert über die MOSI-Leitung übertragen wird und der Slave dann Daten in seinem Schieberegister verschiebt. Die Daten werden normalerweise zuerst mit dem MSB und dann mit dem neuen LSB in dasselbe Register verschoben.

Datenübertragung zwischen Master und Slave

Datenübertragung zwischen Master und Slave

Bedeutung der Taktpolarität und -phase

Im Allgemeinen wird das Senden und Empfangen von Daten in Bezug auf die Taktimpulse bei ansteigenden und abfallenden Flanken durchgeführt. Die Advanced-Mikrocontroller haben zwei Frequenzen: interne Frequenz und externe Frequenz. SPI-Peripheriegeräte können durch gemeinsame Nutzung der MISO-, MOSI- und SCLK-Leitungen hinzugefügt werden. Die Peripheriegeräte haben unterschiedliche Typen oder Geschwindigkeiten wie ADC, DAC usw. Daher müssen wir die SPCR-Einstellungen zwischen den Übertragungen an verschiedene Peripheriegeräte ändern.

SPCR-Register

SPCR-Register

Der SPI-Bus arbeitet in einem der 4 verschiedenen Übertragungsmodi mit einer Taktpolarität (CPOL) und einer Taktphase (CPHA), die ein zu verwendendes Taktformat definieren. Die Taktpolarität und die Phasentaktraten hängen davon ab, welches Peripheriegerät Sie mit dem Master kommunizieren möchten.
CPHA = 0, CPOL = 0: Das erste Bit beginnt als niedrigeres Signal - die Daten werden bei steigender Flanke abgetastet und die Daten ändern sich bei fallender Flanke.

CPHA = 0, CPOL = 1: Das erste Bit beginnt mit einem niedrigeren Takt - die Daten werden bei fallender Flanke abgetastet und die Daten ändern sich bei steigender Flanke.

CPHA = 1, CPOL = 0: Das erste Bit beginnt mit einem höheren Takt - die Daten werden bei fallender Flanke abgetastet und die Daten ändern sich bei steigender Flanke.

CPHA = 1, CPOL = 1: Das erste Bit beginnt mit einem höheren Takt - die Daten werden bei steigender Flanke abgetastet und die Daten ändern sich bei fallender Flanke.

SPI-Bus-Timings

SPI-Bus-Timings

SPI-Kommunikationsprotokoll

Viele Mikrocontroller verfügen über integrierte SPI-Protokolle, die alle Sende- und Empfangsdaten verarbeiten. Jede der Datenmodusoperationen (R / W) wird durch ein Steuer- und Statusregister des SPI-Protokolls gesteuert. Hier können Sie die EEPROM-Schnittstelle zum PIC16f877a-Mikrocontroller über das SPI-Protokoll beobachten.

Hier ist 25LC104 EEROM ein 131072-Byte-Speicher, in dem der Mikrocontroller zwei Datenbytes an den überträgt EEROM Speicher über einen seriellen SPI-Bus. Das Programm für diese Schnittstelle ist unten angegeben.

Master-Slave-Kommunikation über den seriellen SPI-Bus

Master-Slave-Kommunikation über den seriellen SPI-Bus

#einschließen
Sbit SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
Noid initialisieren EEROM ()
Void main ()
{
SSPSPAT = 0x00
SSPCON = 0x31
SMP = 0
SCK = 0
SDO = 0
SS = 1
EE_adress = 0x00
SPI_write (0x80)
SPI_write (1234)
SS = 0
}}

Vorteile des SPI-Protokolls

  • Es ist eine Vollduplex-Kommunikation.
  • Es handelt sich um einen Hochgeschwindigkeitsdatenbus mit 10 MHz.
  • Es ist nicht auf 8 Bit während der Übertragung beschränkt
  • Die Hardware-Schnittstelle ist über SPI einfach.
  • Slave verwendet eine Hauptuhr und benötigt keine wertvollen Oszillatoren.

Hier dreht sich alles um die SPI-Kommunikation und ihre Schnittstelle mit einem Mikrocontroller . Wir bedanken uns für Ihr großes Interesse und Ihre Aufmerksamkeit für diesen Artikel und nehmen daher Ihren Standpunkt zu diesem Artikel vorweg. Darüber hinaus können Sie uns für eine Codierung und Unterstützung der Schnittstelle fragen, indem Sie unten einen Kommentar abgeben.

Bildnachweis: