[应用相关] STM32 驱动彩屏

[复制链接]
 楼主| chenqiang10 发表于 2018-5-29 17:25 | 显示全部楼层 |阅读模式
LCD  屏 简介
TFT-LCD 又叫做薄膜晶体管液晶显示器,常用的液晶屏接口很多种,8 位、 9 位、16
位、18 位都有。而常用的通信模式呢,主要有 6800 模式和 8080 模式两种,今天呢,我
们来讲的是 8080 模式。

 楼主| chenqiang10 发表于 2018-5-29 17:25 | 显示全部楼层
大家接触过 LCD1602 或者 LCD12864 等,那么就会发现 8080 模式的时序呢,
其实跟 LCD1602 或者 LCD12864 的读写时序是差不多的。8080 接口有 5 条基本的控制
线和多条数据线,数据线的数量主要看液晶屏使用的是几位模式,有 8 根、9 根、16 根、
18 根四种类型。
 楼主| chenqiang10 发表于 2018-5-29 17:26 | 显示全部楼层
功能如下:
1.png
 楼主| chenqiang10 发表于 2018-5-29 17:27 | 显示全部楼层
8080 接口模式的时序:
1.png
 楼主| chenqiang10 发表于 2018-5-29 17:28 | 显示全部楼层
在 WR 跳变为低电平之后,液晶屏开始读取总线上面的数据。如果使用 IO 口模拟
写入的时候,可以先在总线上面写入数据,然后在跳变 WR,以保证当读取的时候,总线
上面的数据是稳定的。
 楼主| chenqiang10 发表于 2018-5-29 17:29 | 显示全部楼层
在 RD 跳变为低电平之后,液晶屏放置数据到总线上面。从上图,我们就可以很清
晰的看得出,液晶屏的读写时序了,大家操作的时候,可以使用单片机 IO 口模拟它的时
序进行操作。不过我们开发板上面的单片机自带有 FSMC 模块,我们可以直接使用 FSMC
模块来操作液晶屏,接下来我们给大家介绍一下 FSMC 模块。
 楼主| chenqiang10 发表于 2018-5-29 17:30 | 显示全部楼层
FSMC  模拟 LCD  彩屏 8080  模式
引脚数在 100 脚以上的 STM32F103 芯片都带有 FSMC 的接口,而什么是 FSMC 呢?
FSMC 即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储卡接口,
FSMC 的接口支持包括 SRAM、NAND FLASH、NOR FLASH、 PSRAM 等存储器。说白
了呢,就是可以当操作 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器的时
候,我们不必自己操作 IO 口模拟这些存储器的操作时序了,使用 FSMC 模块可以直接帮
我们读写这些存储器。
 楼主| chenqiang10 发表于 2018-5-29 17:30 | 显示全部楼层
LCD 液晶屏的信号线主要有:
1) CS:用于片选的选择。
2) RS:用于选择命令或者数据。
3) WR:写使能。
4) RD:读使能。
5) RESET:复位端。
 楼主| chenqiang10 发表于 2018-5-29 17:57 | 显示全部楼层
NOR FLASH 主要使用的信号线主要有:
1.png
 楼主| chenqiang10 发表于 2018-5-29 18:00 | 显示全部楼层
液晶屏的原理图
1.png
mintspring 发表于 2018-5-29 23:27 | 显示全部楼层
总结的真好,学到了。
azadaqdc 发表于 2018-5-30 12:00 | 显示全部楼层
不错
 楼主| chenqiang10 发表于 2018-5-30 17:54 | 显示全部楼层
mintspring 发表于 2018-5-29 23:27
总结的真好,学到了。

还没结束,正在更新中。
 楼主| chenqiang10 发表于 2018-5-30 17:56 | 显示全部楼层
上面的 FSMC 如何能够模拟 LCD 彩屏 8080 模式之后,我们对照,我们开
发板上面的彩屏接口,就可以很好的理解了。我们这里使用 FSMC_NE4 作片选 CS,使用
FSMC_A10(即地址线 10)作数据命令选择 RS。
 楼主| chenqiang10 发表于 2018-5-30 17:57 | 显示全部楼层
从 FSMC 的角度看,可以把外部存储器划分为固定大小为 256M 字节的四个存储块,如下图:
1.png

 楼主| chenqiang10 发表于 2018-5-30 17:58 | 显示全部楼层
也就是说,当我们操作外部存储器的时候,只要操作单片机中对应的地址,那么 FSMC
模块,就可以自动帮我们操作外部存储器,相当于把外部存储器挂在了单片机的地址总线上
面了。
 楼主| chenqiang10 发表于 2018-5-30 17:58 | 显示全部楼层
而我们这里使用的是 NOR 模式来模拟 LCD 液晶屏的 8080 时序,而在 NOR/PSRAM
中,有四块存储块,我们使用的是 FSMC_NE4,所以使用的是第四块存储块,就是地址从
0x6C000000 到 0x6FFFFFFF 的存储块。现在我们使用地址线 A10 来作数据命令选择端
RS,那么当我们要写入数据的时候,地址线 A10 就要输出为 1,无论地址是什么,只要地
址线 A10 输出为 1,就可以了;而当我们要写入命令的时候,正好相反,地址线 A10 输
出为 0。
 楼主| chenqiang10 发表于 2018-5-30 18:03 | 显示全部楼层
FSMC_NORSRAMInit() 函数:
我 们 使 用 的 是 NORSRAM 模 式 , 所 以 我 们 使 用 的 初 始 化 函 数 是
FSMC_NORSRAMInit()函数。
这 个 函 数 有 一 个 输 入 参 数 , 这 个 输 入 参 数 是 一 个
FSMC_NORSRAMInitTypeDef 结构体,这个结构体很复杂,它一共有 15 个成员
 楼主| chenqiang10 发表于 2018-5-30 18:03 | 显示全部楼层
1) FSMC_Bank:选择你要使用的 bank,我们使用的是 NOR 模式的 FSMC_NE4,也就
是第 1 个 bank 的第 4 个存储块,所以这里我们设置为: FSMC_Bank1_NORSRAM4。
 楼主| chenqiang10 发表于 2018-5-30 18:04 | 显示全部楼层
2) FSMC_MemoryType:选择你要使用的内存类型,我们使用的是 NOR FLASH 或 者
SRAM 都 可 以 , 我 们 选 择 设 置 为 : FSMC_MemoryType_SRAM。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

940

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

39

主题

940

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部