Hadoop 自承式光缆 mysql安装 Jetson Nano RabbitMQ SQLMAP 分布式服务 jquery laravel video yii Notify.js erp系统源码 jquery查找子元素 大数据驾驶舱 hadoop创建文件夹 html好看的字体 mysql汉化包 css选择器有几种 jquery获取兄弟节点 linux启动mysql命令 python学习入门 java学习教程 java怎么配置 java的集合 java如何获取当前时间 linux硬盘 javascript源代码 p2pover 黑帮之地修改器 redis入门指南 银头鲑鱼 视频解析软件 模拟按键 惠普战99 苏拉玛起义的任务线 微信公众号点餐系统 经典雅黑 js获取子元素 0x000008e
当前位置: 首页 > 学习教程  > 编程语言

Stm32F103R6之FSMC

2020/9/19 13:46:57 文章标签:

目录

概述

功能描述

支持的存储器和操作

外部设备地址映像

NOR和PSRAM地址映像

NAND和PC卡地址映像

NOR闪存和PSRAM控制器


概述

灵活的静态存储器控制器(FSMC)能够将片外设备挂在单片机的地址和数据总线上,使单片机可以像访问内存一样访问片外设备。

功能描述

FSMC模块能够与同步或异步存储器和16位PC存储器卡接口,它的主要作用是:

● 将AHB传输信号转换到适当的外部设备协议。

● 满足访问外部设备的时序要求。

所有的外部存储器共享控制器输出的地址、数据和控制信号,每个外部设备可以通过一个唯一的片选信号加以区分。FSMC在任一时刻只访问一个外部设备。

FSMC具有下列主要功能:

● 具有静态存储器接口的器件包括:

─ 静态随机存储器(SRAM)

─ 只读存储器(ROM)

─ NOR闪存

─ PSRAM(4个存储器块)

● 两个NAND闪存块,支持硬件ECC并可检测多达8K字节数据

● 16位的PC卡兼容设备

● 支持对同步器件的成组(Burst)访问模式,如NOR闪存和PSRAM

● 8或16位数据总线

● 每一个存储器块都有独立的片选控制

● 每一个存储器块都可以独立配置

● 时序可编程以支持各种不同的器件:

─ 等待周期可编程(多达15个周期)

─ 总线恢复周期可编程(多达15个周期)

─ 输出使能和写使能延迟可编程(多达15周期)

─ 独立的读写时序和协议,可支持宽范围的存储器和时序

● PSRAM和SRAM器件使用的写使能和字节选择输出。

● 将32位的AHB访问请求,转换到连续的16位或8位的,对外部16位或8位器件的访问。

● 具有16个字,每个字32位宽的写入FIFO,允许在写入较慢存储器时释放AHB进行其它操作。在开始一次新的FSMC操作前,FIFO要先被清空。

通常在系统复位或上电时,应该设置好所有定义外部存储器类型和特性的FSMC寄存器,并保持它们的内容不变;当然,也可以在任何时候改变这些设置。

Stm32F103R6之FSMC

图 1FSMC框图

支持的存储器和操作

请求AHB操作的数据宽度可以是8位、16位或32位,而外部设备则是固定的数据宽度,此时需要保障实现数据传输的一致性。

因此,FSMC执行下述操作规则:

● 如果AHB操作的数据宽度与存储器数据宽度相同:无数据传输一致性的问题。

● 如果AHB操作的数据宽度大于存储器的数据宽度:此时FSMC将AHB操作分割成几个连续的较小数据宽度的存储器操作,以适应外部设备的数据宽度。

● 如果AHB操作的数据宽度小于存储器的数据宽度: 依据外部设备的类型,异步的数据传输有可能不一致。

─ 与具有字节选择功能的存储器(SRAM、ROM、PSRAM等)进行异步传输时,FSMC执行读写操作并通过它的字节通道BL[1:0]访问正确的数据。

─ 与不具有字节选择功能的存储器(NOR和16位NAND等)进行异步传输时,即需要对16位宽的闪存存储器进行字节访问;显然不能对存储器进行字节模式访问(只允许16位的数据传输),因此:

a. 不允许进行写操作

b. 可以进行读操作(控制器读出完整的16位存储器数据,只使用需要的字节)。

外部设备地址映像

从FSMC的角度看,可以把外部存储器划分为固定大小为256M字节的四个存储块,见下图。

