Zurück

SPI-Loopback-Test: Meistern Sie das Protokoll mit Velxio

Einführung

Serial Peripheral Interface (SPI) ist ein synchrones serielles Kommunikationsprotokoll, das häufig verwendet wird, um Mikrocontroller mit Sensoren, Displays und Speicherchips zu verbinden. In diesem Tutorial erstellen wir einen SPI-Loopback-Test mit dem Velxio-Simulator. Der Loopback-Test sendet Bytes über SPI und liest die Antwort zurück, um zu bestätigen, dass das Protokoll korrekt funktioniert. Da kein physisches Slave-Gerät vorhanden ist, gibt der Simulator das gesendete Byte zurück – eine ideale Möglichkeit, SPI ohne Hardware zu erlernen.

Schaltungsaufbau

Beginnen wir mit dem Aufbau der Schaltung. Die einzige benötigte Komponente ist ein Arduino Uno, den wir auf der Arbeitsfläche platzieren.

Schaltplan des SPI-Loopbacks auf der Velxio-Simulator-Arbeitsfläche

Um den Arduino Uno hinzuzufügen, öffnen Sie die Komponentenauswahl, indem Sie auf das „+“-Symbol in der Symbolleiste der Arbeitsfläche klicken.

Velxio-Komponentenauswahl-Modal mit Durchsuchen von Teilen nach Kategorie

Suchen Sie nach „Arduino Uno” und platzieren Sie ihn auf der Arbeitsfläche. Der Arduino Uno hat dedizierte SPI-Pins:

Bei diesem Loopback-Test ist keine externe Verdrahtung erforderlich, da die SPI-Signale intern im Arduino verlaufen. Wir müssen jedoch sicherstellen, dass der SS-Pin (Pin 10) als Ausgang konfiguriert ist und zuerst auf HIGH, dann während der Kommunikation auf LOW gesetzt wird. Der Code übernimmt dies.

Code-Erklärung

Betrachten wir nun den Code. Öffnen Sie den Code-Editor, indem Sie auf den Reiter „Code” in der Editor-Symbolleiste klicken.

Velxio-Editor-Symbolleiste mit Compile- und Run-Steuerungen

Der Code ist in Arduino C++ geschrieben und verwendet die integrierte Bibliothek SPI.h. Es werden keine externen Bibliotheken benötigt.

// SPI Loopback Test
// Sends bytes via SPI and logs the exchange.
// Without a physical slave, the emulator returns the sent byte.

#include <SPI.h>

#define SS_PIN 10

void setup() {
  Serial.begin(9600);
  Serial.println("========================");
  Serial.println("  SPI Protocol Test");
  Serial.println("========================");
  Serial.println();

  pinMode(SS_PIN, OUTPUT);
  digitalWrite(SS_PIN, HIGH);
  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV16);

  Serial.println("SPI initialized.");
  Serial.print("Clock divider: 16 (");
  Serial.print(F_CPU / 16);
  Serial.println(" Hz)");
  Serial.println();

  // Send test pattern
  Serial.println("Sending test pattern via SPI:");
  byte testData[] = {0xAA, 0x55, 0xFF, 0x00, 0x42, 0xDE, 0xAD, 0xBE};

  digitalWrite(SS_PIN, LOW);  // Select slave

  for (int i = 0; i < sizeof(testData); i++) {
    byte sent = testData[i];
    byte received = SPI.transfer(sent);

    Serial.print("  TX: 0x");
    if (sent < 16) Serial.print("0");
    Serial.print(sent, HEX);
    Serial.print("  RX: 0x");
    if (received < 16) Serial.print("0");
    Serial.print(received, HEX);

    if (sent == received) {
      Serial.println("  (loopback OK)");
    } else {
      Serial.println();
    }
  }

  digitalWrite(SS_PIN, HIGH);  // Deselect slave

  Serial.println();
  Serial.println("SPI test complete.");
}

void loop() {
  delay(1000);
}

Lassen Sie uns die wichtigsten Teile aufschlüsseln:

Wichtige Konzepte

Häufige Fallstricke und Debugging-Tipps

Vorschläge für Erweiterungen

Probieren Sie es selbst aus

Bereit loszulegen? Öffnen Sie das Live-Beispiel in Velxio und führen Sie die Simulation aus. Sie sehen die serielle Ausgabe mit jedem gesendeten und empfangenen Byte, was den Loopback bestätigt.

Öffnen Sie den SPI-Loopback-Test in Velxio

Viel Spaß beim Simulieren!


Teilen auf:
David Montero

Geschrieben von

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Ähnliche Artikel


Vorheriger Artikel
Meistern Sie Serial, I2C und SPI auf Arduino mit Velxio
Nächster Artikel
I2C-EEPROM Lesen/Schreiben mit Arduino: Eine vollständige Anleitung