前言
近期做了一个项目是使用esp32s3 + 准亿科技的TFT屏幕
该屏幕使用的驱动IC为:GC9A01
通讯方式是:4线SPI ,
三线spi和四线SPI区别在于:是否使用D/C信号线
开发LCD屏幕驱动, 可以参考乐鑫官网LCD显示屏指南
SPI 一共有4种工作模式. 根据接线 , 驱动方式的不同.
可分3 , 4 线SPI , 还可分接口类型I
, 接口类型II
这里我们使用:
乐鑫组件库
下载后打开;esp_lcd_gc9a01.h
文件
#define GC9A01_PANEL_IO_SPI_CONFIG(cs, dc, callback, callback_ctx) \
{ \
.cs_gpio_num = cs, \
.dc_gpio_num = dc, \
.spi_mode = 0, \
.pclk_hz = 80 * 1000 * 1000, \
.trans_queue_depth = 10, \
.on_color_trans_done = callback, \
.user_ctx = callback_ctx, \
.lcd_cmd_bits = 8, \
.lcd_param_bits = 8, \
}
// trans_queue_depth spi设备传输数据的队列深度
// EPS芯片驱动SPI屏幕推荐使用整数频率(eg: 20 \ 40 \60)
// lcd_cmd_bits spi 接口数据传输的位数
打开路径:E:\ESP32_File\esp-idf\esp-idf\components\esp_lcd\include
esp_lcd_panel_commands.h
查看驱动芯片的LCD命令和idf中的LCD命令是否一致,如果有欠缺,则在
include\esp_lcd_gc9a01.h
中添加补充
确认命令地址被正确使用。具体可参考:移植驱动组件
配置SPI屏
- 从idf中复制一个空白的sample_project作为模板
ESP系列芯片SPI的传输位数一般是8bit、
所以像素颜色位数,最好使用8 的倍数
,比如8、16、24bit
GC9A01,支持 : 12bit , 16bit , 18bit 的颜色像素bit
如果使用lvgl 库,数据传输一般都是8bit , 16bit , 32bit 、
综合下来16bit是最合适的选择