搜索
bottom↓
回复: 165

什么是STM32 FSMC总线,TFT (9325)液晶屏工作原理是什么,好苦恼啊!

  [复制链接]

出0入0汤圆

发表于 2010-12-17 23:16:15 | 显示全部楼层 |阅读模式
买了一块板子,有实例,FSMC驱动TFT  看了半天的程序,完全没看懂,找资料啊,先了解FSMC 是什么,结果没找到起,连FSMC是个啥子都不知道,然后又找
TFT(IC_9325)显示原理,多到是多,但教程说的真的是垃圾,废话一大堆,,不知道是我笨,还是理解有问题,总之,几乎所有的教程,都是把,地址,X,Y寄存器,指针, 数据位,地址位,读,写 ,说了一片,,都没有正儿八经的,把这些功能连惯在一起来实现显示一个图片的功能,说一遍。所以,我晕得很啊,。希望,那位有好点的资料,和正确的方法,给我指点一下。感激不尽啊,,,我也是没法,喜欢这个玩意,业余爱好者,初学,请多多关照。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入24汤圆

发表于 2010-12-18 01:23:47 | 显示全部楼层
FSMC翻译过来就是灵活的静态存储器控制器,是用来驱动外部总线的。
关于外部总线,你可以想象一下51的外部总线,STM32的FSMC实际上跟51的外部总线是一样的,只不过性能更好,速度更快。
至于总线的优势,可以举个51外部总线的例子,51单片机驱动1864或者1602液晶,如果用IO口模拟液晶的时序,需要用指令分别控制RS,WR,EN控制线还有数据线;但是如果用的是外部总线,从汇编指令上来讲,只需要一条MOVX指令就解决问题了。二者的速度一目了然!

出0入0汤圆

 楼主| 发表于 2010-12-18 10:51:29 | 显示全部楼层
回复【2楼】20061002838
-----------------------------------------------------------------------

哦,谢谢了哈,不知道有没有好点的资料,能否上传给我。

出0入0汤圆

发表于 2010-12-28 14:02:50 | 显示全部楼层
TFT的数据接口为:D0-D15或者D0-D8.
TFT的控制线有:复位信号RST,片选CS,输出使能RD(读信号),写信号WE以及RS信号。
于STM32连线为: RST->GPIO, CS->NEx, RD->NOE, WE->RW, RS->A0(或者其他任何一条地址线)
关键的一点就在于这个RS信号(我只说关键的这一点):
一般TFT的地址线只有1个RS.
以我用的OTM3225 控制芯片的TFT为例.RS=0的时候一般是写命令,RS=1的时候是写数据,把TFT作为只有2个地址的存储器对待.
RS接到哪一个地址线都是可以的。假如RS接到A0,而片选为NE4,总线宽度8位.
那么可以定义
#define Bank1_SRAM4_ADDR    ((u32)0x6C000000)
#define LCD_DATA_ADDR (Bank1_SRAM4_ADDR + 1)
#define LCD_CMD_ADDR  (Bank1_SRAM4_ADDR + 0)

那么写命令数据就是直接往LCD_CMD_ADDR写数据:(假设cmd,data为16位,而我的TFT数据接口是8位)
LCD_WRITE_CMD(unsigned short cmd)                           //写命令到TFT,16位要写2次
{
*(vu8*)LCD_CMD_ADDR=(cmd>>8);
*(vu8*)LCD_CMD_ADDR=(cmd);
}
写数据就是直接往LCD_DATA_ADDR写数据:
LCD_WRITE_DATA(unsigned short Data)                        //写数据到TFT
{
*(vu8*)LCD_DATA_ADDR=(Data>>8);
*(vu8*)LCD_DATA_ADDR=(Data);
}

至于RD,WE,RS,CS信号都已经是FSMC控制器自动产生的,不用理会,不过当然是FSMC及GPIO初始化要正确.而RST信号还是需要通过操作GPIO来完成的.

这是最基本的2个操作。而那些什么设置X,Y,设置窗口,设置亮度,设置。。。。都是由这2个操作组合完成的。

当然要注意我的TFT是OTM3225,至于9325我没用过,但我想大同小异.

72M HZ,320*240刷单色屏速度在 32fps左右.


(原文件名:IMAGE_060.jpg)


(原文件名:IMAGE_067.jpg)


(原文件名:IMAGE_070.jpg)

