返回

Pico SPI 回环测试:验证你的 RP2040 串行通信

简介

SPI(串行外设接口)是一种同步串行通信协议,广泛用于将微控制器与传感器、显示屏及其他外设连接。在本教程中,我们将使用 Velxio 浏览器内模拟器在 Raspberry Pi Pico 上构建一个简单的 SPI 回环测试。Pico 将通过 SPI0 发送字节并读取回传数据,同时三个 LED 分别直观显示 MOSI、MISO 和 SCK 线路上的活动。这是在转向更复杂项目之前,验证 SPI 硬件和接线是否正常工作的绝佳方式。

Velxio 模拟器画布上的 pico-spi-loopback 电路图

电路详解

让我们看看这个电路中的元件和接线。

元件

接线

Pico 的 SPI0 引脚映射如下:

每个 LED 的阳极(A)连接到相应的 SPI 引脚,阴极(C)连接到 GND(Pico 上的 GND.1)。模拟器中的导线颜色为:

这种简单的设置让你能够看到 SPI 活动:LED 会在数据传输时闪烁。

代码详解

以下是 Pico 的完整 Arduino 代码:

// 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);
}

工作原理

  1. 串口设置:我们以 115200 波特率启动串行通信,以便将结果打印到串口监视器。
  2. SPI 初始化SPI.begin() 初始化 SPI0 外设。SPI.beginTransaction() 将总线配置为 1 MHz 时钟速度、MSB 优先数据顺序和 SPI 模式 0(CPOL=0, CPHA=0)。
  3. 测试数据:我们定义了一个包含五个测试字节的数组:0x550xAA0xFF0x000x42。这些涵盖了交替位、全 1、全 0 和混合模式。
  4. 回环传输:对于每个字节,我们调用 SPI.transfer()。这会同时发送一个字节并接收当前 MISO 线上的字节。由于我们有一个回环(MISO 在外部或内部连接到 MOSI),接收到的字节应与发送的字节匹配。
  5. 结果显示:代码以十六进制打印发送(TX)和接收(RX)的字节,以及“MATCH”或“DIFFER”状态。
  6. 清理SPI.endTransaction() 释放 SPI 总线。

关键概念

常见陷阱与调试技巧

建议的扩展

亲自尝试

准备好构建这个项目了吗?在 Velxio 中打开实时示例并开始实验:

在 Velxio 中打开 Pico SPI 回环

使用 Velxio 编辑器工具栏编译并运行代码,然后打开串口监视器查看结果。画布工具栏允许你缩放和平移电路。如果需要添加元件,请使用元件选择器。

包含编译和运行控件的 Velxio 编辑器工具栏

模拟视口上方的 Velxio 画布工具栏

按类别浏览元件的 Velxio 元件选择器弹窗

祝你构建愉快!


分享到:
David Montero

作者

David Montero

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

GitHub velxio.dev

相关文章


上一篇
在树莓派Pico上使用Velxio读取模拟传感器
下一篇
Pico I2C EEPROM 读写:在浏览器中模拟非易失性存储器