AN2784
应用笔记
使用大容量STM32F10xxx的FSMC
驱动外部的存储器
前言
这个应用笔记说明了如何使用大容量的STM32F10xxx的FSMC(灵活的静态存储器控制器)驱动
一组外部的存储器。文中首先简要地介绍了STM32F10xxx的FSMC控制器,然后给出了包含典
型的FSMC配置的存储器接口实例,以及时序计算和硬件连接方法。
本应用笔记的实例是基于STM3210E-EVAL评估版上的存储器,这是大容量STM32F10xxx的评
估版。使用的存储器是一个16位的异步NOR闪存存储器,一个8位的NAND闪存存储器和一个16
位的异步SRAM存储器。
文中实例用到的固件库函数和不同存储器的驱动程序,可以在STMicroelectronics的网站上下
载:www.st/mcu。
译注:
STM3210E-EVAL评估板演示程序说明文档下载地址:
www.st/stonline/products/literature/um/14703.pdf
STM3210E-EVAL评估板演示程序包下载地址:
www.st/stonline/products/support/micro/files/um0549.zip
STM3210E-EVAL评估板线路图下载地址:
www.st/stonline/products/support/micro/files/um0488.zip
本译文的英文版下载地址为:
www.st/stonline/products/literature/anp/14779.pdf
目录使用大容量STM32F10xxx的FSMC驱动外部的存储器目录
1STM32F10xxx灵活的静态存储器控制器简介3
2与非总线复用模式的异步16位NOR闪存接口5
2.1FSMC配置5
2.1.1与NOR闪存存储器接口的典型应用6
2.2时序计算7
2.3硬件连接8
2.4从外部NOR闪存存储器执行代码9
3与非总线复用的16位SRAM接口 11
3.1FSMC配置11
3.1.1使用FSMC与SRAM存储器接口的典型应用 12
3.2时序计算12
3.3硬件连接13
3.4使用外部SRAM作为数据存储器 14 4与8位的NAND闪存存储器接口 15
4.1FSMC配置15
4.1.1使用FSMC与NAND存储器接口的典型应用 16
4.2时序计算17
4.3硬件连接18
4.4错误校验码计算 19
4.4.1错误校验码(ECC)计算概述 19
4.4.2错误检测 20 5100脚的STM32F10xxx的FSMC配置 22
5.1FSMC与NAND存储器接口 22
下载翻译器英文翻中文5.2FSMC与NOR存储器接口 22
1 STM32F10xxx灵活的静态存储器控制器简介
灵活的静态存储器控制器(FSMC)是内置于大容量STM32F10xxx的外部存储器控制器。使用这个控制器,STM3210xxx微控制器可以与许多存储器连接,包括SRAM、NOR闪存和NAND闪存等。
FSMC包含2类控制器:
● 一个NOR闪存/SRAM控制器,可以与NOR闪存、SRAM和PSRAM存储器接口。
● 一个NAND闪存/PC卡控制器,可以与NAND闪存、PC卡、CF卡和CF+存储器接口。
控制器产生所有驱动这些存储器的信号时序:
● 16个数据线,用于连接8位或16位存储器
● 26个地址线,最多可连接64M字节的存储器(译注:这里不包括片选线)
● 5个独立的片选信号线
● 一组适合不同类型存储器的控制信号线:
─控制读/写操作
─与存储器通信,提供就绪/繁忙信号和中断信号
─与所用配置的PC卡接口: PC存储卡、PC I/O卡和真正的IDE接口
下面是FSMC的框图。
图1FSMC框图
从FSMC的角度看,外部存储器分为4个固定大小为256M字节的存储块,如图2所示。
● NOR闪存/SRAM控制器使用存储块1访问4个存储器设备,这个存储块被划分为4个区域,
具有4个专用的片选信号。
● NAND闪存/PC卡控制器使用存储块2和3访问NAND闪存设备。
● NAND闪存/PC卡控制器使用存储块4访问PC卡设备。
对于每个存储块,使用的存储器类型是用户通过配置寄存器定义的。
图2FSMC存储块
AN2867
与非总线复用模式的异步16位NOR闪存接口2 与非总线复用模式的异步16位NOR闪存接口
2.1 FSMC配置
控制一个NOR闪存存储器,需要FSMC提供下述功能:
● 选择合适的存储块映射NOR闪存存储器:共有4个独立的存储块可以用于与NOR闪存、
SRAM和PSRAM存储器接口,每个存储块都有一个专用的片选管脚。
● 使用或禁止地址/数据总线的复用功能。
● 选择所用的存储器类型:NOR闪存、SRAM或PSRAM。
● 定义外部存储器的数据总线宽度:8或16位。
● 使用或关闭同步NOR闪存存储器的突发访问模式。
● 配置等待信号的使用:开启或关闭,极性设置,时序配置。
● 使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。
因为NOR闪存/SRAM控制器可以支持异步和同步存储器,用户只须根据存储器的参数配置使用到的参数。
FSMC提供了一些可编程的参数,可以正确地与外部存储器接口。依存储器类型的不同,有些参数是不需要的。
当使用一个外部异步存储器时,用户必须按照存储器的数据手册给出的时序数据,计算和设置下列参数:
● ADDSET:地址建立时间
● ADDHOLD:地址保持时间
● DATAST:数据建立时间
● ACCMOD:访问模式
这个参数允许 FSMC可以灵活地访问多种异步的静态存储器。共有4种扩展模式允许以不同
的时序分别读写存储器。
在扩展模式下,FSMC_BTR用于配置读操作,FSMC_BWR用于配置写操作。(译注:如果
读时序与写时序相同,只须使用FSMC_BTR即可。)
如果使用了同步的存储器,用户必须计算和设置下述参数:
● CLKDIV:时钟分频系数
● DATLAT:数据延时
如果存储器支持的话,NOR闪存的读操作可以是同步的,而写操作仍然是异步的。
当对一个同步的NOR闪存编程时,存储器会自动地在同步与异步之间切换;因此,必须正确地设置所有的参数。
图3和图4示出了对于一个典型的NOR闪存不同的读写时序。