扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

ESP32 IDF开发——RGB LCD显示屏(ST7701S)

01/13 08:50
3663
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1 硬件描述

我这里用的LCD是RGB接口的,驱动IC为ST7701S,用ESP32S3驱动,RGB565 16根数据线,接线如下:

ESP32S3 LCD SPI数据线
IO48 SDA SPI数据线
IO16 SCK SPI时钟线
IO15 CS SPI片选线
IO14 PCLK RGB时钟线
IO13 DE RGB数据使能
IO12 VSYNC 垂直同步
IO11 HSYNC 水平同步
DB0 数据线0
IO10 DB1 数据线1 B1
IO9 DB2 数据线2 B2
IO8 DB3 数据线3 B3
IO7 DB4 数据线4 B4
IO6 DB5 数据线5 B5
IO5 DB6 数据线6 G0
IO4 DB7 数据线7 G1
IO3 DB8 数据线8 G2
IO2 DB9 数据线9 G3
IO1 DB10 数据线10 G4
IO0 DB11 数据线11 G5
DB12 数据线12
IO42 DB13 数据线13 R1
IO41 DB14 数据线14 R2
IO40 DB15 数据线15 R3
IO39 DB16 数据线16 R4
IO38 DB17 数据线17 R5

2 软件编程

开发环境基于VScode + ESP-IDF。关于RGB屏幕显示原理,这里不细说,只讲编程,感兴趣的同学可以自行查阅。

注:关于怎么在Vscode里面搭建ESP-IDF的开环环境,这里不具体说了,网上教程很多,不懂的同学请先自行搭建好环境。

2.1 新建工程

打开ESP-IDF,点击Show example

在这里插入图片描述

选择rgb_panel例程作为我们的工程的基础模版。在这里插入图片描述保存至本地,会得到一个工程模板,如下图:在这里插入图片描述

在最底下的状态栏,配置目标芯片,要选择esp32s3

注:esp32s3具备rgb接口,其他像esp32和esp32s2是没有的。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

打开配置列表,配置时钟、FLASH和PSRAM等参数。

在这里插入图片描述

我的配置如下(仅供参考):

在这里插入图片描述在这里插入图片描述在这里插入图片描述

初步编译一下。

注:因为这个模板默认把lvgl库加进来了,因此在编译的时候会自动下载lvgl组件并参与编译。如果不需要使用lvgl的话可以在idf_component.yml文件里面把lvgl/lvgl: "~8.3.0"删掉,这样就不会把lvgl加入进来,同时,还要把main里面所有跟lvgl相关的代码删掉,才能编译通过。

编译如果通过后,那工程的建立就没问题了。

2.2 编写ST7701S驱动程序

在工程main文件夹目录下新建st7701s.cst7701s.h文件,并且在CMakeLists.txt文件加入"st7701s.c",如下:添加st7701s.c之前:

idf_component_register(SRCS "rgb_lcd_example_main.c" "lvgl_demo_ui.c"                       INCLUDE_DIRS ".")

添加st7701s.c之后:

idf_component_register(SRCS "rgb_lcd_example_main.c" "lvgl_demo_ui.c" "st7701s.c"                       INCLUDE_DIRS ".")

文件目录如下:

在这里插入图片描述然后编写ST7701S驱

动程序,示例代码如下:st7701s.c:

