打印

关于stm32 fsmc的疑问

[复制链接]
2185|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zeaphr|  楼主 | 2013-1-18 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由内核通过fsmc操作外部nor flash,如果nor flash的参数设置延时很长,比如addr 和data setup /hold的时间加起来超过1us,那内核在这1us内难道是阻塞不再执行其他指令,还是会继续执行其他指令?

另外,如果是执行其他指令,那下面这种情况是否会出错:
fsmc挂了两个nor flash,先读flash0一个字节,紧接着读取flash1 一个字节。当读取flash1时,NE1拉低,输出addr,因为flash0的时序还没结束(NE0还没有拉高),addr改变不就会影响flash0刚建立的时序了吗?

谢谢!
沙发
uet_cache| | 2013-1-18 11:20 | 只看该作者
关注。。这么细节的问题没注意过。。

使用特权

评论回复
板凳
最底层的BUG| | 2013-1-18 13:50 | 只看该作者
FSMC的地址建立时间和数据建立时间最大不能超过15个总线时钟周期,如果总线72MHz,15/72=0.208uS,一个操作的时间为AddressSetupTime+DataSetupTime+BusTurnAroundDuration最大0.624uS 这个时期会有总线回复时间的,再说8080接口是CE 的下降沿读写指令,不会有时序影响的。

使用特权

评论回复
地板
IJK| | 2013-1-18 14:41 | 只看该作者
fsmc挂了两个nor flash,先读flash0一个字节,紧接着读取flash1 一个字节。当读取flash1时,NE1拉低,输出addr,因为flash0的时序还没结束(NE0还没有拉高),addr改变不就会影响flash0刚建立的时序了吗?

这种情况不会发生。FSMC会先执行完 读flash0一个字节 的操作,再做读取flash1 的操作。

使用特权

评论回复
5
zeaphr|  楼主 | 2013-1-18 16:36 | 只看该作者
那到底内核 在fsmc执行期间 是阻塞等待,还是继续执行下一条指令?

使用特权

评论回复
6
zeaphr|  楼主 | 2013-1-18 16:37 | 只看该作者
最底层的BUG 发表于 2013-1-18 13:50
FSMC的地址建立时间和数据建立时间最大不能超过15个总线时钟周期,如果总线72MHz,15/72=0.208uS,一个操作 ...

有些flash不一定是下降沿起作用

使用特权

评论回复
7
JD21IC| | 2013-1-21 13:49 | 只看该作者
据我所知是阻塞的。。就一直死等到延迟时间到达

使用特权

评论回复
8
csyxj| | 2013-1-21 14:53 | 只看该作者
这个问题很具体了啊!

使用特权

评论回复
9
zeaphr|  楼主 | 2013-1-23 09:44 | 只看该作者
从示波器上看,mcu应该是没有完全阻塞
在执行某些指令时,时序是完整的,但执行其他一些指令时,时序不完整,似乎被打断了
比较怪异

使用特权

评论回复
10
最底层的BUG| | 2013-1-23 13:24 | 只看该作者
是的,我的FSMC使能端写入后,数据口立即就释放了,用示波器观察好像冲放电一样的波形……

使用特权

评论回复
11
OowarrioroO| | 2013-1-25 19:01 | 只看该作者
问题好具体啊!!喜欢细节!!

使用特权

评论回复
12
feiguohai517| | 2013-1-26 08:32 | 只看该作者
关注!

使用特权

评论回复
13
zchong| | 2013-1-26 17:58 | 只看该作者
阻塞

使用特权

评论回复
14
cs0617| | 2013-1-26 20:09 | 只看该作者
mark

使用特权

评论回复
15
21世纪黄毛| | 2013-1-27 11:15 | 只看该作者
标记下

使用特权

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

本版积分规则

11

主题

52

帖子

1

粉丝