3.2TFT LCD 模块学习

3.2lcd 驱动芯片一般是ILI9341

引脚说明

6条指令

这个xy坐标,在开始初始化时候,需要设定显示大小。后面可以修改起始坐标(x-SC;Y-SP)完成定位写入。

确定XY坐标,就可以窗口模式显示内容。

写入可以是连续写入,不需要重新设置坐标!!

从上到下的扫描方式,那么设置好起始坐标(通过 SC, SP 设置)后,每写入一个颜色值, GRAM 地址将会自动自增 1(SC++),如果碰到 EC,则回到 SC,同时 SP++,一直到坐标: EC, EP 结束, 期间无需再次设置的坐标,从而大大提高写入速度!!

该指令用于读取 GRAM, ILI9341 在收到该指令后,第一次输出的是dummy 数据,也就是无效的数据,第二次开始,读取到的才是有效的 GRAM 数据(从坐标:SC, SP 开始),输出规律为:每个颜色分量占 8 个位,一次输出 2 个颜色分量。比如:第一次输出是 R1G1,随后的规律为: B1R2→G2B2→R3G3→B3R4→G4B4→R5G5...以此类推。如果我们只需要读取一个点的颜色值,那么只需要接收到参数 3 即可,如果要连续读取(利用 GRAM地址自增,方法同上),那么就按照上述规律去接收颜色数据。

模拟ioy引脚定义

这个是使用时io口模拟驱动lcd,速度比较慢,了解一下,后面使用SPI或者FSMC。

FSMC 简介
ILI9341 的 8080 通讯接口时序可以由 STM32 使用 GPIO 接口进行模拟,但这样效率太低,STM32 提供了一种更高效的控制方法——使用 FSMC 接口实现 8080 时序,但 FSMC 是 STM32
片上外设的一种,并非所有的 STM32 都拥有这种硬件接口,使用何种方式驱动需要在芯片选型时就确定好。 我们的开发板支持 FSMC 接口,下面我们来了解一下这个接口的功能。FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,FSMC 接口可以通过地址信号,快速地找到存储器对应存储块上的数据。 STM32F407 的 FSMC接口支持包括SRAM、 NAND FLASH、 NOR FLASH 和 PSRAM 等存储器。 F4 系列的大容量型号, 且引脚数目在 100 脚及以上的 STM32F407 芯片都带有 FSMC 接口, 正点原子探索者STM32F407 开发板的主芯片为 STM32F407ZGT6,是带有 FSMC 接口的。

①为 FSMC 的总线和时钟源,②为 STM32 内部的 FSMC 控制单元,③是连接硬件的引脚,
④是 NOR/PSRAM 会使用到的信号控制线,③和④这些信号比较重要,它们的功能如表 。

STM32F407 的 FSMC 将外部存储器划分为固定大小为 256M 字节的四个存储块, FSMC 的
外部设备地址映像如图 25.1.3.2 所示

探索者 STM32F407 开发板把 TFT-LCD 就是用的 FSMC_NE4 做片选,把 RS 连接在 A10上面的。 我们来分析一下要让实现上面的通过地址自动切换命令和数据的实现方式。
首先 NOR/PSRAM 储块地址范围: 0x6000 0000 ~ 0x6FFF FFFF,基地址是 0x6000 0000,
每个存储块是 64MB,那么这时候我们访问 LCD 的地址应该是第 4 个存储块,编号从 1 开始,
访问 LCD 的起始地址就是 0x6000 0000 + (0x400 0000 * (x - 1)) = 0x6C00 0000,即从 0x6C00
0000 起的 64MB 内存地址都可以去访问 LCD。FSMC_A6 对应地址值: 2^6 * 2 = 0x80(16 位模式时,参考表 25.1.3.3 及之后对 HADDR和 FSMC 地址线对应关系的描述: HADDR[25:1]→FSMC_A[24:0],所以这里计算时还需要乘2);则写命令时的地址为: 0x6C00 0000 + 2^6 * 2 = 0x6C00 0080。写数据的地址就是使 FSMC_A10为 0 的其它任意地址。(大家不要被地址访问的思路带进去了, 以为接下来就是用 FSMC 的地址偏移来操作显存了,实际显存的操作还是归 MCU 屏管理。我们使能了 FSMC 功能后,就可以直接在我们设置的地址读写数据。实际上我们只用到了两个固定的地址:一个地址把FSMC_A10 位置 1,另一个把该位置 0,但要保证这两个地址在各个 BANK 的管理范围内)。
STM32F407 的 FSMC 支持 8/16 位数据宽度,我们这里用到的 LCD 是 16 位宽度的,所以在设置的时候,选择 16 位宽就 OK 了。 向这两个地址写的 16 进制数据会被直接送到数据线上,根据地址自动解析为命令或者数据,通过这样一个过程,我们就完成了用 FSMC 模拟 8080 并口的操作,最终完成对液晶控制器的控制。

SRAM/NOR 闪存片选控制寄存器: FSMC_BCRx(x=1~4)

EXTMOD:扩展模式使能位,也就是是否允许读写不同的时序,很明显,我们本章需要读写不同的时序,故该位需要设置为 1。
WREN:写使能位。我们需要向 TFTLCD 写数据,故该位必须设置为 1。
MWID[1:0]:存储器数据总线宽度。我们的 TFTLCD 是 16 位数据线,所以设置该值为 01。
MTYP[1:0]:存储器类型。前面提到,我们把 TFTLCD 当成 SRAM 用, 所以需要设置该值为 00。
MBKEN:存储块使能位。这个容易理解,我们需要用到该存储块控制 TFTLCD,当然要使能这个存储块了。
SRAM/NOR 闪存片选时序寄存器: FSMC_BTRx(x=1~4)

ACCMOD[1:0]:访问模式。本章我们用到模式A,故设置为00。
DATAST[7:0]:数据保持时间。 0为保留设置,其他设置则代表保持时间为:DATAST个HCLK时钟周期,最大为255个HCLK周期。对ILI9341来说,其实就是RD低电平持续时间,一般为355ns。
而一个HCLK时钟周期为6ns左右(1/168Mhz),为了兼容其他屏,我们这里设置DATAST为60,
也就是60个HCLK周期,时间大约是360ns(未计算数据存储的2个HCLK时间,对9341来说超频
了,但是实际上是可以正常使用的)。
ADDSET[3:0]:地址建立时间。其建立时间为: ADDSET个HCLK周期,最大为15个HCLK周期。对ILI9341来说,这里相当于RD高电平持续时间为90ns,我们设置ADDSET为15,即
15*6ns=90ns。

这里时序,在stm32F1中因为fsmc性能存在问题,这个需要专门注意!!!

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值