关于stm32 fsmc的疑问

[复制链接]
2735|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 的操作。
 楼主| zeaphr 发表于 2013-1-18 16:36 | 显示全部楼层
那到底内核 在fsmc执行期间 是阻塞等待,还是继续执行下一条指令?
 楼主| zeaphr 发表于 2013-1-18 16:37 | 显示全部楼层
最底层的BUG 发表于 2013-1-18 13:50
FSMC的地址建立时间和数据建立时间最大不能超过15个总线时钟周期,如果总线72MHz,15/72=0.208uS,一个操作 ...

有些flash不一定是下降沿起作用
JD21IC 发表于 2013-1-21 13:49 | 显示全部楼层
据我所知是阻塞的。。就一直死等到延迟时间到达
csyxj 发表于 2013-1-21 14:53 | 显示全部楼层
这个问题很具体了啊!
 楼主| zeaphr 发表于 2013-1-23 09:44 | 显示全部楼层
从示波器上看,mcu应该是没有完全阻塞
在执行某些指令时,时序是完整的,但执行其他一些指令时,时序不完整,似乎被打断了
比较怪异
最底层的BUG 发表于 2013-1-23 13:24 | 显示全部楼层
是的,我的FSMC使能端写入后,数据口立即就释放了,用示波器观察好像冲放电一样的波形……
OowarrioroO 发表于 2013-1-25 19:01 | 显示全部楼层
问题好具体啊!!喜欢细节!!
feiguohai517 发表于 2013-1-26 08:32 | 显示全部楼层
关注!
zchong 发表于 2013-1-26 17:58 | 显示全部楼层
cs0617 发表于 2013-1-26 20:09 | 显示全部楼层
21世纪黄毛 发表于 2013-1-27 11:15 | 显示全部楼层
标记下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

52

帖子

1

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