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

1、TFTLCD接口及驱动流程

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

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

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

读时序:

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

写时序:

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

LCD驱动流程:

2、FSMC简介 FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和16位PC存储器卡连接,STM32的FSMC接口支持包括SRAM、NAND FLASH、NOR FLASH和PSRAM等存储器。

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
”,lcddev.id);//打印LCD ID,用到了串口1
    根据不同的ID执行LCD初始化代码;
    LCD_Display_Dir(0);    //默认为竖屏
    LCD_LED=1;     //点亮背光
    LCD_Clear(WHITE);   //清屏
}

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

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

源码连接 lcd显示

经验分享 程序员 微信小程序 职场和发展