1、背景
项目中实际用到这个LCD驱动模块,感觉对这个驱动模块还不太熟悉,因此文章成型于熟悉过程,如有错漏,请各位同行指正。
1.0 参考资料
1.1 框图
我用的是SSD1963QL9 128pin LQFP封装。
单片机接口连接了MCU和SSD1963绘图控制器。通过conf引脚单片机接口可将配置为6800模式和8080模式。confg引脚连接vddio,则配置为8080模式,我们就用这种方式。config引脚连接vssio,单片机接口将被配置为6800模式。
80并口全称8080并口协议,是由因特尔公司提出。与摩托罗拉的6800并口接口协议不同在于控制线。
8080是通过"读使能RE"和写使能"WE"两条控制线进行读写操作;
6800是通过"总使能E"和读写选择(W/R)两条控制线进行读写操作。
SSD1963作为LCD驱动芯片,且自带LCD GRAM(显存)。 采用16位,8080并口模式,MCU侧有用的信号线包括CS(片选信号)、RS(数据/命令选择信号)、RD(读使能信号)、WR(写使能信号)、D[0~15]16位双向数据信号、TE信号、RST复位信号。
FSMC(EXMC) DS脚作为地址信号。即往两个地址写16bit数,这两个地址分别写命令和数据。
2 命令表
SSD1963命令集较多。我们以初始化流程和为例,看使用到的命令是如何操作的
2.1 初始化流程
硬件Reset--》设置时钟--》软件复位--》配置LCD参数
设置时钟,时钟输入经锁相环倍频后作为SSD1963系统时钟,分两步操作
2.1.1 设置锁相环set_pll_mm——(0xE2)
由上图可知,倍频系数范围0~127,默认45, 分频系数范围为0~15,默认3。
PLL 频率 = (refrence clock)*(M+1)/(N+1)
如:
参考时钟为10MHz,要倍频到120MHz===》120 = 10 * 36 /3; 则M=35,N=2
CMD ===》0x00E2
PARA1 ===》0x0023
PARA2 ===》 0x0002
PARA3 ===》0x0004
2.1.2 启动PLL set_pll(0xE0)
在启动PLL之前,系统时钟源是晶振或时钟输入。
将PLL作为系统时钟,且使能PLL
CMD===>0x00E0
PARA1===>0x0003
2.1.3软件复位
CMD===》0x01
delay(5);
接下去就是配置LCD参数,主要是LCD侧接口相关
2.1.4、设置像素时钟set_lshift_freq (0xE6)
LCDC_FPR[19:0]
LCD侧并口:像素时钟=PLL*(LCDC_FPR+1)/2^20
120*(0x280000)/2^20 = 0x12c = 300MHz
2.1.5 设置LCD模式
2.1.6 垂直同步周期
2.1.7 水平同步周期
2.1.8 设置像素位数
2.1.9 关闭显示
2.2 图片显示
写显存写数据--》显示--》背光控制