STM32实现FSMC驱动TFTLCD液晶显示屏

1、TFTLCD接口及驱动流程

TFTLCD液晶显示屏的接口说明,这里是16位80并口接线方式,关于这种方式的简介可以参考百度文库
80并口协议

LCD引脚包括:
CS:片选信号
WR:写信号
RD:读信号
DB[1-17]:16位双向数据线
RST:复位信号
RS:命令0/数据标志1
CTR:背光控制信号
还有当其作为输入设备时一系列接口信号

80并口读写的时序图如下:

读时序:
STM32实现FSMC驱动TFTLCD液晶显示屏_第1张图片

(1)根据读取的数据类型设置RS为0(命令)/1(数据),然后拉低片选信号。
(2)读信号时,WR设置常高,当RD为低时,读取数据或者命令。

写时序:
STM32实现FSMC驱动TFTLCD液晶显示屏_第2张图片

(1)根据写入的数据类型设置RS为0(命令)/1(数据),然后拉低片选信号。
(2)写信号时,RD设置常高,当WR为低时,写入数据或者命令。

LCD驱动流程:

STM32实现FSMC驱动TFTLCD液晶显示屏_第3张图片

2、FSMC简介
FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。
STM32实现FSMC驱动TFTLCD液晶显示屏_第4张图片

FSMC驱动外部SRAM时,外部SRAM的控制一般有:地址线、数据线、写信号、读信号、片选信号,如果SRAM支持字节控制,那么还有UB/LB信号。

TFTLCD的信号在前面介绍过,包括CS:片选信号、WR:写信号、RD:读信号
、DB[1-17]:16位双向数据线、RST:复位信号、RS:命令0/数据标志等。其操作时序和SRAM的控制完全类似,唯一不同就是TFTLCD有RS信号,但是没有地址信号。但是TFTLCD通过RS信号来决定传送的数据是数据还是命令,本质上可以理解为一个地址信号,只不过只有两个地址,比如把RS接在A0上面,那么当FSMC控制器写地址0的时候,会使得A0变为0,对TFTLCD来说,就是写命令。而FSMC写地址1的时候,A0将会变为1,对TFTLCD来说,就是写数据了。这样,就把数据和命令区分开了,他们其实就是对应SRAM操作的两个连续地址。

因此,可以把TFTLCD当成一个SRAM来用,只不过这个SRAM有2个地址,这就是FSMC可以驱动LCD的原理。

3、源码
首先进行lcd初始化

void LCD_Init(void)
{
    初始化GPIO;
    初始化FSMC;           
    读取LCD ID; 
    printf(“LCD ID:%x\r\n”,lcddev.id);//打印LCD ID,用到了串口1
    根据不同的ID执行LCD初始化代码;
    LCD_Display_Dir(0);    //默认为竖屏
    LCD_LED=1;     //点亮背光
    LCD_Clear(WHITE);   //清屏
}

初始化gpio非常简单,fsmc初始化要根据lcd的读写时序来设置fsmc的读写时序,然后设置fsmc的模式、位宽等。

初始化结束后,根据显示内容编程进行显示。

源码连接
lcd显示

你可能感兴趣的:(STM32)