出0入0汤圆

发表于 2011-1-9 15:57:57 | 显示全部楼层
楼上图文并茂,色艺双馨,8错

出0入24汤圆

发表于 2011-1-9 16:26:35 | 显示全部楼层
4楼强悍!
Mark!

出0入0汤圆

发表于 2011-1-9 20:32:58 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-1-10 08:26:30 | 显示全部楼层
也学习学习

出0入0汤圆

发表于 2011-1-10 09:52:01 | 显示全部楼层
回复【4楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------

请问同时挂多个屏的时候(简单起见多个同样的屏),是不是只要RS线接的地址线不同就行了?
如果没有其他的外设用fsmc的时候,能够挂几个屏呢?

出0入0汤圆

发表于 2011-1-13 21:46:15 | 显示全部楼层
回复【9楼】gallop020142
回复【4楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
请问同时挂多个屏的时候(简单起见多个同样的屏),是不是只要rs线接的地址线不同就行了?
如果没有其他的外设用fsmc的时候,能够挂几个屏呢?
-----------------------------------------------------------------------

多个屏我也没用过,不过我认为不是“只要RS线接的地址不同”,而是"CS接的NEx"要不一样。
RS只是指示读写的是寄存器还是数据,而不是片选.
片选是CS,当CS为低时,RS都是有效的。这样是不行的,严重的会造成IO口损坏。
比如假设屏A和屏B的片选CS都接到NE4上,A的RS接 A0,B的RS接A1,这样,当通过NE4为低时,要读取屏上的数据时,不管A0,A1都有一个状态,分别指示读取寄存器区还是数据。假设A0为1,A1为0,那么屏A指示读取数据,屏B指示读取寄存器。不管是哪种,屏A和屏B都有可能同时在总线上输出不同的数据,这样,呵呵,后果你懂的。

所以,不能简单通过RS接线地址不同来区分多个屏,而是要通过CS接的NEx不一样来区分,这样可以有NE1至NE4,也就是说可以接4个.
如果是更多屏幕,我觉得可以通过NEx与地址线做组合逻辑来形成多个CS信号,这样可以接更多屏幕.
比如 A15做 RS共用, A2-A0三条线做屏幕的片选地址,通过138译码器译成8个片选地址,这8个片选地址再通过与 NE1片选结合,最终输出8个有效的CSn,接到8个屏幕CS上.

出0入0汤圆

发表于 2011-1-14 16:12:06 | 显示全部楼层
学习了 我现在用的9331刷屏要死人

出0入0汤圆

发表于 2011-1-14 16:14:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-14 16:16:31 | 显示全部楼层
我的理解fmsc的意思就是一个内存地址控制器,但是和控制器连接的口线,读写有效信号,这些可以编程设置。

配置完成后,可以如同访问内部一般存储器访问,具体的过程是fmsc的事情

如同功能模块的调用。初始化模块,使用模块。

出10入0汤圆

发表于 2011-1-15 12:11:00 | 显示全部楼层
mrak!!学习了!!

出0入0汤圆

发表于 2011-1-21 14:25:04 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2011-1-22 00:24:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-24 12:31:29 | 显示全部楼层
mark

出0入9汤圆

发表于 2011-1-24 14:12:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-24 14:20:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-24 14:45:33 | 显示全部楼层
回复【4楼】sharpufo 风生水起月皎白
tft的数据接口为:d0-d15或者d0-d8.
tft的控制线有:复位信号rst,片选cs,输出使能rd(读信号),写信号we以及rs信号。
于stm32连线为: rst->gpio, cs->nex, rd->noe, we->rw, rs->a0(或者其他任何一条地址线)
关键的一点就在于这个rs信号(我只说关键的这一点):
一般tft的地址线只有1个rs.
以我用的otm3225 控制芯片的tft为例.rs=0的时候一般是写命令,rs=1的时候是写数据,把tft作为只有2个地址的存储器对待.
rs接到哪一个地址线都是可以的。假如rs接到a0,而片选为ne4,总线宽度8位.
那么可以定义
#define bank1_sram4_addr    ((u32)0x6c000000)
#define lcd_data_addr (bank1_......
-----------------------------------------------------------------------

感谢+1!~
我的lcd一直没调通,看你的资料我突然有了灵感,刚才去改了下宏参数,一下子全都调通了~

出0入0汤圆

