光波导屏幕调试
📎 原始文档:https://www.kdocs.cn/l/cbaQDBBczMn9 光波导屏幕调试
【金山文档 | WPS云文档】 lcd_spi_demo
https://www.kdocs.cn/l/cjseCSe9j0AO
【金山文档 | WPS云文档】 lcd_spi_draw
https://www.kdocs.cn/l/cppqLZ2o39vL
221调试版本sdk:光波导屏幕.rar(其他版本sdk自行添加上面文件即可)
- 配置spi参数


1.1 配置spi io
根据实际引脚自行配置
#define TCFG_HW_SPI1_PORT_CLK IO_PORTA_07
#define TCFG_HW_SPI1_PORT_DO IO_PORTA_08
#define TCFG_HW_SPI1_PORT_DI IO_PORTA_09
#define TCFG_HW_SPI1_PORT_D2 IO_PORTA_10
#define TCFG_HW_SPI1_PORT_D3 IO_PORTA_11
1.2 配置spi 时钟
根据需要自行配置
1.3 配置spi 模式
有以上4种模式,spi0、spi1、spi2均支持4线spi,根据需要自行配置
- spi驱动 主要在 lcd_spi_demo.c这个文件
2.1写指令
void lcd_spi_write_cmd( unsigned char cmd,
unsigned char regAddr,
unsigned char *writeBuf,
unsigned char writeLen)
{
spi_cs_l();
// spi_dma_write(writeBuf, writeLen);
spi_write_byte(cmd);
spi_write_byte(regAddr);
for (int i = 0; i < writeLen; i++) {
spi_write_byte(writeBuf[i]);
}
spi_cs_h();
}
2.2 读指令
void lcd_spi_read_cmd( unsigned char cmd,
unsigned char regAddr,
unsigned char *readBuf,
unsigned char readLen)
{
spi_cs_l();
spi_write_byte(cmd);
spi_write_byte(regAddr);
// 读取数据
for (int i = 0; i < readLen; i++) {
readBuf[i] = spi_read_byte();
}
spi_cs_h();
// for (int i = 0; i < readLen; i++) {
// printf("readbuf %02x",readBuf[i]);
// }
}
2.3 推数据
void lcd_spi_data_send( unsigned char *writeBuf,
unsigned char writeLen)
{
spi_cs_l();
spi_dma_write(writeBuf, writeLen);
spi_cs_h();
}
2.4 推数据(分块)
void lcd_spi_cs_low()
{
spi_cs_l();
}
void lcd_spi_cs_high()
{
spi_cs_h();
}
//不操作cs线,用于连续发送数据
void lcd_spi_data_send_chunked( unsigned char *writeBuf,
unsigned int writeLen)
{
spi_dma_write(writeBuf, writeLen);
}
3.屏驱动
3.1配置屏幕io

根据实际自行配置
3.2屏幕寄存器初始化
lcd_spi_demo.c中集成了两套屏幕初始化指令,一套是用户推自己的数据的初始化命令,另一套是开启屏幕内部debug模式的指令。初次调试可先开启屏幕debug,测试驱动是否正常,再下一步
3.3数据发送

目前提供的demo是该方式,后续4线客户可自行调试。