You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编程实现Adafruit Trinket 3V与ST7789显示屏的SPI通信?

实现Adafruit Trinket 3V与ST7789显示屏的SPI通信及SD卡图像显示

一、补全必要引脚连接

你目前的SPI连接还缺两个核心引脚,必须补上才能正常通信:

  • ST7789的SCK(时钟引脚):接Trinket 3V的#2引脚(SPI时钟线)
  • ST7789的CS(片选引脚):选Trinket空闲引脚(比如#3),用于触发显示屏接收数据
  • ST7789的DC(数据/命令引脚):选另一个空闲引脚(比如#4),区分发送的是指令还是图像数据

二、PlatformIO配置文件(platformio.ini)

确保配置正确指定开发板和依赖库:

[env:adafruit_trinket3]
platform = atmelavr
board = adafruit_trinket3
framework = arduino
lib_deps =
  adafruit/Adafruit ST7735 and ST7789 Library@^1.10.0
  adafruit/Adafruit SD Library@^2.5.0
  adafruit/Adafruit GFX Library@^1.11.5

三、基础通信测试代码

先验证显示屏能正常初始化,再扩展SD卡功能:

#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>

// 按实际连接修改引脚定义
#define TFT_CS    3   // Trinket#3
#define TFT_DC    4   // Trinket#4
#define TFT_RST   5   // 你已连接的复位引脚

// 初始化显示屏对象
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  Serial.begin(9600);
  while (!Serial); // 调试用,等待串口连接

  // 初始化显示屏(按你的屏幕分辨率调整参数)
  tft.init(240, 240);
  tft.setRotation(3); // 按需调整显示方向

  // 测试显示内容
  tft.fillScreen(ST77XX_BLACK);
  tft.setTextColor(ST77XX_WHITE);
  tft.setTextSize(2);
  tft.setCursor(10, 10);
  tft.println("ST7789 Test OK!");
}

void loop() {
  // 后续添加SD卡逻辑
}

四、SD卡图像显示实现

  1. 提前将SD卡格式化为FAT32,图像保存为BMP格式(ST7789库原生支持),注意图像尺寸不能超过Trinket的内存上限(建议用160x120或更小的图)
  2. 扩展代码实现SD卡读取与图像显示:
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
#include <SPI.h>
#include <SD.h>

#define TFT_CS    3
#define TFT_DC    4
#define TFT_RST   5
#define SD_CS     6   // SD卡片选引脚(Trinket空闲引脚)

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  Serial.begin(9600);
  while (!Serial);

  // 初始化显示屏
  tft.init(240, 240);
  tft.setRotation(3);
  tft.fillScreen(ST77XX_BLACK);

  // 初始化SD卡
  if (!SD.begin(SD_CS)) {
    tft.setCursor(10, 10);
    tft.println("SD Init Fail!");
    while (1); // 初始化失败则停止运行
  }

  // 读取并显示SD卡中的BMP图像
  if (!tft.drawBMP("/test.bmp", 0, 0)) {
    tft.setCursor(10, 40);
    tft.println("Image Not Found!");
  }
}

void loop() {
  // 无需循环操作
}

五、关键注意事项

  • Trinket 3V RAM仅512字节,无法直接加载大尺寸图像,建议用分块读取方式(可参考库的进阶示例)
  • SPI引脚必须严格对应:SCK→Trinket#2,MOSI(SI)→Trinket#1,MISO(SO)→Trinket#0
  • 检查焊接连接,避免虚焊导致通信中断

内容的提问来源于stack exchange,提问作者Emily Kelley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:50:17