ST7789液晶驱动芯片数据手册解读经验和驱动示例
ST7789液晶驱动芯片数据手册解读经验和驱动示例
本文详细介绍了ST7789液晶驱动芯片的数据手册解读经验和驱动示例。通过4线SPI通讯协议,文章深入讲解了芯片的初始化配置、显示原理和寄存器设置等关键步骤,并提供了具体的代码示例。对于从事嵌入式开发或对液晶显示驱动感兴趣的读者具有较高的参考价值。
查看数据手册的步骤
首先明确采用4线SPI通讯协议驱动ST7789芯片,然后阅读数据手册,查找目录找到命令写入模式。
由图可知,在4线串行接口中SDA线只负责传输数据,命令还是数据由D/CX线控制,且D/CX为低电平时传输字节为命令,高位先行。
下图展示了4线命令写入模式的时序,可以知道采用CPOL=0;空闲状态时,SCK为低电平;CPHA=0;SCK第一个边沿移入数据,第二个边沿移出数据。
初始化SPI硬件
初始化SPI之后,在void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
函数中初始化相关GPIO引脚。固定的初始化这里不在示例。
显示原理和寄存器配置
- 通过数据手册第122页的显示RAM信息,当MX=0且MY=0时,数据是从上往下从左往右写入显示,RGB三个颜色共同控制一个点位的显色。
通过阅读数据手册第156页的命令集合,找到显示命令0x36(36h)。通过阅读此命令可知D3是确定色彩显示是RGB还是BGR,D2是确定数据是从左往右锁存还是从右往左锁存,正常显示配置为0x00。
采用16位/像素,将0x3A配置为0x05,完成显示的初始化配置。接下来进行电压的初始化配置,直接采用默认值即可。
芯片复位之后会进入休眠模式,发送0x11退出休眠模式,发送0x29打开显示。因为显示是常黑型,需要打开反显。
显示寄存器配置
找到显示行寄存器的第一个参数和第二个参数是显示起点行,第三个参数和第四个参数是显示终点行,列寄存器同上。
0x2c寄存器代表写入显示。
编写显示代码
编写函数LCD_SetAddress()
进行写入起点和终点设置,以及显示函数如清屏函数LCD_clear()
。LCD.Y_Offset
和LCD.X_Offset
可以设为0,LCD.BackCokor
可以设为所有颜色,网上搜索0x1F为RGB565蓝色,0xffff为白色,0x00为黑色,可以带入进行显示。
总结看数据手册和驱动经验
- 先看目录找到传输接口(3线IIC还是4线SPI)。
- 仔细察看传输时序(DX命令时序,SPI模式0还是1)。
- 找到主要功能介绍(显示RAM122页,RGB写入)。
- 找到相应的寄存器(最笨的方法所有寄存器都读一下)。
- 看例程中芯片的初始化函数,和显示函数(主要功能的函数)操作的寄存器进行关键寄存器的熟读,从而达到操作芯片的结果。