#include "st7701s.h"#define SPI_WriteComm(cmd) st7701s_write_cmd(st7701s_handle, cmd)#define SPI_WriteData(data) st7701s_write_data(st7701s_handle, data)#define Delay(ms) vTaskDelay(ms / portTICK_PERIOD_MS)void ioexpander_init(){};void ioexpander_write_cmd(){};void ioexpander_write_data(){};/** * @brief 新建st7701s对象 * @param sda sda引脚 * @param scl scl引脚 * @param cs  cs引脚 * @param channel_select SPI, I2C通道选择 * @param method_select 可以选择SPI_METHOD,IOEXPANDER_METHOD * @note channel_select可选SPI控制器, SPI3_HOST OR SPI4_HOST in ESP32S3 * @note channel_select可选I2C控制器*/vernon_st7701s_handle st7701s_new_object(int sda, int scl, int cs, char channel_select, char method_select){    // if you use `malloc()`, please set 0 in the area to be assigned.    vernon_st7701s_handle vernon_st7701s_handle = heap_caps_calloc(1, sizeof(vernon_st7701s), MALLOC_CAP_DEFAULT);    vernon_st7701s_handle->method_select = method_select;        if(method_select)    {        vernon_st7701s_handle->spi_io_config_t.miso_io_num = -1;        vernon_st7701s_handle->spi_io_config_t.mosi_io_num = sda;        vernon_st7701s_handle->spi_io_config_t.sclk_io_num = scl;        vernon_st7701s_handle->spi_io_config_t.quadwp_io_num = -1;        vernon_st7701s_handle->spi_io_config_t.quadhd_io_num = -1;        // 默认值,启用DMA应设置为0        vernon_st7701s_handle->spi_io_config_t.max_transfer_sz = SOC_SPI_MAXIMUM_BUFFER_SIZE;        // 不使用DMA最后赋值0        ESP_ERROR_CHECK(spi_bus_initialize(channel_select, &(vernon_st7701s_handle->spi_io_config_t), 0));        vernon_st7701s_handle->st7701s_protocol_config_t.command_bits = 1;        vernon_st7701s_handle->st7701s_protocol_config_t.address_bits = 8;        vernon_st7701s_handle->st7701s_protocol_config_t.clock_speed_hz = 40000000;        /**         * < 时钟极性以及时钟相位设置(CPOL, CPHA):             - 0: (0, 0)            - 1: (0, 1)            - 2: (1, 0)            - 3: (1, 1)            **/        vernon_st7701s_handle->st7701s_protocol_config_t.mode = 0;        vernon_st7701s_handle->st7701s_protocol_config_t.spics_io_num = cs;        vernon_st7701s_handle->st7701s_protocol_config_t.queue_size = 1;        ESP_ERROR_CHECK(spi_bus_add_device(channel_select, &(vernon_st7701s_handle->st7701s_protocol_config_t),                                        &(vernon_st7701s_handle->spi_device)));                return vernon_st7701s_handle;    }    else    {        ioexpander_init();    }    return NULL;}/** * @brief 屏幕初始化 * @param st7701s_handle 类实例指针 * @param type 选择初始化类型 [1~x] * @note 以下类型来自不同地方,对应命令功能未知*/void st7701s_screen_init(vernon_st7701s_handle st7701s_handle, unsigned char type){    if (type == 1)    {//从商家提供的资料复制        SPI_WriteComm(0x11); //sleep out í?3??ˉ???£ê?        Delay(10);        //--------------------------Bank0 Setting-----------------------------------//        //----------------------Display Control setting-----------------------------//        //--------------------------Bank1 Setting-----------------------------------//        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x10);        SPI_WriteComm(0xC0);        SPI_WriteData(0x3B);        SPI_WriteData(0x00);        SPI_WriteComm(0xC1);        SPI_WriteData(0x0D);        SPI_WriteData(0x02);        SPI_WriteComm(0xC2);        SPI_WriteData(0x31);        SPI_WriteData(0x05);    //--------------------------Gamma Cluster Setting--------------------------//        SPI_WriteComm(0xB0);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x18);        SPI_WriteData(0x0E);        SPI_WriteData(0x11);        SPI_WriteData(0x06);        SPI_WriteData(0x07);        SPI_WriteData(0x08);        SPI_WriteData(0x07);        SPI_WriteData(0x22);        SPI_WriteData(0x04);        SPI_WriteData(0x12);        SPI_WriteData(0x0F);        SPI_WriteData(0xAA);        SPI_WriteData(0x31);        SPI_WriteData(0x18);        SPI_WriteComm(0xB1);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x19);        SPI_WriteData(0x0E);        SPI_WriteData(0x12);        SPI_WriteData(0x07);        SPI_WriteData(0x08);        SPI_WriteData(0x08);        SPI_WriteData(0x08);        SPI_WriteData(0x22);        SPI_WriteData(0x04);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteData(0xA9);        SPI_WriteData(0x32);        SPI_WriteData(0x18);    //-------------------------Bank1 Setting---------------------------------//        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteComm(0xb0);        SPI_WriteData(0x60);    //--------------------------Vcom Setting--------------------------------//        SPI_WriteComm(0xb1);        SPI_WriteData(0x32);    //-----------------------End Vcom Setting------------------------------//        SPI_WriteComm(0xb2);        SPI_WriteData(0x07);        SPI_WriteComm(0xb3);        SPI_WriteData(0x80);        SPI_WriteComm(0xb5);        SPI_WriteData(0x49);        SPI_WriteComm(0xb7);        SPI_WriteData(0x85);        SPI_WriteComm(0xb8);        SPI_WriteData(0x21);        SPI_WriteComm(0xC1);        SPI_WriteData(0x78);        SPI_WriteComm(0xC2);        SPI_WriteData(0x78);        // SPI_WriteComm(0xD0);        // SPI_WriteData(0x88);    //-----------End Power Control Registers Initial ------------------//        // DelayNms(100);    //----------------GIP Setting--------------------------------------//        SPI_WriteComm(0xE0);        SPI_WriteData(0x00);        SPI_WriteData(0x1B);        SPI_WriteData(0x02);        SPI_WriteComm(0xE1);        SPI_WriteData(0x08);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x07);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE2);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteData(0xED);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0xEC);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0xE3);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteComm(0xE4);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE5);        SPI_WriteData(0x0A);        SPI_WriteData(0xE9);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0C);        SPI_WriteData(0xEB);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0E);        SPI_WriteData(0xED);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x10);        SPI_WriteData(0xEF);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteComm(0xE6);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteComm(0xE7);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE8);        SPI_WriteData(0x09);        SPI_WriteData(0xE8);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0B);        SPI_WriteData(0xEA);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0D);        SPI_WriteData(0xEC);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0F);        SPI_WriteData(0xEE);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteComm(0xEB);        SPI_WriteData(0x02);        SPI_WriteData(0x00);        SPI_WriteData(0xE4);        SPI_WriteData(0xE4);        SPI_WriteData(0x88);        SPI_WriteData(0x00);        SPI_WriteData(0x40);        SPI_WriteComm(0xEC);        SPI_WriteData(0x3c);        SPI_WriteData(0x00);        SPI_WriteComm(0xED); //ok        SPI_WriteData(0xAB);        SPI_WriteData(0x89);        SPI_WriteData(0x76);        SPI_WriteData(0x54);        SPI_WriteData(0x02);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0x20);        SPI_WriteData(0x45);        SPI_WriteData(0x67);        SPI_WriteData(0x98);        SPI_WriteData(0xBA);        SPI_WriteComm(0x35); SPI_WriteData(0x00);    // Sleep-Out        SPI_WriteComm(0x36); SPI_WriteData(0x00);//BGR        // SPI_WriteComm(0x36); SPI_WriteData(0x08); //RGB        // SPI_WriteComm(0x3A); SPI_WriteData(0x77); //24bit        // SPI_WriteComm(0x20);//display inversion off        SPI_WriteComm(0x3A); SPI_WriteData(0x55);//16bit        // SPI_WriteComm(0x3A); SPI_WriteData(0x66);//18bit        // SPI_WriteComm(0x22);//All pixel off                // SPI_WriteCmd(0x21);    //Normal Black        // SPI_WriteComm(0x11);//sleep out í?3??ˉ???£ê?    //--------------------------Bank3 Setting--------------------------------//        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x13);        SPI_WriteComm(0xE5);        SPI_WriteData(0xE4);        Delay(10);        SPI_WriteComm(0x29);    }    else if(type == 2)    {//从Arduino GFX库中移植        SPI_WriteComm(0x11); //reset command        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x10);        SPI_WriteComm(0xC0);        SPI_WriteData(0x3B);        SPI_WriteData(0x00);                SPI_WriteComm(0xC1);        SPI_WriteData(0x0D);        SPI_WriteData(0x02);        SPI_WriteComm(0xC2);        SPI_WriteData(0x31);        SPI_WriteData(0x05);        SPI_WriteComm(0xCD);        SPI_WriteData(0x08);        SPI_WriteComm(0xB0);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x18);        SPI_WriteData(0x0E);        SPI_WriteData(0x11);        SPI_WriteData(0x06);        SPI_WriteData(0x07);        SPI_WriteData(0x08);        SPI_WriteData(0x07);        SPI_WriteData(0x22);        SPI_WriteData(0x04);        SPI_WriteData(0x12);        SPI_WriteData(0x0F);        SPI_WriteData(0xAA);        SPI_WriteData(0x31);        SPI_WriteData(0x18);        SPI_WriteComm(0xB1);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x19);        SPI_WriteData(0x0E);        SPI_WriteData(0x12);        SPI_WriteData(0x07);        SPI_WriteData(0x08);        SPI_WriteData(0x08);        SPI_WriteData(0x08);        SPI_WriteData(0x22);        SPI_WriteData(0x04);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteData(0xA9);        SPI_WriteData(0x32);        SPI_WriteData(0x18);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteComm(0xB0);        SPI_WriteData(0x60);        SPI_WriteComm(0xB1);        SPI_WriteData(0x32);        SPI_WriteComm(0xB2);        SPI_WriteData(0x07);        SPI_WriteComm(0xB3);        SPI_WriteData(0x80);        SPI_WriteComm(0xB5);        SPI_WriteData(0x49);        SPI_WriteComm(0xB7);        SPI_WriteData(0x85);        SPI_WriteComm(0xB8);        SPI_WriteData(0x21);        SPI_WriteComm(0xC1);        SPI_WriteData(0x78);        SPI_WriteComm(0xC2);        SPI_WriteData(0x78);        SPI_WriteComm(0xE0);        SPI_WriteData(0x00);        SPI_WriteData(0x1B);        SPI_WriteData(0x02);                SPI_WriteComm(0xE1);        SPI_WriteData(0x08);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x07);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE2);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteData(0xED);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0xEC);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0xE3);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteComm(0xE4);        SPI_WriteData(0x44);        SPI_WriteData(0x44);                SPI_WriteComm(0xE5);        SPI_WriteData(0x0A);        SPI_WriteData(0xE9);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0C);        SPI_WriteData(0xEB);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0E);        SPI_WriteData(0xED);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x10);        SPI_WriteData(0xEF);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteComm(0xE6);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteComm(0xE7);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE8);        SPI_WriteData(0x09);        SPI_WriteData(0xE8);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0B);        SPI_WriteData(0xEA);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0D);        SPI_WriteData(0xEC);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0F);        SPI_WriteData(0xEE);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteComm(0xEB);        SPI_WriteData(0x02);        SPI_WriteData(0x00);        SPI_WriteData(0xE4);        SPI_WriteData(0xE4);        SPI_WriteData(0x88);        SPI_WriteData(0x00);        SPI_WriteData(0x40);                SPI_WriteComm(0xEC);        SPI_WriteData(0x3C);        SPI_WriteData(0x00);        SPI_WriteComm(0xED);        SPI_WriteData(0xAB);        SPI_WriteData(0x89);        SPI_WriteData(0x76);        SPI_WriteData(0x54);        SPI_WriteData(0x02);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0x20);        SPI_WriteData(0x45);        SPI_WriteData(0x67);        SPI_WriteData(0x98);        SPI_WriteData(0xBA);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x13);        SPI_WriteComm(0xE5);        SPI_WriteData(0xE4);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0x3A);        SPI_WriteData(0x60);        SPI_WriteComm(0x11);        Delay(120);        SPI_WriteComm(0x29);        //after batchOperation        SPI_WriteComm(0x21);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x10);        SPI_WriteComm(0xC7);        SPI_WriteData(0x00);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0x36);        SPI_WriteData(0x00); //BGR        // SPI_WriteData(0x08); //RGB    }    else if(type == 3)    {//网络查询复制, https://www.bilibili.com/video/BV1hB4y197YN/        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x13);        SPI_WriteComm(0xEF);        SPI_WriteData(0x08);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x10);        SPI_WriteComm(0xC0);        SPI_WriteData(0x3B);        SPI_WriteData(0x00);        SPI_WriteComm(0xC1);        SPI_WriteData(0x0D);        SPI_WriteData(0x02);        SPI_WriteComm(0xC2);        SPI_WriteData(0x21);        SPI_WriteData(0x08);        SPI_WriteComm(0xCD);        SPI_WriteData(0x08);//18-bit/pixel: MDT=0:D[21:16]=R,D[13:8]=G,D[5:0]=B(CDH=00) ;                            //              MDT=1:D[17:12]=R,D[11:6]=G,D[5:0]=B(CDH=08) ;        SPI_WriteComm(0xB0);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x18);        SPI_WriteData(0x0E);        SPI_WriteData(0x11);        SPI_WriteData(0x06);        SPI_WriteData(0x07);        SPI_WriteData(0x08);        SPI_WriteData(0x07);        SPI_WriteData(0x22);        SPI_WriteData(0x04);        SPI_WriteData(0x12);        SPI_WriteData(0x0F);        SPI_WriteData(0xAA);        SPI_WriteData(0x31);        SPI_WriteData(0x18);        SPI_WriteComm(0xB1);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x19);        SPI_WriteData(0x0E);        SPI_WriteData(0x12);        SPI_WriteData(0x07);        SPI_WriteData(0x08);        SPI_WriteData(0x08);        SPI_WriteData(0x08);        SPI_WriteData(0x22);        SPI_WriteData(0x04);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteData(0xA9);        SPI_WriteData(0x32);        SPI_WriteData(0x18);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteComm(0xB0);        SPI_WriteData(0x60);        SPI_WriteComm(0xB1);        SPI_WriteData(0x30);        SPI_WriteComm(0xB2);        SPI_WriteData(0x87);        SPI_WriteComm(0xB3);        SPI_WriteData(0x80);        SPI_WriteComm(0xB5);        SPI_WriteData(0x49);        SPI_WriteComm(0xB7);        SPI_WriteData(0x85);        SPI_WriteComm(0xB8);        SPI_WriteData(0x21);        SPI_WriteComm(0xC1);        SPI_WriteData(0x78);        SPI_WriteComm(0xC2);        SPI_WriteData(0x78);        Delay(2);        SPI_WriteComm(0xE0);        SPI_WriteData(0x00);        SPI_WriteData(0x1B);        SPI_WriteData(0x02);        SPI_WriteComm(0xE1);        SPI_WriteData(0x08);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x07);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE2);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteData(0xED);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0xEC);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0xE3);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteComm(0xE4);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE5);        SPI_WriteData(0x0A);        SPI_WriteData(0xE9);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0C);        SPI_WriteData(0xEB);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0E);        SPI_WriteData(0xED);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x10);        SPI_WriteData(0xEF);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteComm(0xE6);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x11);        SPI_WriteComm(0xE7);        SPI_WriteData(0x44);        SPI_WriteData(0x44);        SPI_WriteComm(0xE8);        SPI_WriteData(0x09);        SPI_WriteData(0xE8);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0B);        SPI_WriteData(0xEA);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0D);        SPI_WriteData(0xEC);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteData(0x0F);        SPI_WriteData(0xEE);        SPI_WriteData(0xD8);        SPI_WriteData(0xA0);        SPI_WriteComm(0xEB);        SPI_WriteData(0x02);        SPI_WriteData(0x00);        SPI_WriteData(0xE4);        SPI_WriteData(0xE4);        SPI_WriteData(0x88);        SPI_WriteData(0x00);        SPI_WriteData(0x40);        SPI_WriteComm(0xEC);        SPI_WriteData(0x3C);        SPI_WriteData(0x00);        SPI_WriteComm(0xED);        SPI_WriteData(0xAB);        SPI_WriteData(0x89);        SPI_WriteData(0x76);        SPI_WriteData(0x54);        SPI_WriteData(0x02);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0xFF);        SPI_WriteData(0x20);        SPI_WriteData(0x45);        SPI_WriteData(0x67);        SPI_WriteData(0x98);        SPI_WriteData(0xBA);        SPI_WriteComm(0xEF);        SPI_WriteData(0x10);        SPI_WriteData(0x0D);        SPI_WriteData(0x04);        SPI_WriteData(0x08);        SPI_WriteData(0x3F);        SPI_WriteData(0x1F);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0x3A);        SPI_WriteData(0x50);    //55/50=16bit(RGB565);66=18bit(RGB666);77或默认不写3AH是=24bit(RGB888)        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x13);        SPI_WriteComm(0xE8);        SPI_WriteData(0x00);        SPI_WriteData(0x0E);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0x11);        Delay(12);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x13);        SPI_WriteComm(0xE8);        SPI_WriteData(0x00);        SPI_WriteData(0x0C);        Delay(1);        SPI_WriteComm(0xE8);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0x36);        SPI_WriteData(0x00);        SPI_WriteComm(0x20);        SPI_WriteComm(0x29);        Delay(2);    }    else if(type == 4)    {//网络查询复制, https://www.bilibili.com/video/BV1hB4y197YN/        SPI_WriteComm(0x11);         Delay(1);                    SPI_WriteComm (0xFF);        SPI_WriteData (0x77);        SPI_WriteData (0x01);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x10);        SPI_WriteComm (0xC0);        SPI_WriteData (0x3B);        SPI_WriteData (0x00);        SPI_WriteComm (0xC1);        SPI_WriteData (0x0D);        SPI_WriteData (0x02);        SPI_WriteComm (0xC2);        SPI_WriteData (0x31);        SPI_WriteData (0x05);        SPI_WriteComm (0xB0);        SPI_WriteData (0x00);        SPI_WriteData (0x11);        SPI_WriteData (0x18);        SPI_WriteData (0x0E);        SPI_WriteData (0x11);        SPI_WriteData (0x06);        SPI_WriteData (0x07);        SPI_WriteData (0x08);        SPI_WriteData (0x07);        SPI_WriteData (0x22);        SPI_WriteData (0x04);        SPI_WriteData (0x12);        SPI_WriteData (0x0F);        SPI_WriteData (0xAA);        SPI_WriteData (0x31);        SPI_WriteData (0x18);        SPI_WriteComm (0xB1);        SPI_WriteData (0x00);        SPI_WriteData (0x11);        SPI_WriteData (0x19);        SPI_WriteData (0x0E);        SPI_WriteData (0x12);        SPI_WriteData (0x07);        SPI_WriteData (0x08);        SPI_WriteData (0x08);        SPI_WriteData (0x08);        SPI_WriteData (0x22);        SPI_WriteData (0x04);        SPI_WriteData (0x11);        SPI_WriteData (0x11);        SPI_WriteData (0xA9);        SPI_WriteData (0x32);        SPI_WriteData (0x18);        SPI_WriteComm (0xFF);        SPI_WriteData (0x77);        SPI_WriteData (0x01);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x11);        SPI_WriteComm (0xB0);        SPI_WriteData (0x60);        SPI_WriteComm (0xB1);        SPI_WriteData (0x30);        SPI_WriteComm (0xB2);        SPI_WriteData (0x87);        SPI_WriteComm (0xB3);        SPI_WriteData (0x80);        SPI_WriteComm (0xB5);        SPI_WriteData (0x49);        SPI_WriteComm (0xB7);        SPI_WriteData (0x85);        SPI_WriteComm (0xB8);        SPI_WriteData (0x21);        SPI_WriteComm (0xC1);        SPI_WriteData (0x78);        SPI_WriteComm (0xC2);        SPI_WriteData (0x78);        Delay(2);        SPI_WriteComm (0xE0);        SPI_WriteData (0x00);        SPI_WriteData (0x1B);        SPI_WriteData (0x02);        SPI_WriteComm (0xE1);        SPI_WriteData (0x08);        SPI_WriteData (0xA0);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x07);        SPI_WriteData (0xA0);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x44);        SPI_WriteData (0x44);        SPI_WriteComm (0xE2);        SPI_WriteData (0x11);        SPI_WriteData (0x11);        SPI_WriteData (0x44);        SPI_WriteData (0x44);        SPI_WriteData (0xED);        SPI_WriteData (0xA0);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0xEC);        SPI_WriteData (0xA0);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteComm (0xE3);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x11);        SPI_WriteData (0x11);        SPI_WriteComm (0xE4);        SPI_WriteData (0x44);        SPI_WriteData (0x44);        SPI_WriteComm (0xE5);        SPI_WriteData (0x0A);        SPI_WriteData (0xE9);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteData (0x0C);        SPI_WriteData (0xEB);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteData (0x0E);        SPI_WriteData (0xED);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteData (0x10);        SPI_WriteData (0xEF);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteComm (0xE6);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x11);        SPI_WriteData (0x11);        SPI_WriteComm (0xE7);        SPI_WriteData (0x44);        SPI_WriteData (0x44);        SPI_WriteComm (0xE8);        SPI_WriteData (0x09);        SPI_WriteData (0xE8);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteData (0x0B);        SPI_WriteData (0xEA);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteData (0x0D);        SPI_WriteData (0xEC);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteData (0x0F);        SPI_WriteData (0xEE);        SPI_WriteData (0xD8);        SPI_WriteData (0xA0);        SPI_WriteComm (0xEB);        SPI_WriteData (0x02);        SPI_WriteData (0x00);        SPI_WriteData (0xE4);        SPI_WriteData (0xE4);        SPI_WriteData (0x88);        SPI_WriteData (0x00);        SPI_WriteData (0x40);        SPI_WriteComm (0xEC);        SPI_WriteData (0x3C);        SPI_WriteData (0x00);        SPI_WriteComm (0xED);        SPI_WriteData (0xAB);        SPI_WriteData (0x89);        SPI_WriteData (0x76);        SPI_WriteData (0x54);        SPI_WriteData (0x02);        SPI_WriteData (0xFF);        SPI_WriteData (0xFF);        SPI_WriteData (0xFF);        SPI_WriteData (0xFF);        SPI_WriteData (0xFF);        SPI_WriteData (0xFF);        SPI_WriteData (0x20);        SPI_WriteData (0x45);        SPI_WriteData (0x67);        SPI_WriteData (0x98);        SPI_WriteData (0xBA);        SPI_WriteComm (0xFF);        SPI_WriteData (0x77);        SPI_WriteData (0x01);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x10);        // SPI_WriteComm(0xCD);        // SPI_WriteData(0x0a);                         SPI_WriteComm(0x36);         SPI_WriteData(0x00); //RGB        SPI_WriteComm (0xE5);        SPI_WriteData (0xE4);        // SPI_WriteComm(0x3A); SPI_WriteData(0x66); //24bit        // SPI_WriteComm(0x20);//display inversion off        SPI_WriteComm(0x3A); SPI_WriteData(0x55);//16bit        // SPI_WriteComm(0x3A); SPI_WriteData(0x66);//18bit``````````````````````````````````````````````````````````````````````																																																																																																								        // SPI_WriteComm(0x22);//All pixel off        SPI_WriteComm (0x2a);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x01);        SPI_WriteData (0xdf);        SPI_WriteComm (0x2b);        SPI_WriteData (0x00);        SPI_WriteData (0x00);        SPI_WriteData (0x03);        SPI_WriteData (0x55);        SPI_WriteComm (0x29);    }    else if(type == 5)    {// 2.1寸圆屏厂商提供驱动 - 华迪创显        Delay(120);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x10);        SPI_WriteComm(0xC0);        SPI_WriteData(0x3B);//Scan line	        SPI_WriteData(0x00);        SPI_WriteComm(0xC1);        SPI_WriteData(0x0B);	//VBP        SPI_WriteData(0x02);        SPI_WriteComm(0xC2);        SPI_WriteData(0x07);        SPI_WriteData(0x02);        SPI_WriteComm(0xCC);        SPI_WriteData(0x10);        //SPI_WriteComm(0xCD);//RGB format        //SPI_WriteData(0x08);        //用565时屏蔽    666打开        SPI_WriteComm(0xB0); // IPS           SPI_WriteData(0x00); // 255         SPI_WriteData(0x11); // 251            SPI_WriteData(0x16); // 247  down        SPI_WriteData(0x0e); // 239            SPI_WriteData(0x11); // 231            SPI_WriteData(0x06); // 203            SPI_WriteData(0x05); // 175         SPI_WriteData(0x09); // 147            SPI_WriteData(0x08); // 108            SPI_WriteData(0x21); // 80          SPI_WriteData(0x06); // 52           SPI_WriteData(0x13); // 24            SPI_WriteData(0x10); // 16            SPI_WriteData(0x29); // 8    down        SPI_WriteData(0x31); // 4            SPI_WriteData(0x18); // 0           SPI_WriteComm(0xB1);//  IPS	           SPI_WriteData(0x00);//  255         SPI_WriteData(0x11);//  251        SPI_WriteData(0x16);//  247   down        SPI_WriteData(0x0e);//  239        SPI_WriteData(0x11);//  231        SPI_WriteData(0x07);//  203            SPI_WriteData(0x05);//  175        SPI_WriteData(0x09);//  147          SPI_WriteData(0x09);//  108          SPI_WriteData(0x21);//  80         SPI_WriteData(0x05);//  52           SPI_WriteData(0x13);//  24         SPI_WriteData(0x11);//  16         SPI_WriteData(0x2a);//  8  down         SPI_WriteData(0x31);//  4          SPI_WriteData(0x18);//  0          SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteComm(0xB0);  //VOP  3.5375+ *x 0.0125        SPI_WriteData(0x6d);  //5D                SPI_WriteComm(0xB1); 	//VCOM amplitude setting          SPI_WriteData(0x37);  //                SPI_WriteComm(0xB2); 	//VGH Voltage setting          SPI_WriteData(0x81);	//12V        SPI_WriteComm(0xB3);        SPI_WriteData(0x80);        SPI_WriteComm(0xB5); 	//VGL Voltage setting          SPI_WriteData(0x43);	//-8.3V        SPI_WriteComm(0xB7);        SPI_WriteData(0x85);        SPI_WriteComm(0xB8);        SPI_WriteData(0x20);        SPI_WriteComm(0xC1);        SPI_WriteData(0x78);        SPI_WriteComm(0xC2);        SPI_WriteData(0x78);        SPI_WriteComm(0xD0);        SPI_WriteData(0x88);        SPI_WriteComm(0xE0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x02);        SPI_WriteComm(0xE1);        SPI_WriteData(0x03);	        SPI_WriteData(0xA0);        SPI_WriteData(0x00);	        SPI_WriteData(0x00);        SPI_WriteData(0x04);	        SPI_WriteData(0xA0);        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);        SPI_WriteData(0x20);        SPI_WriteData(0x20);        SPI_WriteComm(0xE2);        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	          SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);        SPI_WriteComm(0xE3);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x00);        SPI_WriteComm(0xE4);        SPI_WriteData(0x22);        SPI_WriteData(0x00);        SPI_WriteComm(0xE5);		        SPI_WriteData(0x05);	        SPI_WriteData(0xEC);	        SPI_WriteData(0xA0);        SPI_WriteData(0xA0);        SPI_WriteData(0x07);	        SPI_WriteData(0xEE);	        SPI_WriteData(0xA0);        SPI_WriteData(0xA0);        SPI_WriteData(0x00);        SPI_WriteData(0x00);	        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);	        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0xE6);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x11);        SPI_WriteData(0x00);        SPI_WriteComm(0xE7);        SPI_WriteData(0x22);        SPI_WriteData(0x00);        SPI_WriteComm(0xE8);		        SPI_WriteData(0x06);	        SPI_WriteData(0xED);	        SPI_WriteData(0xA0);        SPI_WriteData(0xA0);        SPI_WriteData(0x08);	        SPI_WriteData(0xEF);	        SPI_WriteData(0xA0);         SPI_WriteData(0xA0);        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);	        SPI_WriteData(0x00);	        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0xEB);        SPI_WriteData(0x00); 	        SPI_WriteData(0x00);        SPI_WriteData(0x40);        SPI_WriteData(0x40);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);          SPI_WriteComm(0xED);          SPI_WriteData(0xFF);         SPI_WriteData(0xFF);          SPI_WriteData(0xFF); 	        SPI_WriteData(0xBA); 		        SPI_WriteData(0x0A); 	        SPI_WriteData(0xBF); 	        SPI_WriteData(0x45); 	        SPI_WriteData(0xFF);         SPI_WriteData(0xFF);          SPI_WriteData(0x54); 	        SPI_WriteData(0xFB); 	        SPI_WriteData(0xA0); 	        SPI_WriteData(0xAB); 	        SPI_WriteData(0xFF);         SPI_WriteData(0xFF);         SPI_WriteData(0xFF);         SPI_WriteComm(0xEF);        SPI_WriteData(0x10);         SPI_WriteData(0x0D);         SPI_WriteData(0x04);         SPI_WriteData(0x08);         SPI_WriteData(0x3F);         SPI_WriteData(0x1F);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x13);        SPI_WriteComm(0xEF);        SPI_WriteData(0x08);        SPI_WriteComm(0xFF);        SPI_WriteData(0x77);        SPI_WriteData(0x01);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteData(0x00);        SPI_WriteComm(0x11);        Delay(120);        SPI_WriteComm(0x29);        SPI_WriteComm(0x36);        SPI_WriteData(0x08);        SPI_WriteComm(0x3A);        SPI_WriteData(0x70);  //55/50=16bit(RGB565);66=18bit(RGB666);77或默认不写3AH是=24bit(RGB888)      }    else if(type == 6)    {//网络查询,https://blog.csdn.net/qq_37859760/article/details/118311157        SPI_WriteComm (0xFF);             SPI_WriteData (0x77);           SPI_WriteData (0x01);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x13);                   SPI_WriteComm (0xEF);             SPI_WriteData (0x08);                   SPI_WriteComm (0xFF);             SPI_WriteData (0x77);           SPI_WriteData (0x01);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x10);                   SPI_WriteComm (0xC0);             SPI_WriteData (0xE5);           SPI_WriteData (0x02);                   SPI_WriteComm (0xC1);             SPI_WriteData (0x0C);           SPI_WriteData (0x0A);                   SPI_WriteComm (0xC2);             SPI_WriteData (0x07);           SPI_WriteData (0x0F);                   SPI_WriteComm (0xC3);             SPI_WriteData (0x02);                   SPI_WriteComm (0xCC);             SPI_WriteData (0x10);                   SPI_WriteComm (0xB0);             SPI_WriteData (0x00);           SPI_WriteData (0x08);           SPI_WriteData (0x51);           SPI_WriteData (0x0D);           SPI_WriteData (0xCE);           SPI_WriteData (0x06);           SPI_WriteData (0x00);           SPI_WriteData (0x08);           SPI_WriteData (0x08);           SPI_WriteData (0x1D);           SPI_WriteData (0x02);           SPI_WriteData (0xD0);           SPI_WriteData (0x0F);           SPI_WriteData (0x6F);           SPI_WriteData (0x36);           SPI_WriteData (0x3F);                   SPI_WriteComm (0xB1);             SPI_WriteData (0x00);           SPI_WriteData (0x10);           SPI_WriteData (0x4F);           SPI_WriteData (0x0C);           SPI_WriteData (0x11);           SPI_WriteData (0x05);           SPI_WriteData (0x00);           SPI_WriteData (0x07);           SPI_WriteData (0x07);           SPI_WriteData (0x1F);           SPI_WriteData (0x05);           SPI_WriteData (0xD3);           SPI_WriteData (0x11);           SPI_WriteData (0x6E);           SPI_WriteData (0x34);           SPI_WriteData (0x3F);                   SPI_WriteComm (0xFF);             SPI_WriteData (0x77);           SPI_WriteData (0x01);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x11);                   SPI_WriteComm (0xB0);             SPI_WriteData (0x4D);                   SPI_WriteComm (0xB1);             SPI_WriteData (0x1C);                   SPI_WriteComm (0xB2);             SPI_WriteData (0x87);                   SPI_WriteComm (0xB3);             SPI_WriteData (0x80);                   SPI_WriteComm (0xB5);             SPI_WriteData (0x47);                   SPI_WriteComm (0xB7);             SPI_WriteData (0x85);                   SPI_WriteComm (0xB8);             SPI_WriteData (0x21);                   SPI_WriteComm (0xB9);             SPI_WriteData (0x10);                   SPI_WriteComm (0xC1);             SPI_WriteData (0x78);                   SPI_WriteComm (0xC2);             SPI_WriteData (0x78);                   SPI_WriteComm (0xD0);             SPI_WriteData (0x88);                   Delay(100);                                SPI_WriteComm (0xE0);             SPI_WriteData (0x80);           SPI_WriteData (0x00);           SPI_WriteData (0x02);                   SPI_WriteComm (0xE1);             SPI_WriteData (0x04);           SPI_WriteData (0xA0);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x05);           SPI_WriteData (0xA0);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x60);           SPI_WriteData (0x60);                   SPI_WriteComm (0xE2);             SPI_WriteData (0x30);           SPI_WriteData (0x30);           SPI_WriteData (0x60);           SPI_WriteData (0x60);           SPI_WriteData (0x3C);           SPI_WriteData (0xA0);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x3D);           SPI_WriteData (0xA0);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x00);                   SPI_WriteComm (0xE3);             SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x33);           SPI_WriteData (0x33);                   SPI_WriteComm (0xE4);             SPI_WriteData (0x44);           SPI_WriteData (0x44);                   SPI_WriteComm (0xE5);             SPI_WriteData (0x06);           SPI_WriteData (0x3E);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);           SPI_WriteData (0x08);           SPI_WriteData (0x40);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);           SPI_WriteData (0x0A);           SPI_WriteData (0x42);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);           SPI_WriteData (0x0C);           SPI_WriteData (0x44);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);                   SPI_WriteComm (0xE6);             SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x33);           SPI_WriteData (0x33);                   SPI_WriteComm (0xE7);             SPI_WriteData (0x44);           SPI_WriteData (0x44);                   SPI_WriteComm (0xE8);             SPI_WriteData (0x07);           SPI_WriteData (0x3F);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);           SPI_WriteData (0x09);           SPI_WriteData (0x41);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);           SPI_WriteData (0x0B);           SPI_WriteData (0x43);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);           SPI_WriteData (0x0D);           SPI_WriteData (0x45);           SPI_WriteData (0xA0);           SPI_WriteData (0xA0);                   SPI_WriteComm (0xEB);             SPI_WriteData (0x00);           SPI_WriteData (0x01);           SPI_WriteData (0x4E);           SPI_WriteData (0x4E);           SPI_WriteData (0xEE);           SPI_WriteData (0x44);           SPI_WriteData (0x00);                   SPI_WriteComm (0xED);             SPI_WriteData (0xFF);           SPI_WriteData (0xFF);           SPI_WriteData (0x04);           SPI_WriteData (0x56);           SPI_WriteData (0x72);           SPI_WriteData (0xFF);           SPI_WriteData (0xFF);           SPI_WriteData (0xFF);           SPI_WriteData (0xFF);           SPI_WriteData (0xFF);           SPI_WriteData (0xFF);           SPI_WriteData (0x27);           SPI_WriteData (0x65);           SPI_WriteData (0x40);           SPI_WriteData (0xFF);           SPI_WriteData (0xFF);                   SPI_WriteComm (0xEF);             SPI_WriteData (0x10);           SPI_WriteData (0x0D);           SPI_WriteData (0x04);           SPI_WriteData (0x08);           SPI_WriteData (0x3F);           SPI_WriteData (0x1F);                   SPI_WriteComm (0xFF);             SPI_WriteData (0x77);           SPI_WriteData (0x01);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x13);                   SPI_WriteComm (0xE8);             SPI_WriteData (0x00);           SPI_WriteData (0x0E);                   SPI_WriteComm (0xFF);             SPI_WriteData (0x77);           SPI_WriteData (0x01);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x00);                   SPI_WriteComm (0x11);                     Delay(120);                                SPI_WriteComm (0xFF);             SPI_WriteData (0x77);           SPI_WriteData (0x01);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x13);                   SPI_WriteComm (0xE8);             SPI_WriteData (0x00);           SPI_WriteData (0x0C);                   Delay(10 );                                SPI_WriteComm (0xE8);             SPI_WriteData (0x00);           SPI_WriteData (0x00);                   SPI_WriteComm (0xFF);             SPI_WriteData (0x77);           SPI_WriteData (0x01);           SPI_WriteData (0x00);           SPI_WriteData (0x00);           SPI_WriteData (0x00);                   SPI_WriteComm (0x3A);             SPI_WriteData (0x55);                   SPI_WriteComm (0x36);             SPI_WriteData (0x00);                   SPI_WriteComm (0x35);             SPI_WriteData (0x00);                   SPI_WriteComm (0x29);         }    else if(type == 7)    {// 2.8寸圆屏-高信技术        SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x13);           SPI_WriteComm(0xEF);        SPI_WriteData(0x08);           SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x10);           SPI_WriteComm(0xC0);             SPI_WriteData(0x3B);           SPI_WriteData(0x00);           SPI_WriteComm(0xC1);             SPI_WriteData(0x10);           SPI_WriteData(0x0C);           SPI_WriteComm(0xC2);             SPI_WriteData(0x07);           SPI_WriteData(0x0A);           SPI_WriteComm(0xC7);             SPI_WriteData(0x04);           SPI_WriteComm(0xCC);             SPI_WriteData(0x10);           SPI_WriteComm(0xB0);             SPI_WriteData(0x05);           SPI_WriteData(0x12);           SPI_WriteData(0x98);           SPI_WriteData(0x0E);           SPI_WriteData(0x0F);           SPI_WriteData(0x07);           SPI_WriteData(0x07);           SPI_WriteData(0x09);           SPI_WriteData(0x09);           SPI_WriteData(0x23);           SPI_WriteData(0x05);           SPI_WriteData(0x52);           SPI_WriteData(0x0F);           SPI_WriteData(0x67);           SPI_WriteData(0x2C);           SPI_WriteData(0x11);           SPI_WriteComm(0xB1);             SPI_WriteData(0x0B);           SPI_WriteData(0x11);           SPI_WriteData(0x97);           SPI_WriteData(0x0C);           SPI_WriteData(0x12);           SPI_WriteData(0x06);           SPI_WriteData(0x06);           SPI_WriteData(0x08);           SPI_WriteData(0x08);           SPI_WriteData(0x22);           SPI_WriteData(0x03);           SPI_WriteData(0x51);           SPI_WriteData(0x11);           SPI_WriteData(0x66);           SPI_WriteData(0x2B);           SPI_WriteData(0x0F);           SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x11);           SPI_WriteComm(0xB0);             SPI_WriteData(0x5D);           SPI_WriteComm(0xB1);             SPI_WriteData(0x2D);           SPI_WriteComm(0xB2);             SPI_WriteData(0x81);           SPI_WriteComm(0xB3);             SPI_WriteData(0x80);           SPI_WriteComm(0xB5);             SPI_WriteData(0x4E);           SPI_WriteComm(0xB7);             SPI_WriteData(0x85);           SPI_WriteComm(0xB8);             SPI_WriteData(0x20);           SPI_WriteComm(0xC1);             SPI_WriteData(0x78);           SPI_WriteComm(0xC2);             SPI_WriteData(0x78);           SPI_WriteComm(0xD0);             SPI_WriteData(0x88);           SPI_WriteComm(0xE0);             SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x02);           SPI_WriteComm(0xE1);             SPI_WriteData(0x06);           SPI_WriteData(0x30);           SPI_WriteData(0x08);           SPI_WriteData(0x30);           SPI_WriteData(0x05);           SPI_WriteData(0x30);           SPI_WriteData(0x07);           SPI_WriteData(0x30);           SPI_WriteData(0x00);           SPI_WriteData(0x33);           SPI_WriteData(0x33);           SPI_WriteComm(0xE2);             SPI_WriteData(0x11);           SPI_WriteData(0x11);           SPI_WriteData(0x33);           SPI_WriteData(0x33);           SPI_WriteData(0xF4);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0xF4);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteComm(0xE3);             SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x11);           SPI_WriteData(0x11);           SPI_WriteComm(0xE4);             SPI_WriteData(0x44);           SPI_WriteData(0x44);           SPI_WriteComm(0xE5);             SPI_WriteData(0x0D);           SPI_WriteData(0xF5);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0F);           SPI_WriteData(0xF7);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x09);           SPI_WriteData(0xF1);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0B);           SPI_WriteData(0xF3);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteComm(0xE6);             SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x11);           SPI_WriteData(0x11);           SPI_WriteComm(0xE7);             SPI_WriteData(0x44);           SPI_WriteData(0x44);           SPI_WriteComm(0xE8);             SPI_WriteData(0x0C);           SPI_WriteData(0xF4);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0E);           SPI_WriteData(0xF6);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x08);           SPI_WriteData(0xF0);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0A);           SPI_WriteData(0xF2);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteComm(0xE9);             SPI_WriteData(0x36);           SPI_WriteData(0x01);           SPI_WriteComm(0xEB);             SPI_WriteData(0x00);           SPI_WriteData(0x01);           SPI_WriteData(0xE4);           SPI_WriteData(0xE4);           SPI_WriteData(0x44);           SPI_WriteData(0x88);           SPI_WriteData(0x40);           SPI_WriteComm(0xED);             SPI_WriteData(0xFF);           SPI_WriteData(0x10);           SPI_WriteData(0xAF);           SPI_WriteData(0x76);           SPI_WriteData(0x54);           SPI_WriteData(0x2B);           SPI_WriteData(0xCF);           SPI_WriteData(0xFF);           SPI_WriteData(0xFF);           SPI_WriteData(0xFC);           SPI_WriteData(0xB2);           SPI_WriteData(0x45);           SPI_WriteData(0x67);           SPI_WriteData(0xFA);           SPI_WriteData(0x01);           SPI_WriteData(0xFF);           SPI_WriteComm(0xEF);             SPI_WriteData(0x08);           SPI_WriteData(0x08);           SPI_WriteData(0x08);           SPI_WriteData(0x45);           SPI_WriteData(0x3F);           SPI_WriteData(0x54);           SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteComm(0x11);             Delay(120);                //ms        SPI_WriteComm(0x3A);             SPI_WriteData(0x66);           SPI_WriteComm(0x36);             SPI_WriteData(0x00);           SPI_WriteComm(0x35);             SPI_WriteData(0x00);           SPI_WriteComm(0x29);    }    else if (type == 8)    {// 2.1寸圆屏,参考厂家提供的配套参数修改而来        // SPI_RES=1;        // Delay(80);        // SPI_RES=0;        // Delay(80);        // SPI_RES=1;        // Delay(480);        SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x13);           SPI_WriteComm(0xEF);             SPI_WriteData(0x08);           SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x10);           SPI_WriteComm(0xC0);             SPI_WriteData(0x3B);           SPI_WriteData(0x00);           SPI_WriteComm(0xC1);             SPI_WriteData(0x10);           SPI_WriteData(0x0C);           SPI_WriteComm(0xC2);             SPI_WriteData(0x07);           SPI_WriteData(0x0A);           SPI_WriteComm(0xC7);             SPI_WriteData(0x00);   // x坐标方向,0x00:479-0,0x04:0-479             SPI_WriteComm(0xCC);             SPI_WriteData(0x10);           SPI_WriteComm(0xB0);             SPI_WriteData(0x05);           SPI_WriteData(0x12);           SPI_WriteData(0x98);           SPI_WriteData(0x0E);           SPI_WriteData(0x0F);           SPI_WriteData(0x07);           SPI_WriteData(0x07);           SPI_WriteData(0x09);           SPI_WriteData(0x09);           SPI_WriteData(0x23);           SPI_WriteData(0x05);           SPI_WriteData(0x52);           SPI_WriteData(0x0F);           SPI_WriteData(0x67);           SPI_WriteData(0x2C);           SPI_WriteData(0x11);           SPI_WriteComm(0xB1);             SPI_WriteData(0x0B);           SPI_WriteData(0x11);           SPI_WriteData(0x97);           SPI_WriteData(0x0C);           SPI_WriteData(0x12);           SPI_WriteData(0x06);           SPI_WriteData(0x06);           SPI_WriteData(0x08);           SPI_WriteData(0x08);           SPI_WriteData(0x22);           SPI_WriteData(0x03);           SPI_WriteData(0x51);           SPI_WriteData(0x11);           SPI_WriteData(0x66);           SPI_WriteData(0x2B);           SPI_WriteData(0x0F);           SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x11);           SPI_WriteComm(0xB0);             SPI_WriteData(0x5D);           SPI_WriteComm(0xB1);             SPI_WriteData(0x2A);           SPI_WriteComm(0xB2);             SPI_WriteData(0x81);           SPI_WriteComm(0xB3);             SPI_WriteData(0x80);           SPI_WriteComm(0xB5);             SPI_WriteData(0x4E);           SPI_WriteComm(0xB7);             SPI_WriteData(0x85);           SPI_WriteComm(0xB8);             SPI_WriteData(0x20);           SPI_WriteComm(0xC1);             SPI_WriteData(0x78);           SPI_WriteComm(0xC2);             SPI_WriteData(0x78);           SPI_WriteComm(0xD0);             SPI_WriteData(0x88);           SPI_WriteComm(0xE0);             SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x02);           SPI_WriteComm(0xE1);             SPI_WriteData(0x06);           SPI_WriteData(0x30);           SPI_WriteData(0x08);           SPI_WriteData(0x30);           SPI_WriteData(0x05);           SPI_WriteData(0x30);           SPI_WriteData(0x07);           SPI_WriteData(0x30);           SPI_WriteData(0x00);           SPI_WriteData(0x33);           SPI_WriteData(0x33);           SPI_WriteComm(0xE2);             SPI_WriteData(0x11);           SPI_WriteData(0x11);           SPI_WriteData(0x33);           SPI_WriteData(0x33);           SPI_WriteData(0xF4);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0xF4);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteComm(0xE3);             SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x11);           SPI_WriteData(0x11);           SPI_WriteComm(0xE4);             SPI_WriteData(0x44);           SPI_WriteData(0x44);           SPI_WriteComm(0xE5);             SPI_WriteData(0x0D);           SPI_WriteData(0xF5);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0F);           SPI_WriteData(0xF7);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x09);           SPI_WriteData(0xF1);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0B);           SPI_WriteData(0xF3);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteComm(0xE6);             SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x11);           SPI_WriteData(0x11);           SPI_WriteComm(0xE7);             SPI_WriteData(0x44);           SPI_WriteData(0x44);           SPI_WriteComm(0xE8);             SPI_WriteData(0x0C);           SPI_WriteData(0xF4);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0E);           SPI_WriteData(0xF6);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x08);           SPI_WriteData(0xF0);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteData(0x0A);           SPI_WriteData(0xF2);           SPI_WriteData(0x30);           SPI_WriteData(0xF0);           SPI_WriteComm(0xE9);             SPI_WriteData(0x36);           SPI_WriteData(0x01);           SPI_WriteComm(0xEB);             SPI_WriteData(0x00);           SPI_WriteData(0x01);           SPI_WriteData(0xE4);           SPI_WriteData(0xE4);           SPI_WriteData(0x44);           SPI_WriteData(0x88);           SPI_WriteData(0x40);           SPI_WriteComm(0xED);             SPI_WriteData(0xFF);           SPI_WriteData(0x10);           SPI_WriteData(0xAF);           SPI_WriteData(0x76);           SPI_WriteData(0x54);           SPI_WriteData(0x2B);           SPI_WriteData(0xCF);           SPI_WriteData(0xFF);           SPI_WriteData(0xFF);           SPI_WriteData(0xFC);           SPI_WriteData(0xB2);           SPI_WriteData(0x45);           SPI_WriteData(0x67);           SPI_WriteData(0xFA);           SPI_WriteData(0x01);           SPI_WriteData(0xFF);           SPI_WriteComm(0xEF);             SPI_WriteData(0x08);           SPI_WriteData(0x08);           SPI_WriteData(0x08);           SPI_WriteData(0x45);           SPI_WriteData(0x3F);           SPI_WriteData(0x54);           SPI_WriteComm(0xFF);             SPI_WriteData(0x77);           SPI_WriteData(0x01);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteData(0x00);           SPI_WriteComm(0x11);             Delay(120);                // 120ms        SPI_WriteComm(0x3A);             SPI_WriteData(0x65);       // RGB565        SPI_WriteComm(0x36);             SPI_WriteData(0x00);           SPI_WriteComm(0x35);             SPI_WriteData(0x00);           SPI_WriteComm(0x29);     }}/** * @brief 删除st7701s对象 * @param st7701s_handle 类实例指针*/void st7701s_del_object(vernon_st7701s_handle st7701s_handle){    assert(st7701s_handle != NULL);    free(st7701s_handle);}/** * @brief SPI写指令 * @param st7701s_handle 类实例指针 * @param cmd 指令*/void st7701s_write_cmd(vernon_st7701s_handle st7701s_handle, uint8_t cmd){    if(st7701s_handle->method_select)    {        spi_transaction_t spi_tran =         {            .rxlength = 0,            .length = 0,            .cmd = 0,            .addr = cmd,        };        spi_device_transmit(st7701s_handle->spi_device, &spi_tran);    }    else    {        ioexpander_write_cmd();    }}/** * @brief SPI写地址 * @param st7701s_handle 类实例指针 * @param cmd 地址*/void st7701s_write_data(vernon_st7701s_handle st7701s_handle, uint8_t data){    if(st7701s_handle->method_select)    {        spi_transaction_t spi_tran =         {            .rxlength = 0,            .length = 0,            .cmd = 1,            .addr = data,        };        spi_device_transmit(st7701s_handle->spi_device, &spi_tran);    }    else    {        ioexpander_write_data();    }}