发表于 2011-1-24 18:14:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-25 20:07:53 | 显示全部楼层
虽然没看大懂,但是貌似都是高手,学习了!

出0入0汤圆

发表于 2011-2-13 21:12:01 | 显示全部楼层
明白了.谢谢了.

出0入0汤圆

发表于 2011-2-15 13:54:13 | 显示全部楼层
留着以后用

出0入0汤圆

发表于 2011-2-16 16:15:25 | 显示全部楼层
标记备用

出0入0汤圆

发表于 2011-2-18 15:16:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-18 17:15:41 | 显示全部楼层
4楼前辈教诲不小,谢谢了~~

出0入0汤圆

发表于 2011-2-18 17:45:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-18 20:35:21 | 显示全部楼层
马克

出0入0汤圆

发表于 2011-2-19 00:40:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-19 08:34:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-9 11:14:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-9 11:32:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-22 13:13:09 | 显示全部楼层
待会看 上课去 呵呵

出0入0汤圆

发表于 2011-3-22 22:08:07 | 显示全部楼层
又学习了一遍
头像被屏蔽

出0入0汤圆

发表于 2011-3-22 22:31:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2011-3-31 18:52:34 | 显示全部楼层
没看懂不过还是要顶一下

出0入0汤圆

发表于 2011-4-8 13:45:06 | 显示全部楼层
4楼强悍···明白点了

出0入0汤圆

发表于 2011-4-8 17:24:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-9 07:54:48 | 显示全部楼层
不明白的是 地址是怎么算出来的 就一根线!!!

出0入0汤圆

发表于 2011-4-9 10:33:38 | 显示全部楼层
地址是自动置上去的
比如挂ne1,向0x60000000写,那么A0=0;
向0x60000002写,那么A0=1;

如果挂A1--RS
那么就加4。。
A2加8,以此类推

也就是说其实通过地址译码可以挂n个。。。

出0入0汤圆

发表于 2011-4-18 11:11:43 | 显示全部楼层
四楼强大啊

出0入0汤圆

发表于 2011-4-21 01:52:15 | 显示全部楼层
正整这个

出0入0汤圆

发表于 2011-4-21 15:22:28 | 显示全部楼层
标记

出0入0汤圆

发表于 2011-4-21 15:32:05 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-4-21 17:25:36 | 显示全部楼层
呵呵,刚百度完FSMC就看到如此好的帖子了,受教了。鉴于之前用过M128总线来驱动TFT,感觉原理也是差不多的!!!

出0入0汤圆

发表于 2011-4-21 17:30:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-22 16:17:01 | 显示全部楼层

出0入0汤圆

发表于 2011-4-22 17:00:35 | 显示全部楼层
另可以参考
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3907167
这贴中敝人的回复。


另有的是敝人做的STM32的FLAC音乐播放器,请移步:
"【开源作品】OOPY 音乐播放器,STM32 inside, 支持CD格式WAV、无损FLAC软解码播放,裸奔及赤裸开源,欢迎围观 "
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4647820

里面用的就是上面的那个屏TFT_OTM3225.

出0入0汤圆

发表于 2011-4-22 17:28:28 | 显示全部楼层
回复【4楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------

学习

出0入0汤圆

发表于 2011-4-22 21:39:59 | 显示全部楼层
留着以后用

出0入0汤圆

发表于 2011-5-3 19:22:51 | 显示全部楼层
看来四楼解释,豁然开朗啊,谢谢

出0入0汤圆

发表于 2011-5-4 16:15:29 | 显示全部楼层
Mark

出0入0汤圆

发表于 2011-5-4 20:38:56 | 显示全部楼层
顶4楼的

出0入0汤圆

发表于 2011-5-13 17:10:11 | 显示全部楼层
好,豁然开朗

出0入4汤圆

发表于 2011-5-13 20:16:52 | 显示全部楼层
此贴收藏

出0入0汤圆

发表于 2011-5-16 18:37:03 | 显示全部楼层
收藏贴

出0入0汤圆

发表于 2011-5-19 13:32:49 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-5-19 15:40:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-19 15:59:09 | 显示全部楼层
四楼 强大

出0入0汤圆

发表于 2011-5-19 17:59:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-20 13:13:20 | 显示全部楼层
学习了。我的2.8 LCD模块只能读到ID 9330。未能显示,不知道啥原因。用4楼的方法排查一下

