使用DOIT ESP32 DEVKIT V1驱动屏幕ST7789的踩坑之旅

参考资料:
pass
目标:
使用DOIT ESP32 DEVKIT V1,通过驱动TFT_eSPI,点亮屏幕ST7789
关键词:
Arduino,ESP32,DOIT ESP32 DEVKIT V1,ST7789,240*240,TFT_eSPI,ILI9341

前言

最近开始研究单片机,从最简单的Arduino开始
最终目标是自己整一块码表,想着就先点亮屏幕
但实际发现ESP32系列非常混乱,除了芯片大家都叫ESP32以外,底板种类非常多
常见的有30针脚(Pin)和36pin,还有ESP32CAM这种异形规格的
这使得与屏幕连接(SPI协议)产生不少坑,本文将会分析一下自己过程中踩过的坑
本文主要使用DOIT ESP32 DEVKIT V1(后文略称doit),通过TFT_eSPI(后文略称TFT)来驱动屏幕ST7789
Adafruit ST7789/ST7735也使用过,只用于和ESP8266连接(doit失败了)
并且TFT是兼容了Adafruit的,因此略过Adafruit的驱动

码表测试中...

目录

  1. 弄清自己的ESP32是什么底板,知道引脚有哪些
  2. 配置TFT的配置文件User_Setup.h
  3. 使用TFT提供的示例来点亮屏幕

1. ESP32底板的区别

ESP32只是指中间的芯片是ESP32
而下图则是doit的底板,只是其中一种底板和芯片连接的方式(30pin)

本文主要介绍的也是该底板

另外还有这种36Pin的(不在本文讨论范围)

或者ESP32CAM(不在讨论范围)


引脚的不同就会导致其所包含的功能也不同
比如这张图,包含了doit底板各个引脚的所带的功能,所以连接引脚前务必要找到此类引脚说明(可以问卖家要)


注意其中的GPIO 23 22 21 19 18 5 也就是青色的这块

略微普及一下,两台微型机(mcu和屏幕)连接,必须要走协议,就像人和人说话要选择语言
I2C和SPI都是协议之一(本文主要介绍SPI)
而使用协议之前必须要选择正确的引脚,这到现在为止一直让你关注引脚的原因
上图的MOSI SCL等都是每个引脚负责的功能
MOSI即主出从进(mast out slave in),SCL串行时钟,SDA串行数据线,如果一点点都不知道该知识的建议搜索此类的文章

常见的SPI的连接方式

再来看GMT130 ST7789屏幕上的引脚


GMT130 240*240P的屏幕

把屏幕上的针脚按名称接上esp32上所对应的针脚

百分百是可以点亮屏幕的

而且只需要关注其中2个引脚的连接方式

ESP32 屏幕
23或21 MOSI/SDA(SPI协议可以随便选1个,I2C可能需要选择SDA引脚)
22或18 SCL/SCK


剩下的RES DC BLK 引脚理论上可以随便插
但在doit的底板上需要避开GPIO2(2针脚同时控制了蓝灯,会有bug)和RX TX引脚
分享下我的doit与GMT130(ST7789驱动)的引脚连接组合

// TFT的官方配置
#define TFT_MOSI 15 // In some display driver board, it might be written as "SDA" and so on.
#define TFT_SCLK 14
#define TFT_CS   5  // Chip select control pin
#define TFT_DC   27  // Data Command control pin
#define TFT_RST  33  // Reset pin (could connect to Arduino RESET pin)
#define TFT_BL   22  // LED back-light

//我的配置1,完全按照引脚图来配置
#define TFT_MOSI 21 
#define TFT_SCLK 22
#define TFT_DC   4  
#define TFT_RST  23  
//#define TFT_CS   34  // GMT130没有CS引脚
//#define TFT_BL   35  // 背光不需要设置

//我的配置2,根据官方使用修改而来
#define TFT_MOSI 5   //官方使用15,对应HSPI CS0引脚,我使用VSPI CS0,其中V指virtual
#define TFT_SCLK 18  //官方使用14,对应HSPI CLK,我是用VSPI CLK
#define TFT_DC   4  
#define TFT_RST  22  
//#define TFT_CS   34  // GMT130没有CS引脚
//#define TFT_BL   35  // 背光不需要设置

最后再来看个反面案例: Arduino_GFX驱动2.4'SPI串口240x320TFT彩屏(ST7789)

引用原文:
TFT屏型号GMT024-8p10p-SPI VER1.1
金逸晨的,2.4寸,分辨率240x320,参数还不错,淘宝价23.5元
试了TFT_eSPI.h,发现无法正常使用,所以又找了一个库
...

其实TFT是可以驱动的,此人可能没有熟读TFT的配置文件


image.png

点不亮的主要原因可能是GMT024有点奇葩

  1. 是它的BL必须接高电平
  2. CS(chip select)片选引脚必须接,而且可能只能接GPIO5和15.因为doit的引脚规定了


2. 配置TFT_eSPI

2.1 先下载TFT_eSPI的库

2.2 配置文件

只有1个文件需要配置,即User_Setup.h,强烈建议先复制一份备份

image.png

眼尖的可以发现,我按照屏幕的不同,使用不同的配置文件,这是可以在User_Setup_Select.h中进行配置的
只启用需要的配置文件

然后开始配置,作者分了4个Section

2.2.1 选择屏幕的驱动和屏幕尺寸

TFT基本涵盖了大部分的屏幕驱动,如果你不知道自己的屏幕驱动是什么

问卖家!

这里我们启用ST7789,如果点不亮就换个_2

再选择屏幕尺寸


2.2.2 定义针脚

第一段费这么大力气就是为了让读者理解定义针脚的重要性


2.2.3 定义启用的字体

没特别的需求就别动配置,关掉某些字体可以节省存储空间
另外自定义字体还没研究,以后可能会研究下(我觉得中文输出又麻烦又碍事,英文又不是看不懂没必要把时间花这上面)


2.2.4 其他选项

主要是控制SPI协议的频率,没事别动


3. 点亮屏幕

在Arduino编辑器里面随便找个案例就行了
方便起见可以选择一个偏小的160x128的案例, 因为显示的内容都在240x240的范围内


image.png

这里我选择了乒乓球的案例,并且屏幕正常点亮
如果你的屏幕没点亮,请检查接线,大概率是接错了
其他TFT的方法函数不再赘述,官方的案例非常多,想画图形,显示图片都有相应的函数方法提供
实在不知道怎么办请提issue,我也是通过issue解决问题的


假装这是GMT130的好了,我不想重接线了...

4. 其他注意事项

4.1 显示方向

如果你屏幕显示方向不对需要在setup函数中修改tft.setRotation(1); //参数0 1 2 3 四个方向

4.2 红绿显示色相反

如果你明明选择红色却打印了绿色,比如

tft.setTextColor(TFT_RED);    //设置了字体是红色
tft.drawString("hello world",0,0);  //实际打印了绿色

需要修改"User_Setup.h"中的此处

image.png

4.3 黑白相反

打印了白色却显示黑色,则修改此处(去掉其中一个注释)


image.png

4.4 所谓2.4寸 ST7789 240*320屏幕的坑

即刚才演示的那块屏幕
淘宝把它的驱动标记为ST7789V或ST7789,你用ST7789是驱动不了它的


image.png

实际上它的驱动是ILI9341


image.png

同时你可以在"User_Setup.h"中找到
如果你还购买的是金逸晨的屏幕,则大概率要选择_2驱动,不然会花屏

如果有问题可以留言,关于TFT使用的问题请去github提issue,官方回复非常快

--全文完--

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容