更新时间:2025-04-15 09:34:10下载pdf
T5 添加 SPI 替换屏幕,需要通过添加 SPI 驱动适配。本文以 GC9A01 SPI 驱动为例说明如何添加驱动。
关于驱动初始化,您可以从屏幕厂家提供的资料中获取。
路径:vendor/T5/t5_os/components/bk_peripheral/src/lcd/spi
lcd_spi_gc9a01.c
文件。当长度为 0xFF
时,即表示延时,数据表示延时的毫秒数。
#include <common/bk_include.h>
#include <driver/lcd_types.h>
static const lcd_qspi_init_cmd_t gc9a01_init_cmds[] =
{
// 初始化指令 0x11,无数据
{0x11, {0x00}, 0},
// 初始化指令 0x66,10 个数据
{0x66, {0x3C, 0x00, 0xCD, 0x67, 0x45, 0x45, 0x10, 0x00, 0x00, 0x00}, 10},
// 初始化指令 0x29,无数据
{0x29, {0x00}, 0}, // Display on
// 长度 0xFF 表示延时,数据 0x78 表示 120ms{0x00, {0x78}, 0xFF}, // sleep
... //按以上格式初始化驱动的指令
}
// 时钟,按需修改
static const lcd_spi_t lcd_spi_gc9a01_config =
{
.clk = LCD_QSPI_48M
.init_cmd = gc9a01_init_cmds,.device_init_cmd_len = sizeof(gc9a01_init_cmds) / sizeof
(lcd_qspi_init_cmd_t),
};
const lcd_device_t lcd_device_gc9a01 =
{
.id = LCD_DEVICE_GC9A01,
.name ="gc9a01", // 上层查找的驱动名字
.type = LCD_TYPE_SPI,.ppi = PIXEL_240 << 16 | PIXEL_240, // 屏幕分辨率,可以直接数字
.spi = &lcd_spi_gc9a01_config,
.init = NULL,
.lcd_off = NULL,
};
.id = LCD_DEVICE_GC9A01
中,LCD_DEVICE_GC9A01
是自定义的 lcd_device_id_t
枚举成员。
路径:vendor/T5/t5_os/bk_idk/include/driver/lcd_types.h
.ppi = PIXEL_240 << 16 | PIXEL_240
中,PIXEL_240
是自定义的宏,也可以直接写数字。
路径:vendor/T5/t5_os/bk_idk/include/driver/media_types.h
在 config.cmake
中加入驱动文件,如下图所示:
路径:vendor/T5/t5_os/components/bk_peripheral/include/lcd_panel_devices.h
路径:vendor/T5/t5_os/components/bk_peripheral/src/lcd/lcd_panel_devices.c
路径:vendor/T5/t5_os/components/display_service/src/lcd_spi_display_service.c
SPIO 的引脚:
#define SPIO_LL_CSN_PIN GPIO_15
#define SPIO_LL_SCK_PIN GPIO_14
#define SPIO_LL_MOSI_PIN GPIO_16
#define SPIO_LL_MISO_PIN GPIO_17
SPI & QSPI 选择:
#define LCD_SPI_REFRESH_WITH_QSPI 0 //spi改0 qspi改1
其他引脚控制:
#define LCD_SPI_RESET_PIN GPIO_28
#define LCD_SPI_BACKLIGHT_PIN GPIO_26
#define LCD_SPI_RS_PIN GPIO_9
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