打印

STM32的FSMC是否有方法可以实现CS延迟?

[复制链接]
5469|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aozima|  楼主 | 2012-7-5 20:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 aozima 于 2012-7-5 22:06 编辑

STM32F4使用FSMC连接RA8875,
测试有发现读取数据时,地址自增有时没成功。
具体表现为连接写入了一些数据如  12345678.
实际读出来的可能为  01122345 或123445这样的。
进行重复读取确认数据写入是成功的,故障发生在读取时。
仔细对比RA8875的时序要求,发现RA8875有一个address hold time
在STM32的FSMC上面是不支持的。
注:这里的address hold time指CS和A0延迟于RD释放。

STM32只支持全部同时释放,因此造成RA8875内部的坐标自增不成功。
本来只需要每次读一个数据即可,但因为有dummy read的存在,
所以,依然没法保证第一个数据就是对的。

下图是RA8875的时序要求,可以看到有一个tAH。


下面是STM32的FSMC时序,所有模式下都是CS与RD全部同时释放。


这是某处理器的时序,可以看到每个时间段都可以独立控制。
沙发
airwill| | 2012-7-5 21:58 | 只看该作者
楼主分析得很仔细, 我也仔细看了下时序的说明, 的确,写的时候还有个 1HCK 的延时, 读却不能实现这个延时.

使用特权

评论回复
板凳
aozima|  楼主 | 2012-8-16 12:37 | 只看该作者
本帖最后由 aozima 于 2012-8-16 12:57 编辑

开始想到一个方法:

就是实测时,有一定的运气会是OK的,所以打算把光标设置不自增,然后多读几次,取最后一次的值。
结果新生产了一批板子,运气值变成0。

想到另一个规避方法:
读GRAM时,把CS设置成GPIO。这样依然可以读数据。读完以后再设置回CS。
但问题来了,因为FSMC上面会有多个外设,且会使用DMA或在外部SRAM中执行程序。

因GPIO没办法保持绝对同步,所以打算:
NAND FLASH与LCD之间可以用互斥量解决。
最麻烦的是SRAM,这块打算使用NWAIT来解决。

当LCD需要读取GRAM时,把互斥量锁住,再把NWAIT锁住。

但反过来,当SRAM正忙时,我要去读取GRAM,又如何得知呢?

使用特权

评论回复
地板
RogueBear| | 2012-10-7 21:03 | 只看该作者
帮你顶一下。 有103 fsmc的 有407 fsmc的。 关注……如果解决,期望出帖

使用特权

评论回复
5
xqscu| | 2012-10-30 18:59 | 只看该作者
楼主搞定没有,搞定的话,楼主可以分享fsmc的配置吗?我的nwait一直没有效,fsmc没有插入等待时钟。。

使用特权

评论回复
6
秋天落叶| | 2012-10-30 23:19 | 只看该作者
LZ问题如果解决了,就分享下经验吧

使用特权

评论回复
7
aozima|  楼主 | 2013-6-15 21:49 | 只看该作者
问题算是没解决,基本放弃STM32+RA8875的方案了。

使用特权

评论回复
8
墨如风0205| | 2013-7-31 17:52 | 只看该作者
楼主不要放弃啊,我也在整STM32+RA8875的方案,很是头疼啊,你进展到哪里了

使用特权

评论回复
9
aozima|  楼主 | 2013-7-31 17:56 | 只看该作者
楼上不是说了么,从这以后没有再用过RA8875的方案。

使用特权

评论回复
10
zhjerry| | 2013-7-31 20:44 | 只看该作者
有一个简单的办法给CS#信号加微延时,串连一个小电阻(每10欧约延时1ns),  如果原来都有串阻,加大一点即可。

使用特权

评论回复
11
rrfire| | 2013-9-4 14:06 | 只看该作者
请教个问题   ra8875 读取DDRAM,比如BTE读取, 读出来数据都是第一个点的数据,第一个点是正确的,后面的全部重复,怎么回事?

STM32F4   FSMC驱动,整个RA8875  只有连续读DDRAM不成功,其他均通过调试

使用特权

评论回复
12
puchuang| | 2013-9-4 18:36 | 只看该作者
好帖子   楼主   钻的好深入啊   佩服  这个  准备明天   尝试一下   看看

使用特权

评论回复
13
rrfire| | 2013-9-5 14:41 | 只看该作者
根据楼主提供信息,终于搞定,把CS片选使用普通IO控制直接拉低,其他仍然用FSMC搞定,所有读写都正常了[em:29:][em:29:][em:29:][em:29:][em:29:][em:29:]

使用特权

评论回复
14
aozima|  楼主 | 2013-9-7 20:37 | 只看该作者
rrfire 发表于 2013-9-5 14:41
根据楼主提供信息,终于搞定,把CS片选使用普通IO控制直接拉低,其他仍然用FSMC搞定,所有读写都正常了[em: ...

嗯。 只能这样了。

使用特权

评论回复
15
simon09| | 2014-1-7 15:52 | 只看该作者
aozima 发表于 2013-9-7 20:37
嗯。 只能这样了。

不是很多人用STM32+RA8875么,怎么会读写不正常呢?

使用特权

评论回复
16
wakojosin| | 2014-1-9 13:31 | 只看该作者
支持一下。加油吧

使用特权

评论回复
17
225489720| | 2015-11-3 14:33 | 只看该作者
我现在用的STM32F103+RA8875 写操作都正常,就是读不到数据,头痛的很。显示OK不能读,楼上的朋友指点一下呗!!!

使用特权

评论回复
18
ardick| | 2016-5-6 11:01 | 只看该作者
抱歉, 等级不够不能贴网址.
到瑞佑官方网站, 进入技术支持, 找到RA8875 技术支持, 有个
RA8875_STM32_FSMC_read_issue_Eng.pdf
试看看里面的方法.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:RTOS RT-Thread

55

主题

2012

帖子

23

粉丝