TFT-LCD的8080并口时序可以与ST的FSMC总线上操作SRAM的时序类似。
故把TFT-LCD挂在SRAM上就能想操作SRAM一样操作TFT-LCD显示了。
主要是STM32CubeIDE的时序图形配置。剩下的就是移植LCD显示厂商的驱动和
寄存器设置,因为这部分设置太多了,自己看手册设置非常繁琐。
重要是要对STM32F4的FSMC 的 SRAM控制原理要了解。
STM32CubeIDE SRAM原理:https://blog.csdn.net/sudaroot/article/details/107025500
源码:https://download.csdn.net/download/sudaroot/12594665
STM32F407ZG + 4.3寸TFT-LCD
从上图可以看到8080时序与STM32 FSMC的SRAM控制只有一个引脚功能不同。
8080时序的D\CX引脚功能是用于区分发送过来的是命令还是数据。
而SRAM时序A[25:0]引脚是用于传输数据地址的。
虽然引脚功能不同,但是时序非常类似,所以只要把8080时序的D\CX接到SRAM时序的
地址引脚,这样可以通过控制写入不同的地址 区分写入的是数据还是命令。
STM32CubeIDE SRAM原理:https://blog.csdn.net/sudaroot/article/details/107025500
以前 写过STM32F4 的SRAM时序计算来由。在上面链接。
下图是TFT-LCD的时序要求图。
我用的是STM32F407ZG,HCLK = 168MHz,tHCLK = 1s / 168 MHZ = 6ns
t su(Data_NE) + t v(A_NE) = 2 * tHCLK + 25 = 37ns
由于TFT LCD的写时序比读时序快很多,故需要用到扩展模式,即单独配置读和写时序。
因此,对于读时序必须满足以下等式:
(ADDSET + DATAST) × t HCLK >= max (t RC )
DATAST × t HCLK >= tRDLFM
对于读取访问,DATASET必须验证:
DATAST >= (t AA + t su(Data_NE) + t v(A_NE) )/t HCLK – ADDSET – 4
注意:ADDSET <= 15; DATAST <= 255
计算得: ADDSET = 15; DATAST = 52;
对于写时序必须满足以下等式:
(ADDSET + (DATAST + 1)) × t HCLK >= max (t WC )
DATAST × t HCLK >= tWRL
注意:在SRAM写入数据的时候,数据建立时间DATAS要加1。详情看F4手册。
计算得: ADDSET = 2; DATAST = 3;
LCD Register Select - A6:
这是由硬件连接决定的。通过控制地址就能控制LCD写寄存器还是写数据。D\CX拉低表示命令,拉高表示数据。
由于STM32F4对于16bit位宽的地址总线会右移一位。所以当写命令的时候地址为0x7E(0111 1110),A6引脚拉低;当写数据的时候地址为0x80(1000 0000),A6引脚拉高。地址由于是16位的,故相邻地址+2。
Write operation:
是否允许写入操作。FSMC 在存储区域内禁止了写入操作,如果进行写操作将报告 AHB 错误。
Extended mode:
使用扩展模式,即可配置读写时序不同。
生成代码,移植LCD厂商提供的驱动代码。
最后注意:编译器的优化等级选择最高,否则容易出现刷新速度不够,闪屏。
全篇完。
本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解方便记录成长笔记。 若有与大神大大见解有冲突,我坚信大神大大见解是对的,我的是错的。 若无法下载源码,可私聊私发。 感谢~!