我有一块来自 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 之前,它工作得很好,这是一个图像 -
另一张草图
连接并打开 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,所有颜色都会反转,但这是我可以自己解决的另一个问题。
请帮忙,谢谢。
我已经成功地解决了这个问题,并得出结论,问题出在主板上。
我必须找到该板的 Github 存储库。
在那里,我能够找到电路板的引脚排列,有一件事立即引起了我的注意,那就是引脚排列上的引脚 16 和 18 颠倒了。
GPIO16在丝印上标注为GP18,GPIO18在板上标注为GP16。
这是所有问题的根本原因,因为这两个引脚都被 SPI 接口主动使用。
下面我附上了该板的正确引脚排列。
Github 仓库上也有这个注释,我认为也应该打印在包装上,这是一个非常严重的错误。
下面你可以看到我的板,它显示在左侧
它应该在的地方,
这就是问题所在,一旦我按照板上正确的引脚方案连接引脚,显示器就可以完美工作。