st7701s.h:

#ifndef _ST7701S_H#define _ST7701S_H#include "driver/spi_master.h"#include "driver/gpio.h"#include "freertos/task.h"#define SPI_METHOD 1#define IOEXPANDER_METHOD 0//类结构体typedef struct{    char method_select;        //SPI config_t    spi_device_handle_t spi_device;    spi_bus_config_t spi_io_config_t;    spi_device_interface_config_t st7701s_protocol_config_t;    //I2C config_t}vernon_st7701s;typedef vernon_st7701s * vernon_st7701s_handle;/*Public Function*///创建新的对象vernon_st7701s_handle st7701s_new_object(int sda, int scl, int cs, char channel_select, char method_select);//屏幕初始化void st7701s_screen_init(vernon_st7701s_handle st7701s_handlev, unsigned char type);//删除对象void st7701s_delObject(vernon_st7701s_handle st7701s_handle);/*Private Function*///SPI写指令void st7701s_write_cmd(vernon_st7701s_handle st7701s_handle, uint8_t cmd);//SPI写地址void st7701s_write_data(vernon_st7701s_handle st7701s_handle, uint8_t data);#endif

2.3 点亮LCD屏

编写主函数,示例如下:rgb_lcd_example_main.c:

#include <stdio.h>#include "sdkconfig.h"#include "esp_lcd_panel_ops.h"#include "esp_lcd_panel_rgb.h"#include "driver/gpio.h"#include "esp_err.h"#include "esp_log.h"#include "stdlib.h"#include "string.h"#include "st7701s.h"// SPI引脚配置,需要根据你的实际情况配置#define SPI_PORT  SPI3_HOST  // SPI端口号#define SPI_SDA   48         // SDA#define SPI_SCL   16         // SCL#define SPI_CS    15         // CS// RGB屏幕引脚配置,需要根据你的实际情况配置#define ST7701S_LCD_BK_LIGHT_ON_LEVEL  1#define ST7701S_LCD_BK_LIGHT_OFF_LEVEL !ST7701S_LCD_BK_LIGHT_ON_LEVEL#define ST7701S_PIN_NUM_BK_LIGHT       47       // 背光#define ST7701S_PIN_NUM_PCLK           14       // PCLK#define ST7701S_PIN_NUM_DE             13       // DE#define ST7701S_PIN_NUM_VSYNC          12       // VSYNC#define ST7701S_PIN_NUM_HSYNC          11       // HSYNC#define ST7701S_PIN_NUM_DATA0          10       // B0#define ST7701S_PIN_NUM_DATA1          9        // B1#define ST7701S_PIN_NUM_DATA2          8        // B2#define ST7701S_PIN_NUM_DATA3          7        // B3#define ST7701S_PIN_NUM_DATA4          6        // B4#define ST7701S_PIN_NUM_DATA5          5        // G0#define ST7701S_PIN_NUM_DATA6          4        // G1#define ST7701S_PIN_NUM_DATA7          3        // G2#define ST7701S_PIN_NUM_DATA8          2        // G3#define ST7701S_PIN_NUM_DATA9          1        // G4#define ST7701S_PIN_NUM_DATA10         0        // G5#define ST7701S_PIN_NUM_DATA11         42       // R0#define ST7701S_PIN_NUM_DATA12         41       // R1#define ST7701S_PIN_NUM_DATA13         40       // R2#define ST7701S_PIN_NUM_DATA14         39       // R3#define ST7701S_PIN_NUM_DATA15         38       // R4#define ST7701S_PIN_NUM_DISP_EN        -1// 屏幕分辨率参数,需要根据你的实际情况配置#define ST7701S_LCD_H_RES              480      // 水平方向#define ST7701S_LCD_V_RES              480      // 垂直方向// RGB通信时序相关参数,需要根据你的实际情况配置#define ST7701S_LCD_PIXEL_CLOCK_HZ     (15 * 1000 * 1000)  // clk 15MHz#define ST7701S_HSYNC_PULSE_WIDTH       2                  // hpw 2 #define ST7701S_HSYNC_BACK_PORCH        4                  // hbp 4 #define ST7701S_HSYNC_FRONT_PORCH       12                 // hfp 12 #define ST7701S_VSYNC_PULSE_WIDTH       4                  // vpw 4 #define ST7701S_VSYNC_BACK_PORCH        4                  // vbp 4 #define ST7701S_VSYNC_FRONT_PORCH       19                 // vfp 19 // RGB565基础颜色表#define COLOR_BLACK       0x0000      /*   0,   0,   0 */#define COLOR_NAVY        0x000F      /*   0,   0, 128 */#define COLOR_DARKGREEN   0x03E0      /*   0, 128,   0 */#define COLOR_DARKCYAN    0x03EF      /*   0, 128, 128 */#define COLOR_MAROON      0x7800      /* 128,   0,   0 */#define COLOR_PURPLE      0x780F      /* 128,   0, 128 */#define COLOR_OLIVE       0x7BE0      /* 128, 128,   0 */#define COLOR_LIGHTGREY   0xD69A      /* 211, 211, 211 */#define COLOR_DARKGREY    0x7BEF      /* 128, 128, 128 */#define COLOR_BLUE        0x001F      /*   0,   0, 255 */#define COLOR_GREEN       0x07E0      /*   0, 255,   0 */#define COLOR_CYAN        0x07FF      /*   0, 255, 255 */#define COLOR_RED         0xF800      /* 255,   0,   0 */#define COLOR_MAGENTA     0xF81F      /* 255,   0, 255 */#define COLOR_YELLOW      0xFFE0      /* 255, 255,   0 */#define COLOR_WHITE       0xFFFF      /* 255, 255, 255 */#define COLOR_ORANGE      0xFDA0      /* 255, 180,   0 */#define COLOR_GREENYELLOW 0xB7E0      /* 180, 255,   0 */#define COLOR_PINK        0xFE19      /* 255, 192, 203 */ //Lighter pink, was 0xFC9F      #define COLOR_BROWN       0x9A60      /* 150,  75,   0 */#define COLOR_GOLD        0xFEA0      /* 255, 215,   0 */#define COLOR_SILVER      0xC618      /* 192, 192, 192 */#define COLOR_SKYBLUE     0x867D      /* 135, 206, 235 */#define COLOR_VIOLET      0x915C      /* 180,  46, 226 */esp_lcd_panel_handle_t panel_handle = NULL;static const char *TAG = "rgb_lcd";// LCD初始化void lcd_init(void){    vernon_st7701s_handle vernon_st7701s = st7701s_new_object(SPI_SDA, SPI_SCL, SPI_CS, SPI_PORT, SPI_METHOD);    st7701s_screen_init(vernon_st7701s, 8);    #if ST7701S_PIN_NUM_BK_LIGHT >= 0    ESP_LOGI(TAG, "Turn off LCD backlight");    gpio_config_t bk_gpio_config = {        .mode = GPIO_MODE_OUTPUT,        .pin_bit_mask = 1ULL << ST7701S_PIN_NUM_BK_LIGHT    };    ESP_ERROR_CHECK(gpio_config(&bk_gpio_config));#endif    ESP_LOGI(TAG, "Install RGB LCD panel driver");    esp_lcd_rgb_panel_config_t panel_config = {        .data_width = 16, // RGB565 in parallel mode, thus 16bit in width        .psram_trans_align = 64,        .num_fbs = 1,        .clk_src = LCD_CLK_SRC_PLL240M,        .disp_gpio_num = ST7701S_PIN_NUM_DISP_EN,        .pclk_gpio_num = ST7701S_PIN_NUM_PCLK,        .vsync_gpio_num = ST7701S_PIN_NUM_VSYNC,        .hsync_gpio_num = ST7701S_PIN_NUM_HSYNC,        .de_gpio_num = ST7701S_PIN_NUM_DE,        .data_gpio_nums = {            ST7701S_PIN_NUM_DATA0,            ST7701S_PIN_NUM_DATA1,            ST7701S_PIN_NUM_DATA2,            ST7701S_PIN_NUM_DATA3,            ST7701S_PIN_NUM_DATA4,            ST7701S_PIN_NUM_DATA5,            ST7701S_PIN_NUM_DATA6,            ST7701S_PIN_NUM_DATA7,            ST7701S_PIN_NUM_DATA8,            ST7701S_PIN_NUM_DATA9,            ST7701S_PIN_NUM_DATA10,            ST7701S_PIN_NUM_DATA11,            ST7701S_PIN_NUM_DATA12,            ST7701S_PIN_NUM_DATA13,            ST7701S_PIN_NUM_DATA14,            ST7701S_PIN_NUM_DATA15,        },        .timings = {            .pclk_hz = ST7701S_LCD_PIXEL_CLOCK_HZ,            .h_res = ST7701S_LCD_H_RES,            .v_res = ST7701S_LCD_V_RES,            .hsync_pulse_width = ST7701S_HSYNC_PULSE_WIDTH,                .hsync_back_porch = ST7701S_HSYNC_BACK_PORCH,                  .hsync_front_porch = ST7701S_HSYNC_FRONT_PORCH,                .vsync_pulse_width = ST7701S_VSYNC_PULSE_WIDTH,                .vsync_back_porch = ST7701S_VSYNC_BACK_PORCH,                  .vsync_front_porch = ST7701S_VSYNC_FRONT_PORCH,                .flags =             {// 由于一些 LCD 可以通过硬件引脚或者软件命令配置这些参数,需要确保它们与配置保持一致,但通常情况下均为 `0`                .hsync_idle_low = 0,    // HSYNC 信号空闲时的电平,0:高电平,1:低电平                .vsync_idle_low = 0,    // VSYNC 信号空闲时的电平,0 表示高电平,1:低电平                .de_idle_high = 0,      // DE 信号空闲时的电平,0:高电平,1:低电平                .pclk_active_neg = 0,   // 时钟信号的有效边沿,0:上升沿有效,1:下降沿有效                .pclk_idle_high = 0,    // PCLK 信号空闲时的电平,0:高电平,1:低电平            },        },        .flags.fb_in_psram = true, // allocate frame buffer in PSRAM        // .flags.double_fb = true,    };    ESP_ERROR_CHECK(esp_lcd_new_rgb_panel(&panel_config, &panel_handle));    // ESP_LOGI(TAG, "Register event callbacks");    // esp_lcd_rgb_panel_event_callbacks_t cbs = {    //     .on_vsync = user_on_vsync_event,    // };    // ESP_ERROR_CHECK(esp_lcd_rgb_panel_register_event_callbacks(panel_handle, &cbs, &disp_drv));    ESP_LOGI(TAG, "Initialize RGB LCD panel");    ESP_ERROR_CHECK(esp_lcd_panel_reset(panel_handle));    ESP_ERROR_CHECK(esp_lcd_panel_init(panel_handle));#if ST7701S_PIN_NUM_BK_LIGHT >= 0    ESP_LOGI(TAG, "Turn on LCD backlight");    // gpio_set_direction(ST7701S_PIN_NUM_BK_LIGHT, GPIO_MODE_OUTPUT);    gpio_set_level(ST7701S_PIN_NUM_BK_LIGHT, ST7701S_LCD_BK_LIGHT_ON_LEVEL);#endif}void memset16(void *m, uint16_t val, size_t count){    uint16_t *buf = m;    while(count--) *buf++ = val;}void app_main(void){    uint16_t color;    uint16_t *rgb_buf = NULL;    rgb_buf = malloc(ST7701S_LCD_H_RES * ST7701S_LCD_V_RES * 2);    lcd_init();    while(1)    {        color = COLOR_RED;    // 红色        memset16(rgb_buf, color, ST7701S_LCD_H_RES * ST7701S_LCD_V_RES);        esp_lcd_panel_draw_bitmap(panel_handle, 0, 0, 479, 479, rgb_buf);        vTaskDelay(500);        color = COLOR_GREEN;  // 绿色        memset16(rgb_buf, color, ST7701S_LCD_H_RES * ST7701S_LCD_V_RES);        esp_lcd_panel_draw_bitmap(panel_handle, 0, 0, 479, 479, rgb_buf);        vTaskDelay(500);        color = COLOR_BLUE;   // 蓝色        memset16(rgb_buf, color, ST7701S_LCD_H_RES * ST7701S_LCD_V_RES);        esp_lcd_panel_draw_bitmap(panel_handle, 0, 0, 479, 479, rgb_buf);        vTaskDelay(500);    }}

2.4 编译测试

注:如果在工程中加入了新文件,需要先清除原来的编译文件,然后再重新编译,否则会报错。

在这里插入图片描述编译并烧录。

在这里插入图片描述

运行结果:屏幕依次显示红绿蓝三种颜色。

至此,ST7701S驱动的RGB成功点亮。

结束语

好了,关于如何使用ESP32S3驱动RGB屏就讲到这里,有什么问题欢迎评论区留言。

如果这篇文章能够帮到你,就…你懂的。

相关推荐