stm32的fsmc灵活静态存储器控制器.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32的FSMC灵活静态存储器控制器 FSMC(Flexihie Static Memory Controller)模块只适用于大容量产品。 FSMC模块能够与同步或异步存储器和16位PC存储器卡接口,主要将AHB传输信号转换到适当的外部设备协议,满足访问外部设备的时序要求。 存储器接口包括: ①SRAM静态随机存储器 ②ROM只读存储器 ③NOR闪存 ④PSRAM(4个存储块) ⑤两个NAND闪存块 ⑥16位PC卡 STM32之所以能够支持NOR FLASH和NAND FLASH两类访问方式完全不同的存储器扩展,是因为FSMC内部实际包括NOR FLASH和NAND / PC Card两个控制器,分别支持两种截然不同的存储器访问方式。在STM32内部,FSMC的一端通过内部高速总线AHB连接到内核Cortex-M3,另一端则是面向扩展器的外部总线。内核对外部存储器访问信号发送到AHB总线后,经FSMC转换为符合外部存储器通信规约的信号,送到外部存储器相应的引脚,实现数据交互。FSMC起着桥梁作用,既能进行信号类型的转换,又能进行信号宽度和时序的调整,屏蔽掉不同存储类型的差异,使之对内核而言没有区别。 FSMC模块框图如下: 存储块外设地址映射(具体说明请看数据手册,此处只用图表形式简单表示): 下表为NOR/PSRAM存储块选择: 三个存储块可用于NAND或PC: 对于NAND闪存,空间可在低256K字节部分划分为三个区: 时序参数: FSMC通过使用可编程的存储器时序参数寄存器,拓展了可选用的外部存储器的速度范围。FSMC的NOR FLASH控制器支持同步和异步突发两种访问方式。 选用同步突发访问方式时,FSMC将系统时钟HCLK分频后,发送给外部存储器作为同步时钟信号FSMC_CLK。此时需要设置的时间参数有两个:CLK的分频系数和访问中获得第1个数据所需要的等待延迟(DATLAT)。 选用异步突发访问方式时,FSMC主要设置3个时间参数:地址建立时间(ADDSET),数据建立时间(DATAST)和地址保持时间(ADDHLD)。 异步NOR FLASH时序模式2时间参数计算公式如下: 式中Twc和Trc为所选存储器芯片的写周期长度和读操作周期长度;Twp为所选存储器芯片的写信号持续长度。 为达到更好的控制效果,还应考虑FSMC自身延迟问题,使用校正公式: 式中TAVQV为所选存储器芯片访问过程中,从地址有效至数据有效的时间域;Tsu(Data_NE)为STM32特征参数,从数据有效到FSMC_NE失效时间域,Ttv(A_NE)为STM32特征参数,从FSMC_NE有效至地址有效的时间域。 关于FSMC的其它配置这里就不多说了,下面以TFT屏(ILI9325)的驱动举个例子。 TFT_RS —— PE2/A23 TFT_WR —— PD5/NWE TFT_RD —— PD4/NOE 数据线连接FSMC的数据接口,TFT屏背光使用PWM控制。 例程如下: #define TFT_Command((uint32_t)0 #define TFT_Data((uint32_t)0// FSMC_A23(16位)注意16位与8位的地址计算方式不一样 //8位地址 ——0//16位地址——0/*-------------------------------------------------------------------------------*/ void TFT_IO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_14 | GPIO_Pin_15// | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOD, GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin

您可能关注的文档

文档评论(0)

zhongshanmen001 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档