加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

FSMC访问模式的选择

(2014-11-28 14:16:36)
标签:

股票

分类: STM32

1.首先要了解三个服务于FSMC的特殊功能寄存器

FSMC_BCR     SRAM/NOR_FLASH 片选控制寄存器

FSMC_BTR     SRAM/NOR_FLASH  片选时序寄存器

FSMC_BWTR  SRAM/NOR_FLASH  写时序寄存器

(1)FSMC_BCR 

http://s2/mw690/002Hl1Cyzy6NXMJ7Cdba1&690

      这是BCR控制寄存器的32位分配图。(寄存器都是32位,四个字节)注意其中第14位。

EXTMOD即固件库里stm32f2xx_fsmc.h结构体中一个使能控制成员变量。

uint32_t FSMC_ExtendedMode//是否使能扩展模式,即读写时序参数不同,相互独立。

其他位都与stm32f2xx_fsmc.h结构体中成员变量相对应,不在赘言。

(2)FSMC_BTR 

http://s5/mw690/002Hl1Cyzy6NXNE8460e4&690

      这是BCR控制寄存器的32位分配图。注意其中第28~29位。手册如下解释:

Bits 29:28 ACCMOD: Access mode(访问模式选择:A\B\C\D)
Specifies the asynchronous access modes as shown in the timing diagrams. These bits are
taken into account only when the EXTMOD bit in the FSMC_BCRx register is 1.
00: access mode A
01: access mode B
10: access mode C
11: access mode D

      这里的模式选择要与外部存储器相匹配。数据地址复用与否,读写控制信号的功用,信号变化。

后面会分别讲一下这四个访问模式。

(3)FSMC_BWTR 

http://s7/mw690/002Hl1Cyzy6NXOc465o06&690
      仔细对照BTR与BWTR不难发现,呵!除了字体顺时针旋转90°,这俩寄存器怎么一样啊~

没错,这两个寄存器都是包含与FSMC读写时序相关的位。

ADDSET: Address setup phase duration.地址建立时间

ADDHLD: Address-hold phase duration.地址保持时间

DATAST: Data-phase duration.数据建立时间

 

    2.怎么解读模式时序图及寄存器配置

  那么,初步了解这三个特殊寄存器后,问题就来了,他们什么关系,怎么选择一个模式来配置FSMC?下面举一个例子来分析一下。比如模式C。手册里如下描述:

http://s11/mw690/002Hl1Cyzy6NXRL3B8u1a&690
http://s11/mw690/002Hl1Cyzy6NXRL6Rom1a&690
http://s7/mw690/002Hl1Cyzy6NXROuQbc56&690

http://s9/mw690/002Hl1Cyzy6NXS27gcUc8&690


      读写时序图与相应的三个寄存器设置都完整的展现出来。

      BCR中设置MUXEN为0,可见数据地址线不复用。手册里给的模式A\B\C\D都是不复用地址数据线的时序。这并非标示这四种模式下都不能复用,而是如果想复用,这一位MUXEN置1即可。只是限于页面篇幅,手册没有给出而已。同时EXTMOD为0X01。这个值非常关键。因为EXTMOD决定了后面的寄存器是仅有一个BTR,还是有BTR与BWTR同时起作用。

      在例程中EXTMOD=0X01 读写时序参数独立,可以分别配置。

      这是什么概念呢?就是读的时序参数由BTR寄存器里32位来设置。包括“读”时的数据建立时间,地址建立时间,地址保持时间(此模式没有)。而写的时序参数另用BWTR寄存器来设置。包括“写”时的数据建立时间,地址建立时间,地址保持时间(此模式没有)。图中很明显会发现读写时的数据建立时间是不相同的。更甚之,读和写的模式不一样也是允许的。如下面英语所表达。

● When extended mode is set, it is possible to mix modes A, B, C and D in read and write(it is for instance possible to read in mode A and write in mode B).)

 

      倘若 EXTMOD=0X00 读写时序参数是相同的。

      这是什么概念呢?就是读和写的时序参数都是由BTR寄存器里32位来设置。包括“读写”时的数据建立时间,地址建立时间,地址保持时间(此模式没有)。而BWTR寄存器被忽略、搁置、空闲。

       一般情况下,我们对读写的时序配置没有那么严格。不必用两个寄存器,仅仅采用EXTMOD=0X00   BTR有效就足以满足要求。(哎~人家设计的严谨,我们用不到啊,害苦了初学的小小白)

3.不同模式的PK

http://s13/mw690/002Hl1Cyzy6NXTTqsKEbc&690
上图是我在学习过程中查找到的,我个人认为构架是有了,但表述不够完整。如果你仔细把手册细读,会发现时序图的微妙差别。我自己总结如下:

http://s2/mw690/002Hl1Cyzy6NXWXcHBv11&690


 

注:

1.除去倒数2张图片,其他都是来自STM参考手册RM0033。

2.文章是学习笔记,有些内容是自己揣摩记下的,应该不可避免的会有错误。以后会进行完善修改。

3.与大家共享,有则改之。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有