[其他]

LUAT ESP32C3驱动ST7735彩屏笔记--如何用最少的接口控制LCD彩屏

[复制链接]
23677|9
手机看帖
扫描二维码
随时随地手机跟帖
gaoyang9992006|  楼主 | 2023-12-7 15:46 | 显示全部楼层 |阅读模式
本帖最后由 gaoyang9992006 于 2023-12-7 17:00 编辑

#申请原创# @21小跑堂

在Arduino开发中,ESP32的默认引脚配置文件为:pin_arduino.h
该文件内有以下内容:
static const uint8_t TX = 21;
static const uint8_t RX = 20;

static const uint8_t SDA = 8;
static const uint8_t SCL = 9;

static const uint8_t SS    = 7;
static const uint8_t MOSI  = 6;
static const uint8_t MISO  = 5;
static const uint8_t SCK   = 4;

static const uint8_t A0 = 0;
static const uint8_t A1 = 1;
static const uint8_t A2 = 2;
static const uint8_t A3 = 3;
static const uint8_t A4 = 4;
static const uint8_t A5 = 5;

#endif /* Pins_Arduino_h */
其中,该LCD屏幕所用的即为SPI接口
所以默认可以使用
static const uint8_t SS    = 7;
static const uint8_t MOSI  = 6;
static const uint8_t MISO  = 5;
static const uint8_t SCK   = 4;
由于该液晶屏只需要单向写入通信,因此只使用了MOSI接口,
于是可以使用MISO的接口用作屏幕上其他端口的控制,比如下面这种

745536571775d12730.png
另外串口占用的引脚,如果不使用的情况下是可以用作IO使用的,该引脚的数字使用编号为21,20
如上图所示测试了GPIO21,经过测试可以作为普通引脚使用。
该屏幕的BL背光引脚,默认悬空则为拉高,点亮,如果该引脚接地则息屏灯。
---------------------------------------------------------------------------------------
当一个系统中只有这一个SPI设备时候,还可以更加精简
例如CS引脚,可以直接接地,这样省去了片选的控制引脚,连接如下所示
4169665717b5b371a6.png
这样系统头文件为SPI预留的4个引脚刚好够用,如果需要实现自动息屏功能,则需要额外再使用一个IO用来定时控制息屏个功能,当没有操作的时候倒计时,进入息屏模式,同样也可以通过按键实现息屏,这就又需要一个引脚了。
如果引脚不够用,无法实现,则可以增加一个开关用于控制该引脚拉低到底,可以是拨动开关,也可以是自锁按键。
---------------------------------------------
继续精简
对于LCD的RESET引脚,也可以省略一个IO,由于单片机本身也具备复位引脚,因此我们可以将该引脚与单片机的RST合并使用,由单片机复位信号复位LCD,这样只要单片机上电,那么LCD就进入复位,开始工作
880356571834a86c9d.png
这样驱动显示屏只需要3个IO引脚即可完成工作。

-----------------------------------------------------------------继续优化
经过上述的操作我们节约出来了GPIO05,刚好此时我们的背光控制BL有希望了,可以用GPIO05给其提供控制信号。
对GPIO05初始化为输出引脚,同时设置初始值为高电平,这样上电即可点亮屏幕。
当需要息屏的时候拉低GPIO05,当遇到点亮触发信号,拉高该引脚。
34824657186711c190.png
至此,我们使用Arduino 为ESP32C3的SPI预留的4个引脚完美的实现了ST7735的LCD彩屏控制。

使用特权

评论回复
评论
21小跑堂 2023-12-12 14:54 回复TA
感谢分享,奖励楼主500家园币!(家园币可兑换礼品) 

相关帖子

laocuo1142| | 2023-12-12 14:34 | 显示全部楼层
控制LCD彩屏的最少接口通常取决于所使用的特定LCD模块和控制器芯片。

使用特权

评论回复
lemonboard| | 2023-12-13 09:16 | 显示全部楼层
我记得CS引脚的作用不是简单的使能与否啊

使用特权

评论回复
gaoyang9992006|  楼主 | 2023-12-13 15:08 | 显示全部楼层
lemonboard 发表于 2023-12-13 09:16
我记得CS引脚的作用不是简单的使能与否啊

CS是片选
CS –从设备选择线 (Chip select)。也叫 SS、CSB、CSN、EN 等,主设备输出片选信号至从设备

使用特权

评论回复
gaoyang9992006|  楼主 | 2023-12-13 15:16 | 显示全部楼层
laocuo1142 发表于 2023-12-12 14:34
控制LCD彩屏的最少接口通常取决于所使用的特定LCD模块和控制器芯片。

看来看去,常用的几个控制芯片的接口都是这几个,最后都可以用这个方法,一个时钟线,一个数据线,一个数据指令选择线,三根线就够实现SPI接口的显示屏通信了,剩下的,就是背光灯要不要控制的问题。如果控制就再加1根线,这样就是我帖子中的最后4根线方案,复位与系统共用,片选直接默认选择。

使用特权

评论回复
drawingchips| | 2023-12-21 16:57 | 显示全部楼层
这个是常用的TFT的彩屏吗?

使用特权

评论回复
gaoyang9992006|  楼主 | 2023-12-23 13:31 | 显示全部楼层
drawingchips 发表于 2023-12-21 16:57
这个是常用的TFT的彩屏吗?

是的,几乎市面上这个接口的都是这几个引脚。

使用特权

评论回复
dongnanxibei| | 2024-2-23 20:46 | 显示全部楼层
非常有价值的一个帖子。

使用特权

评论回复
mintspring| | 2024-2-24 19:23 | 显示全部楼层
好贴。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1878

主题

15576

帖子

197

粉丝