● 存储块1用于访问最多4个NOR闪存或PSRAM存储设备。这个存储区被划分为4个NOR/PSRAM区并有4个专用的片选。

● 存储块2和3用于访问NAND闪存设备,每个存储块连接一个NAND闪存。

● 存储块4用于访问PC卡设备 每一个存储块上的存储器类型是由用户在配置寄存器中定义的。

Stm32F103R6之FSMC

图 2FSMC存储块

NOR和PSRAM地址映像

HADDR[27:26](片选信号)位用于选择四个存储块之一:

Stm32F103R6之FSMC

图 3NOR/PSRAM存储块选择

(1) HADDR是需要转换到外部存储器的内部AHB地址线。 HADDR[25:0]包含外部存储器地址。HADDR是字节地址,而存储器访问不都是按字节访问,因此接到存储器的地址线依存储器的数据宽度有所不同,如下表:

Stm32F103R6之FSMC

图 4外部存储器地址

(1) 对于16位宽度的外部存储器,FSMC将在内部使用HADDR[25:1]产生外部存储器的地址FSMC_A[24:0]。不论外部存储器的宽度是多少(16位或8位),FSMC_A[0]始终应该连到外部存储器的地址线A[0]。

NOR闪存和PSRAM的非对齐访问支持

每个NOR闪存或PSRAM存储器块都可以配置成支持非对齐的数据访问。 在存储器一侧,依据访问的方式是异步或同步,需要考虑两种情况:

● 异步模式:这种情况下,只要每次访问都有准确的地址,完全支持非对齐的数据访问。

● 同步模式:这种情况下,FSMC只发出一次地址信号,然后成组的数据传输通过时钟CLK顺序进行。

某些NOR存储器支持线性的非对齐成组访问,固定数目的数据字可以从连续的以N为模的地址读取(典型的N为8或16,可以通过NOR闪存的配置寄存器设置)。此种情况下,可以把存储器的非对齐访问模式设置为与AHB相同的模式。

如果存储器的非对齐访问模式不能设置为与AHB相同的模式,应该通过FSMC配置寄存器的相应位禁止非对齐访问,并把非对齐的访问请求分开成两个连续的访问操作。

NANDPC卡地址映像

三个存储块可以用于NAND或PC卡的操作,每个存储块被划分为下述访问空间:

Stm32F103R6之FSMC

图 5存储器映像和时序寄存器

对于NAND闪存存储器,通用和属性空间又可以在低256K字节部分划分为3个区。

● 数据区(通用/属性空间的前64K字节区域)

● 命令区(通用/属性空间的第2个64K字节区域)

● 地址区(通用/属性空间的第2个128K字节区域)

Stm32F103R6之FSMC

图 6NAND存储块选择

应用软件使用这3个区访问NAND闪存存储器:

● 发送命令到NAND闪存存储器:软件只需对命令区的任意一个地址写入命令即可。

● 指定操作NAND闪存存储器的地址:软件只需对地址区的任意一个地址写入命令即可。因为一个NAND地址可以有4或5个字节(依实际的存储器容量而定),需要连续地执行对地址区的写才能输出完整的操作地址。

● 读写数据:软件只需对数据区的任意一个地址写入或读出数据即可。

因为NAND闪存存储器自动地累加其内部的操作地址,读写数据时没有必要变换数据区的地址,即不必对连续的地址区操作。

NOR闪存和PSRAM控制器

FSMC可以产生适当的信号时序,驱动下述类型的存储器:

● 异步SRAM和ROM ─ 8位 ─ 16位 ─ 32位

● PSRAM(Cellular RAM) ─ 异步模式 ─ 突发模式

● NOR闪存

─ 异步模式或突发模式

─ 复用模式或非复用模式 FSMC对每个存储块输出一个唯一的片选信号NE[4:1],所有其它的(地址、数据和控制)信号则是共享的。

在同步方式中,FSMC向选中的外部设备产生时钟(CLK),该时钟的频率是HCLK时钟的整除因子。每个存储块的大小固定为64M字节。 每个存储块都有专门的寄存器控制。 可编程的存储器参数包括访问时序(见下表)、是否支持非对齐数据存取和等待周期管理(只针对突发模式下访问PSRAM和NOR闪存)。

Stm32F103R6之FSMC

图 7可编程的NOR/PSRAM访问参数


本文链接: http://www.dtmao.cc/news_show_200067.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?