STM32篇七:TFTLCD(ATK-4.3‘)

1、LCD介绍

ATK-4.3’ TFTLCD 模块采用NT35510 作为 LCD驱动器,该驱动器自带 LCD GRAM,无需外加独立驱动器,使用非常方便。模块采用 16 位 8080 并口与外部连接(不支持其他接口方式,仅支持 16 位 8080 并口),在 8080 并口模 式下,LCD驱动需要用到的信号线如下:

  • CS:LCD片选信号
  • WR:向 LCD写入数据
  • RD:从 LCD读取数据
  • D[15:0]:16 位双向数据线
  • RST:硬复位 LCD
  • RS:命令/数据标志

NT35510 自带 LCD GRAM(480 * 864 * 3 字节),并且最高支持 24 位颜色深度(1600 万色),不过,我们一般使用 16 位颜色深度(65K色),RGB565 格式,这样,在 16 位模式下, 可以达到最快的速度。
在 16 位模式下,NT35510 采用RGB565 格式存储颜色数据,此时NT35510 的低 16 位数据总线(高 8 位没有用到)与MCU的 16 位数据线以及 24 位 LCD GRAM的对应关系如图所示:
在这里插入图片描述
从上表可以看出,NT35510 的 24 位GRAM与 16 位RGB565 的对应关系,其实就是分别将高位的R、G、B 数据,搬运到低位做填充,“凑成”24 位,再显示。MCU的 16 位数据中,最低 5 位代表蓝色,中间 6 位为绿色,最高 5 位为红色。数值越大,表示该颜色越深。

2、LCD时序

NT35510时序图和参数说明如下:
STM32篇七:TFTLCD(ATK-4.3‘)_第1张图片
STM32篇七:TFTLCD(ATK-4.3‘)_第2张图片

1、写数据分析

  • Tast (地址设置时间)

    RS 必须比 WR 提前最小 0ns,因此可以同时变化

  • Twrl

    WR低电平保持时间必须大于等于 15ns

  • Twrh

    WR高电平保持时间必须大于等于 15ns

  • Twc(写周期)

    WR整个写时序最少需要 33ns,而高低电平保持时间为 15ns,所以每个时钟沿变化时间为 1.5ns

  • Tdst(数据设置时间)

    数据线上数据必须最少比WR上升沿提前 15ns,而WR低电平保持时间也是 15ns,所以可以和WR同时或提前变化

  • Tdht(数据保持时间)

    在WR上升沿后,数据线上的数据至少保持 10ns

  • Taht(地址保持时间)

    在WR上升沿后,RS状态至少保持 2ns

根据以上分析,整理一种以最小参数设置的写时序
STM32篇七:TFTLCD(ATK-4.3‘)_第3张图片

  • a 和 d 之间为Tast ,设置为最小值 0ns(RS设置必须优先于WR)
  • d 和 e 之间为Twrl,设置为最小值 15ns
  • e 和 f 之间为Twrh,设置为最小值 15ns
  • h 和 d 之间为Tdst,设置为最小值 15ns(D设置必须优先于WR)
  • e 和 b 之间为Taht,为了方便设计为可连续时序RS变化设置为下一个WR下降沿之前
  • e 和 i 之间为Tdht,为了方便设计为可连续时序RS变化设置为下一个WR下降沿之前

写时序设置顺序为:写CS - > 写RS -> 写D -> 写WR

2、读数据详细说明(FM)

  • Tast (地址设置时间)

    RS 必须比 RD下降沿变换 提前最小 10ns

  • Trdhfm

    RD高电平保持时间必须大于等于 250ns

  • Trdlfm

    RD低电平保持时间必须大于等于 150ns

  • Trcfm

    RD整个读时序最低为 400ns

  • Tratfm(读取访问时间)

    读取数据时,下降沿变化以后最多 150ns,数据线上就可以获取。(数据由LCD设置,单片机读取)

  • Taht(地址保持时间)

    在RD上升沿后,RS状态至少保持 2ns

  • Todh(数据关闭时间)

    在RD上升沿后,数据线上数据保持最少 5ns

根据以上分析,整理一种以最小参数设置的读时序
STM32篇七:TFTLCD(ATK-4.3‘)_第4张图片

  • a 和 d 之间为Tast ,设置为最小值 10ns(RS设置必须优先于RD)
  • d 和 e 之间为Trdlfm,设置为最小值 150ns
  • e 和 f 之间为Trdhfm,设置为最小值 250ns
  • h 和 d 之间为Tratfm,设置为最大值 150ns(注意:最晚读取时间为上升沿)
  • e 和 b 之间为Taht,为了方便设计为可连续时序RS变化设置为下一个WR下降沿之前10ns
  • e 和 i 之间为Tdht,读取状态下数据线不由单片机配置

3、LCD初始化步骤

1、初始化与TFTLCD模块相连的IO口进行初始化,以便驱动LCD。

2、初始化TFTLCD模块

  • 硬件复位LCD
  • 初始化序列

3、通过函数将数字和字符显示到TFTLCD模块上

  • 设置坐标
  • 写GRAM指令
  • 写GRAM

以上步骤为一个点的处理,想要显示数字/字符,必须要多次使用这个步骤。

4、使用FSMC模拟8080并口时序

因操作LCD的核心是向GRAM中写入数据,而FSMC主要作用为操作存储器设计,所以,我们可以尝试用FSMC模拟8080并口时序。

FSMC结构框图
STM32篇七:TFTLCD(ATK-4.3‘)_第5张图片
通过分析,我们可以使用如下对应关系进行模拟,时序选用模式A:

功能 LCD引脚 FSMC引脚
片选 CS NE
数据/命令选择 A[25:0]中的1根 RS
写使能 WR NWE
读使能 RD NOE
数据 D[15:0] D[15:0]

模式A写操作
STM32篇七:TFTLCD(ATK-4.3‘)_第6张图片
模式A读操作
STM32篇七:TFTLCD(ATK-4.3‘)_第7张图片
注:LCD操作的核心在于如何精确定位像素点

你可能感兴趣的:(stm32)