ILI9341液晶控制器简介
本液晶屏内部包含有一个液晶控制芯片ILI9341,它的内部结构非常复杂,如下图。该芯片最主核心部分是位于中间的GRAM(Graphics RAM),它就是显存。GRAM中每个存储单元都对应着液晶面板的一个像素点。它 右侧的各种模块共同作用把GRAM存储单元的数据转化成液晶面板的控制信号,使像素点呈 现特定的颜色,而像素点组合起来则成为一幅完整的图像。
框图的左上角为ILI9341的主要控制信号线和配置引脚,根据其不同状态设置可以使芯片工作在不同的模式,如每个像素点的位数是6、16还是18位;可配置使用SPI接口、8080接口还是RGB接口与MCU进行通讯。MCU通过SPI、8080接口或RGB接口与ILI9341进行通讯,从而访问它的控制寄存器(CR)、地址计数器(AC)、及GRAM。
在GRAM的左侧还有一个LED控制器(LED Controller)。LCD为非发光性的显示装置,它需要借助背光源才能达到显示功能,LED控制器就是用来控制液晶屏中的LED背光源。
图 1 ILI9341控制器内部框图
MCU-LCD屏与RGB-LCD屏的区别
MCU-LCD屏与RGB-LCD屏主要区别在于显存的位置:
- RGB-LCD的显存是由系统内存充当的,因此其大小只受限于系统内存的大小,这样RGB-LCD可以做出较大尺寸,像现在4.3只能算入门级,而MID中7、10的屏都开始大量使用。
- MCU-LCD的设计之初只要考虑单片机的内存较小,因此都是把显存内置在LCD模块内部。然后软件通过专门显示命令来更新显存,因此MCU屏往往不能做得很大。同时显示更新速度也比RGB-LCD慢。
MCU-LCD屏与RGB-LCD屏量示数据传输模式也有差别:
- RGB屏只需显存组织好数据。启动显示后。LCD-DMA会自动把显存通过RGB接口送到LCM。
- MCU屏则需要发送画点的命令来修改MCU内部RAM。(即不能直接MCU屏RAM)所以RGB显示速度明显比MCU快,而且播放视频方面,MCU-LCD也比较慢。
- 对于RGB接口的LCM,主机输出的直接是每个象素的RGB数据,不需要进行变换(GAMMA校正等除外),对于这种接口,需要在主机部分有个LCD控制器,以产生RGB数据和点、行、帧同步信号。
也就是说,传统的MCU屏显示数据写入DDRAM,而RGB屏数据不写入DDRAM,直接写屏,读写速度更快。
液晶屏的信号线及8080时序
ILI9341控制器根据自身的IM[3:0]信号线电平决定它与MCU的通讯方式,它本身支持SPI及8080通讯方式,本示例 中液晶屏的ILI9341控制器在出厂前就已经按固定配置好(内部已连接硬件电路),它被配置为通过8080接口 通讯,使用16根数据线的RGB565格式。内部硬件电路连接完,剩下的其它信号线被引出到FPC排线,最后该 排线由PCB底板引出到排针,排针再与实验板上的STM32芯片连接,引出的排针信号线如下图。
图 2 液晶屏引出的信号线
液晶屏引出的信号线说明
信号线 | ILI9341对应的信号线 | 说明 |
LCD_DB[15:0] | D[15:0] | 数据信号 |
LCD_RD | RDX | 读数据信号,低电平有效 |
LCD_RS | D/CX | 数据/命令信号,高电平时,D[15:0]表示的是数据(RGB像素数据或命令数据),低电平时D[15:0]表示控制命令 |
LCD_RESET | RESX | 复位信号,低电平有效 |
LCD_WR | WRX | 写数据信号,低电平有效 |
LCD_CS | CSX | 片选信号,低电平有效 |
LCD_BK |
| 背光信号,低电平点亮 |
GPIO[5:1] |
| 触摸屏的控制信号线 |
这些信号线即8080通讯接口,带X的表示低电平有效,STM32通过该接口与ILI9341芯片进行通讯,实现对液晶屏的控制。通讯的内容主 要包括命令和显存数据,显存数据即各个像素点的RGB565内容;命令是指对ILI9341的控制指令,MCU可通过8080接口发 送命令编码控制ILI9341的工作方式,例如复位指令、设置光标指令、睡眠模式指令等等,具体的指令在《ILI9341.pdf》数据手 册均有详细说明。写命令时序图见下图。
图 3 使用18条数据线的8080接口写命令时序
由图可知,写命令时序由片选信号CSX拉低开始,对数据/命令选择信号线D/CX也置低电平表示写入的是命令地址(可理 解为命令编码,如软件复位命令:0x01),以写信号WRX为低,读信号RDX为高表示数据传输方向为写入,同时,在数据线D[17:0](或D[15:0])输出命令地址,在第二个传输阶段传送的是命令的参数,所以D/CX要置高电平,表示写入的是命令数据,命令数据是某些指令带有的参数,如复位指令编码为0x01,它后面可以带一个参数,该参数表示多少秒后复位(实际的复位命令不含参数,此处只是为了讲解指令编码与参数的区别)。
当需要把像素数据写入GRAM时,过程很类似,把片选信号CSX拉低后,再把数据/命令选择信号线D/CX置为高 电平,这时由D[17:0]传输的数据则会被ILI9341保存至它的GRAM中。