搜索
查看: 14302|回复: 30

[分享] 【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

  [复制链接]

该用户从未签到

6

主题

41

帖子

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2014-4-19 18:27:06 | 显示全部楼层 |阅读模式
    笔者在学习51单片机的时候就玩过彩屏,但是一直都是使用IO模拟的方式驱动的。之后在学习STM32时看见正点原子的战舰开发板的TFT是用FSMC驱动,刷屏速度有了很大的提升,我也模仿着用STM32驱动ILI9481,一直不成功,当时有一点我一直搞不懂,就是为什么在TFT->TFT_REG写就是命令,而在TFT->TFT_RAM写就是数据,我查找了很多资料才发现原因:首先TFT和OLED一样是有一个显示ram区的,只是比后者的大很。而FSMC是通过驱动SRAM的方法来驱动LCD的。(SRAM有地址线,TFT没有地址线)这两者有什么不同呢?让我们往下看:
首先SRAM是有地址线的,在使用过程中FSMC_A[0:25]会用到,但LCD只是仿SRAM的。它没有地址线。
对于1M的SRAM,内部寻址需要20跟地址线,2^20=1M,当你写内部一个地址时,数据就从数据线传入,读的时候就从数据线传出。(通过数据线传输数据、地址线确定读写的地址)


而TFT实际上是公用数据线来传送地址和数据的。在看TFT硬件接口时我们可以看到,TFT仅仅有一根接了地址线A24,例程用这根线接RS的,现在不论你写任何地址,都会从数据线发送数据到LCD。但这个数据可能是命令,也可能是真正的数据。这是由RS来控制的,即A24控制的。若A24为0,则输入的是命令,若A24为1,则输入的是数据。我们是用FSMC输入地址来控制输入命令还是数据的,而输入的真正地址,是利用输入的命令决定的。


下面我们介绍0x6000 0000和0x1fffffe怎么来的:
0x6000 0000是FSMC bank1 块1的地址起点,0x1fffffe由如下方法得到:如果我们要输入命令,我们得保证A24为0.这样我们的地址线用二进制表示可以为
    **** **0* **** **** **** ****
而输入数据时地址线的输入用二进制表示:
    **** **1* **** **** **** ****
我们可以看到实际上我们可以使用很多地址来代表输入的是命令还是数据,例程利用0x1fffffe和0x2000000的原因很简单:

<span style="font-size: large;"><span style="background-color: rgb(204, 255, 204);"><span style="color: rgb(255, 0, 0);"><span style="font-family: 黑体;"><span lang="EN-US">0x1fffffe = 0001 1111 1111 1110b = ((2^24)

ILI9481_FSMC V0.0.rar

166.97 KB, 下载次数: 465, 下载积分: ST金币 -1

回复

使用道具 举报

该用户从未签到

6

主题

41

帖子

0

蝴蝶豆

中级会员

最后登录
1970-1-1
 楼主| 发表于 2014-4-19 18:35:52 | 显示全部楼层

RE:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

自己先顶一下,别沉了!我还希望能够中奖呢!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-4-19 19:07:57 | 显示全部楼层

回复:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

 写的挺详细嘛,不错,顶
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-4-19 21:31:41 | 显示全部楼层

回复:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

顶 
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-4-19 21:33:13 | 显示全部楼层

回复:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

顶 
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

82

帖子

1

蝴蝶豆

高级会员

最后登录
2021-3-5
发表于 2014-4-21 08:51:14 | 显示全部楼层

RE:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

好啊,支持你楼主
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

41

帖子

0

蝴蝶豆

中级会员

最后登录
1970-1-1
 楼主| 发表于 2014-4-24 22:02:59 | 显示全部楼层

RE:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

,都沉了
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

11

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-4-30 16:29:45 | 显示全部楼层

RE:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

顶了
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

蝴蝶豆

初级会员

最后登录
2018-9-18
发表于 2014-5-12 20:43:04 | 显示全部楼层

RE:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

谢谢分享,我用模拟IO的方式读点一直有问题,其他正常,不知道你有建议没
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
发表于 2014-5-13 21:27:21 | 显示全部楼层

RE:【MCU实战经验】STM32F103ZET6通过FSMC控制ILI9481

楼主写得确实透彻,顶一下!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 02:17 , Processed in 1.185275 second(s), 44 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表