出0入0汤圆

发表于 2011-5-25 17:02:30 | 显示全部楼层
回复【41楼】qingqng
-----------------------------------------------------------------------

地址是自动置上去的???
还是不太明白唉,可不可以解释清楚一点呢??谢谢

出0入0汤圆

发表于 2011-5-27 11:26:15 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2011-5-31 13:47:47 | 显示全部楼层

出0入0汤圆

发表于 2011-6-5 23:51:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-8 10:37:36 | 显示全部楼层
mark一下 感觉能学的东西太多了

出0入0汤圆

发表于 2011-7-8 00:02:17 | 显示全部楼层
要学的东西很多呀!

出0入0汤圆

发表于 2011-7-8 01:46:54 | 显示全部楼层
四楼 讲解精辟

出0入0汤圆

发表于 2011-7-20 16:33:31 | 显示全部楼层
冲四楼来回贴

出0入0汤圆

发表于 2011-7-20 16:42:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-20 17:30:23 | 显示全部楼层
mark学习了

出0入0汤圆

发表于 2011-7-23 13:29:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-23 13:56:16 | 显示全部楼层
mark一下!

出0入0汤圆

发表于 2011-7-23 14:14:43 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-23 15:32:16 | 显示全部楼层
mark.

出0入0汤圆

发表于 2011-7-23 16:09:21 | 显示全部楼层
回复【41楼】qingqng  
-----------------------------------------------------------------------

为什么“向0x60000002写,那么A0=1;”,不是应该是向0x60000001写吗?A0应该是地址线的最后一位啊。求教

出0入0汤圆

发表于 2011-8-13 21:56:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-13 22:49:43 | 显示全部楼层
马克芝

出10入12汤圆

发表于 2011-8-13 23:41:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-16 15:50:58 | 显示全部楼层
又涨知识了

出0入0汤圆

发表于 2011-8-16 15:56:33 | 显示全部楼层
四楼太牛了

出0入0汤圆

发表于 2011-8-16 19:35:03 | 显示全部楼层
回复【78楼】wheavy  杰
-----------------------------------------------------------------------

没用过STM,但是如果他没说错的话我猜就是因为FSMC的数据总线是16位的,也就是地址总线加1的话,对应内存地址+2,也即使地址对齐的问题

出0入0汤圆

发表于 2011-8-17 16:04:21 | 显示全部楼层
4楼 ,能否把你的屏的程序发给我一份以及屏和STM32的连接电路
谢谢!
我用的是爱英卓 2.8寸的屏  现在驱动有点问题 不能显示
屏型号  ET280QV02-BA

出0入0汤圆

发表于 2011-8-17 16:29:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-17 17:16:09 | 显示全部楼层
回复【4楼】sharpufo 风生水起月皎白
-----------------------------------------------------------------------

谢谢楼主有用啊

出0入0汤圆

发表于 2011-8-18 23:18:05 | 显示全部楼层
这个要顶!

出0入0汤圆

发表于 2011-8-21 16:18:58 | 显示全部楼层
写得挺好的。谢谢了

出0入0汤圆

发表于 2011-8-23 10:19:51 | 显示全部楼层
4楼的解释详细。

出0入0汤圆

发表于 2011-8-23 23:50:22 | 显示全部楼层
mark 四楼强,一看,好像明白了什么

出0入0汤圆

发表于 2011-9-2 14:37:41 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-9-2 14:54:06 | 显示全部楼层
回复【楼主位】yongqi
-----------------------------------------------------------------------

FSMC翻译过来就是灵活的静态存储器控制器,st做出来,主要是方便用户连接各种形式的存贮设备,如ram nor flash nand flash等
像这些你可以直接连接不需要另外的芯片。

出0入0汤圆

发表于 2011-9-2 15:28:58 | 显示全部楼层
学习!再学习!

出0入0汤圆

发表于 2011-9-2 15:37:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-10 17:48:05 | 显示全部楼层
好!

出0入0汤圆

发表于 2011-9-11 09:50:57 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-9-11 17:24:44 | 显示全部楼层
其实二楼说得很原理。

出0入0汤圆

发表于 2011-9-11 23:29:46 | 显示全部楼层
马上就要开始学习STM32了,学习了

出0入0汤圆

发表于 2011-9-12 17:20:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-12 18:04:32 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 00:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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