1.9寸彩屏
模块来源
采购链接:
https://item.taobao.com/item.htm?id=654142696924&_u=n1q56pn3d72c
资料下载链接:
https://pan.baidu.com/s/1ArmQST7I84UYY7n0aJdEBw
资料提取码:8888
规格参数
工作电压:3.3V
工作电流:50MA
模块尺寸:29(H) x 62(V)MM
像素大小:170(H) x 320(V) RGB
驱动芯片:ST7789V3
通信协议:SPI
管脚数量:8 Pin(2.54mm间距排针)
原理解析
SPI与IIC类似,都分有软件SPI和硬件SPI。
ESP32-S3芯片集成了四个 SPI 控制器:
• SPI0
• SPI1
• 通用 SPI2,即 GP-SPI2
• 通用 SPI3,即 GP-SPI3
SPI0 和 SPI1 控制器主要供内部使用以访问外部 flash 及 PSRAM。我们只能使用SPI2和SPI3。
硬件SPI支持以下特性:
移植过程
我们的目标是将例程移植至ESP32-S3开发板上。已经为大家提供了完整的驱动代码,按照以下步骤,即可完成移植。
软件SPI移植
该屏幕需要设置8个接口,具体接口说明见 表3.4.1-1 各引脚说明。
模块为SPI通信协议的从机,SCL为SPI信号线(SCK),SDA为SPI输出线(MOSI),CS为SPI片选线(NSS)。
如果MCU的GPIO引脚不足,可以将屏幕的两个引脚接口不接入MCU的GPIO。
- 将RES接入MCU的复位引脚,当MCU复位时,屏幕也跟着复位;
- 可以将BLK接入3.3V或悬空,代价是无法控制背光亮度。
这里选择的引脚见表3.4.1-2 软件SPI接线
为大家准备的【LCD】文件夹,复制到自己工程中的main文件夹中。
软件SPI驱动代码:
将LCD文件夹复制到main文件下:
打开自己的工程,将我们刚刚复制过来的文件导入.c和.h文件路径。
- 在VSCode中打开main文件夹下的CMakeLists.txt文件
- 添加这些路径
到这里软件SPI就移植完成了,请移步到 3.5 进行移植验证。
硬件SPI移植
该屏幕需要设置8个接口,具体接口说明见 表3.4.2-1 各引脚说明。
模块为SPI通信协议的从机,SCL为SPI信号线(SCK),SDA为SPI输出线(MOSI),CS为SPI片选线(NSS)。
如果MCU的GPIO引脚不足,可以将屏幕的两个引脚接口不接入MCU的GPIO。
- 将RES接入MCU的复位引脚,当MCU复位时,屏幕也跟着复位;
- 可以将BLK接入3.3V或悬空,代价是无法控制背光亮度。
这里选择的引脚见表3.4.2-2 硬件SPI接线
为大家准备的【LCD】文件夹,复制到自己工程中的main文件夹中。
硬件SPI驱动代码:
将LCD文件夹复制到main文件下:
打开自己的工程,将我们刚刚复制过来的文件导入.c和.h文件路径。
- 在VSCode中打开main文件夹下的CMakeLists.txt文件
- 添加这些路径
到这里硬件SPI就移植完成了,请移步到 3.5 进行移植验证。
移植验证
在main.c中输入代码如下
#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_timer.h"
#include "LCD/lcd_init.h"
#include "LCD/lcd.h"
#include "LCD/pic.h"
void app_main(void)
{
float t=0;
LCD_Init();//LCD初始化
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
while(1)
{
// LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
// LCD_Fill(0,0,LCD_W,LCD_H,RED);
// LCD_Fill(0,0,LCD_W,LCD_H,GREEN);
// LCD_Fill(0,0,LCD_W,LCD_H,BLUE);
// LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
LCD_ShowChinese(40,0,(uint8_t *)"中电子",RED,WHITE,32,0);
LCD_ShowString(10,33,(uint8_t *)"LCD_W:",RED,WHITE,32,0);
LCD_ShowIntNum(106,33,LCD_W,3,RED,WHITE,32);
LCD_ShowString(10,66,(uint8_t *)"LCD_H:",RED,WHITE,32,0);
LCD_ShowIntNum(106,66,LCD_H,3,RED,WHITE,32);
LCD_ShowFloatNum1(10,99,t,4,RED,WHITE,32);
t+=0.11;
LCD_ShowPicture(160,95,40,40,gImage_1);
delay_ms(1000);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
上电效果: