STM32CubeIDE TFT-LCD显示

随言:

TFT-LCD的8080并口时序可以与ST的FSMC总线上操作SRAM的时序类似。

故把TFT-LCD挂在SRAM上就能想操作SRAM一样操作TFT-LCD显示了。

主要是STM32CubeIDE的时序图形配置。剩下的就是移植LCD显示厂商的驱动和

寄存器设置,因为这部分设置太多了,自己看手册设置非常繁琐。

重要是要对STM32F4的FSMC 的 SRAM控制原理要了解。

STM32CubeIDE SRAM原理:STM32CubeIDE SRAM_sudaroot的博客-CSDN博客

源码:F407TFT-LCD3.rar-嵌入式文档类资源-CSDN下载

硬件:

STM32F407ZG  +  4.3寸TFT-LCD

时序:

TFT-LCD 8080时序图:

SRM32F4 FSMC SRAM时序图:

2020.11.12

其实如果单独看STM32 SRAM 模式A的写入时序图的话,就会发现

ADDSET周期  实际等于  片选NEx拉低后到写信号NWE拉低之间这一段时间。

(DATAST+1)周期  实际等于  写信号NWE拉低到片选NEx拉高到之间这一段时间。

这样的话,如果你不想像下面一样计算时序,就可以用这种万能的方法,

对应到8080时序给的时间去评估ADDSET 和 DATAST 大小,不行就向上加1个周期,

多试几次就可以了。即使可以了,也要长时间测试稳定性。

读时序也适用该理论。

小结:

从上图可以看到8080时序与STM32 FSMC的SRAM控制只有一个引脚功能不同。

8080时序的D\CX引脚功能是用于区分发送过来的是命令还是数据。

而SRAM时序A[25:0]引脚是用于传输数据地址的。

虽然引脚功能不同,但是时序非常类似,所以只要把8080时序的D\CX接到SRAM时序的

地址引脚,这样可以通过控制写入不同的地址 区分写入的是数据还是命令。

时序计算:

STM32CubeIDE SRAM原理:STM32CubeIDE SRAM_sudaroot的博客-CSDN博客

以前 写过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;

STM32CubeIDE配置:

LCD Register Select - A6:

这是由硬件连接决定的。通过控制地址就能控制LCD写寄存器还是写数据。D\CX拉低表示命令,拉高表示数据。

由于STM32F4对于16bit位宽的地址总线会右移一位,即地址A0是地址的bit1位,跳过bit0位。

所以当写命令的时候地址为0x7E(0111 1110),A6引脚拉低;当写数据的时候地址为0x80(1000 0000),A6引脚拉高。地址由于是16位的,故相邻地址+2。

还需要根据硬件接的选信号或上地址,如硬件接在第4个bank1信号,则或上0x6C000000 | 0x0000007E

Write operation:

是否允许写入操作。FSMC 在存储区域内禁止了写入操作,如果进行写操作将报告 AHB 错误。

Extended mode:

使用扩展模式,即可配置读写时序不同。

生成代码,移植LCD厂商提供的驱动代码。

最后注意:编译器的优化等级选择最高,否则容易出现刷新速度不够,闪屏。

2020.11.12

最近适配了一下ILI9341这个并口显示驱动芯片,用上面的时序发现计算出来无法显示。

最后发现了一个手册的问题。

这个整个写周期的时间twc既然比twrh和twrl相加加了一倍多,这明显不正常嘛。

一般情况下twc = twrh + twrl + (几个纳秒);但是绝对不可能像这个手册中写的大了一倍多。

故,把twc按照 twrh + twrl相加值看待,即twc = 30ns;这样计算出来的时序是正常无误的。

  全篇完。

本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解,记录成长笔记。
笔记是以最简单的方式,只展示最核心的原理。
若有与 大神大大 见解有歧义,我绝对坚信 大神大大 见解是对的,我的是错的。
若无积分等无法下载源码,可加入QQ群657407920下载交流经验。感谢~!

 

 






 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值