SB Components Micro RP2040 和 ST7789 2.4 TFT LCD SPI 显示屏无法使用任何库一起工作

问题描述 投票:0回答:1

我有一块来自 SB Components 的主板,名为 Micro RP2040(该产品的链接 - 此处)。

有了这个,我还有一个带有 ST7789 控制器的 2.4 英寸 SPI TFT LCD 屏幕(链接到屏幕 - 此处,只需向下滚动即可在该页面上)

在使用 RP2040 Micro 板运行此显示器之前,我决定首先使用 ESP32 开发模块来尝试该显示器并了解其工作原理。该显示器被宣传为具有 ILI9341 控制器,但使用 Adafruit ILI9341 库时,我无法用正在打印的内容填满整个屏幕。我从 Arduino 论坛上的这个帖子诊断并修复了这个错误。

从 @david_prentice 在该线程中的回答,我发现我的显示器有一个 ST7789 控制器,而不是广告上所说的 ILI9341。这让我松了一口气,因为它证明了显示器与 Adafruit ST77XX 库一起使用时可以正常工作。

我使用了相同的库并更改了 RP2040 Micro 引脚排列的代码,当我将其全部连接起来时(通过 10k 电阻,因为 RP2040 板是 5V),我得到的只是白屏。

在使用 ESP32 之前,它工作得很好,这是一个图像 -

display with esp32

另一张草图

display with esp32 2

连接并打开 RP2040 后,我得到的只是

white screen with rp2040

我与 RP2040 微型板的连接

TFT 显示引脚 RP2040 引脚
TFT_CS GPIO 17
TFT_RST GPIO 16
TFT_DC GPIO 15
TFT_SDA(MOSI) GPIO 19
TFT_SCK GPIO 18
TFT_VCC 3.3V
LED 3.3V
TFT_GND 接地

我正在使用除 VCC 和 GND 之外的所有引脚(因为 VCC 有一个我可以连接到的 3.3v 电压)通过 10k 电阻连接到电路板进行此引脚分配。

我尝试使用 TFT_eSPI 库,但我什至无法让它与 ESP32 一起运行...RP2040 微型板都不起作用。

虽然 TFT_eSPI 是基于 RP2040 的板的正确库,但它不起作用..

我使用 ESP32 绘制蜘蛛网的代码 -

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

#define TFT_DC 2
#define TFT_CS 15
#define TFT_MOSI 23
#define TFT_CLK 18
#define TFT_RST 4
#define TFT_MISO 19

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

void setup() {
  Serial.begin(9600);
  tft.init(240, 320);
  tft.fillScreen(ST77XX_BLACK);
  drawPattern();
}

void loop() {
}

void drawPattern() {
  int centerX = tft.width() / 2;
  int centerY = tft.height() / 2;

  for (int radius = 10; radius <= 120; radius += 10) {
    uint16_t color = (radius / 10) % 2 == 0 ? ST77XX_BLUE : ST77XX_CYAN;
    tft.drawCircle(centerX, centerY, radius, color);
  }

  for (int angle = 0; angle < 360; angle += 15) {
    float radians = angle * 3.14159 / 180;
    int x1 = centerX;
    int y1 = centerY;
    int x2 = centerX + 120 * cos(radians);
    int y2 = centerY + 120 * sin(radians);
    uint16_t color = (angle / 15) % 2 == 0 ? ST77XX_RED : ST77XX_YELLOW;
    tft.drawLine(x1, y1, x2, y2, color);
  }

  tft.fillCircle(centerX, centerY, 10, ST77XX_GREEN);
}

这适用于 ESP32,但当我更改引脚号以便将其连接到 RP2040 微型板时,它不适用于 RP2040。

对于 ESP32,所有颜色都会反转,但这是我可以自己解决的另一个问题。

请帮忙,谢谢。

arduino spi rp2040
1个回答
0
投票

我已经成功地解决了这个问题,并得出结论,问题出在主板上。

我必须找到该板的 Github 存储库

在那里,我能够找到电路板的引脚排列,有一件事立即引起了我的注意,那就是引脚排列上的引脚 16 和 18 颠倒了。

GPIO16在丝印上标注为GP18,GPIO18在板上标注为GP16。

这是所有问题的根本原因,因为这两个引脚都被 SPI 接口主动使用。

下面我附上了该板的正确引脚排列。

pinout for Micro RP2040

Github 仓库上也有这个注释,我认为也应该打印在包装上,这是一个非常严重的错误。

Note on the github repo

下面你可以看到我的板,它显示在左侧

  • ...
  • GP20
  • GP19
  • GP16
  • GP17
  • GP18

它应该在的地方,

  • ...
  • GP20
  • GP19
  • GP18
  • GP17
  • GP16

My board

这就是问题所在,一旦我按照板上正确的引脚方案连接引脚,显示器就可以完美工作。

working display yayy :)

© www.soinside.com 2019 - 2024. All rights reserved.