Zurück

Pico SPI Loopback: Testen Sie die serielle Kommunikation Ihres RP2040

Einführung

SPI (Serial Peripheral Interface) ist ein synchrones serielles Kommunikationsprotokoll, das häufig verwendet wird, um Mikrocontroller mit Sensoren, Displays und anderen Peripheriegeräten zu verbinden. In diesem Tutorial bauen wir einen einfachen SPI-Loopback-Test auf dem Raspberry Pi Pico mit dem Velxio In-Browser-Simulator. Der Pico sendet Bytes über SPI0 und liest sie zurück, während drei LEDs die Aktivität auf den MOSI-, MISO- und SCK-Leitungen anzeigen. Dies ist eine großartige Möglichkeit, um zu überprüfen, ob Ihre SPI-Hardware und Verkabelung korrekt funktionieren, bevor Sie zu komplexeren Projekten übergehen.

Schaltplan des Pico-SPI-Loopbacks auf der Velxio-Simulator-Leinwand

Schaltungsaufbau

Schauen wir uns die Komponenten und die Verkabelung in dieser Schaltung an.

Komponenten

Verkabelung

Die SPI0-Pins des Pico sind wie folgt zugeordnet:

Die Anode (A) jeder LED wird mit dem jeweiligen SPI-Pin verbunden, und ihre Kathode (C) wird mit GND (GND.1 auf dem Pico) verbunden. Die Drahtfarben im Simulator sind:

Dieser einfache Aufbau ermöglicht es Ihnen, die SPI-Aktivität zu sehen: Die LEDs blinken, während Daten übertragen werden.

Code-Erklärung

Hier ist der vollständige Arduino-Sketch für den Pico:

// Raspberry Pi Pico — SPI Loopback Test
// Sends bytes over SPI0 and reads the loopback response
// Default SPI0 pins: MISO=GP16, MOSI=GP19, SCK=GP18, CS=GP17

#include <SPI.h>

void setup() {
  Serial.begin(115200);
  delay(500);
  Serial.println("=== Pico SPI Loopback Test ===");
  Serial.println("SPI0: MISO=GP16, MOSI=GP19, SCK=GP18");
  Serial.println();

  SPI.begin();
  SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));

  // Send test bytes
  byte testBytes[] = {0x55, 0xAA, 0xFF, 0x00, 0x42};
  int count = sizeof(testBytes);

  Serial.println("Sending bytes and reading loopback:");
  for (int i = 0; i < count; i++) {
    byte rxByte = SPI.transfer(testBytes[i]);
    Serial.print("  TX: 0x");
    if (testBytes[i] < 16) Serial.print('0');
    Serial.print(testBytes[i], HEX);
    Serial.print("  RX: 0x");
    if (rxByte < 16) Serial.print('0');
    Serial.print(rxByte, HEX);
    Serial.print("  ");
    Serial.println(rxByte == testBytes[i] ? "MATCH" : "DIFFER");
  }

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

void loop() {
  delay(10000);
}

Wie es funktioniert

  1. Serielle Einrichtung: Wir starten die serielle Kommunikation mit 115200 Baud, um die Ergebnisse im seriellen Monitor auszugeben.
  2. SPI-Initialisierung: SPI.begin() initialisiert das SPI0-Peripheriegerät. SPI.beginTransaction() konfiguriert den Bus mit einer Taktfrequenz von 1 MHz, MSB-first Datenreihenfolge und SPI-Modus 0 (CPOL=0, CPHA=0).
  3. Testdaten: Wir definieren ein Array von fünf Testbytes: 0x55, 0xAA, 0xFF, 0x00 und 0x42. Diese decken alternierende Bits, alle Einsen, alle Nullen und ein gemischtes Muster ab.
  4. Loopback-Übertragung: Für jedes Byte rufen wir SPI.transfer() auf. Dies sendet gleichzeitig ein Byte und empfängt das Byte, das sich gerade auf der MISO-Leitung befindet. Da wir einen Loopback haben (MISO extern oder intern mit MOSI verbunden), sollte das empfangene Byte mit dem gesendeten Byte übereinstimmen.
  5. Ergebnisanzeige: Der Sketch gibt die gesendeten (TX) und empfangenen (RX) Bytes in hexadezimaler Form aus, zusammen mit einem “MATCH”- oder “DIFFER”-Status.
  6. Bereinigung: SPI.endTransaction() gibt den SPI-Bus frei.

Wichtige Konzepte

Häufige Fallstricke und Debugging-Tipps

Vorschläge für Erweiterungen

Probieren Sie es selbst aus

Bereit, dieses Projekt zu bauen? Öffnen Sie das Live-Beispiel in Velxio und beginnen Sie zu experimentieren:

Pico SPI Loopback in Velxio öffnen

Verwenden Sie die Velxio-Editor-Symbolleiste, um den Code zu kompilieren und auszuführen, und öffnen Sie den seriellen Monitor, um die Ergebnisse zu sehen. Die Leinwand-Symbolleiste ermöglicht es Ihnen, die Schaltung zu zoomen und zu verschieben. Wenn Sie Komponenten hinzufügen müssen, verwenden Sie die Komponentenauswahl.

Velxio Editor-Symbolleiste mit Kompilieren- und Ausführen-Steuerelementen

Velxio Leinwand-Symbolleiste über dem Simulations-Viewport

Velxio Komponentenauswahl-Modal zum Durchsuchen von Teilen nach Kategorie

Viel Spaß beim Bauen!


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
Analoge Sensoren am Raspberry Pi Pico mit Velxio auslesen
Nächster Artikel
Pico I2C EEPROM Lesen/Schreiben: Nichtflüchtigen Speicher im Browser simulieren