STM32实现FSMC驱动TFTLCD液晶显示屏
1、TFTLCD接口及驱动流程
TFTLCD液晶显示屏的接口说明,这里是16位80并口接线方式,关于这种方式的简介可以参考百度文库
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\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显示