摘要:JEDEC标准(JESD216)Serial Flash Discoverable Parameter (SFDP)[1]是在串行Flash中建立一个可供查询的描述串行Flash功能的参数表。文章主要介绍了这个串行Flash功能参数表的结构、功能和作用,并给出其在系统设计中的具体应用。
关键词:JEDEC JESD216;SFDP;串行Flash;SPI

1 串行Flash的基本介绍
    串行Flash是一种SPI接口的NOR Flash,属于非挥发性储存器件,主要被用来存放系统的启动程序。其特点是体积小、引脚少、接口简单和易于扩展。主要封装为8个引脚,有片选、数据输入、写保护、接地、数据输出、时钟、暂停和电压引脚,见图1。常用一进一出的串行数据传输方式,省去了并行Flash的大量数据线、地址线和控制线。有些串行Flash在封装引脚数目不变的情况下,通过引脚的功能复用,还可以支持四进四出的数据传输方式,极大地提升数据的输出速率。目前最大频率可以支持到104MHz以上,整体数据传输速率已经超过了一般并行Flash的数据传输速率。在主芯片功能和端口的支持下,串行Flash在一些系统应用中可替代并行Flash,不但可以减少系统印制电路板体积,而且可以减少系统的布线,增强了系统整体的电磁兼容性。从整体系统方案的角度来看,相比支持并行Flash的主芯片而言,只支持串行Flash的主芯片可以在存储端口的引脚数量上有大幅的减少,不仅有利于主芯片面积的缩减,对于整体的方案报价也非常有利。因此,串行Flash受到越来越多开发和设计人员的接受和青睐,也被广泛地应用在计算机、消费类电子、无线通讯、车载和工控等众多领域。

2 JESD216 SFDP标准产生的背景
    随着串行Flash市场不断的扩张,串行Flash的指令、功能和特性也日趋增多,而且各个厂商在串行Flash器件上的功能和特性也无法完全一致。例如,在扇区擦除功能上,支持4kB、32kB、64kB的擦除操作虽然分别有相应的指令,但是不同厂商的器件还是会存在一些指令和功能的差异。为了准确地完成系统的兼容性测试或者是考虑到容量的升级,开发和设计人员需要详细阅读每一份串行Flash的产品规范,了解引脚的分布和定义是否一致,操作所需要用到的功能指令是否完全兼容,从而对底层设备驱动软件做相应的增补和修改,甚至改动到硬件,这无疑给项目的设计、维护和更新带来一些不便。因此,串行Flash器件迫切需要一个统一规范的功能参数表,可以让开发和设计人员明确地读取到每一个所使用串行Flash的功能和参数特性。JEDEC的新规范JESD216 SFDP就是在这样的一个市场环境下孕育而生的。

3 JESD216 SFDP的功能和结构
    SFDP是JEDEC发布的JESD216的一个新标准,目前的版本号是V1.0,用来规范存放串行Flash相关信息的功能参数表。其实现方式是在串行Flash中内置一个可供查询的统一规范的功能参数表,不占用串行Flash正常的容量大小。目前SFDP支持的读取频率为50MHz以下,即尽管串行Flash可以支持更高的系统频率,但是系统主芯片只需要在50MHz及以下的频率下即可顺利读取到SFDP的资料。为进一步便于系统的灵活读取,该标准还支持串行Flash的一进一出、两进两和四进四出的数据传输方式。SFDP的数据在出厂时就被固定住,无法修改,只供查询使用。其作用有些类似于并行Flash中的公共闪存接口Common Flash Interface(CFI)的功能。开发和设计人员在通过0x5A的操作指令来读取查询SFDP时,可以将串行Flash包含其厂商识别码等一系列的功能和参数信息快速地呈现出来。这样不仅增加了器件本身的辨识度,提升了主芯片与串行Flash的沟通运作效能和便利性,也让开发和设计人员可以快速了解到不同串行Flash之间的特性和差异,从而在底层设备驱动软件上做出相应的调整,完成设计和兼容测试。
    在SFDP的功能和结构上,SFDP标准强制规范必须要有SFDP标题档、1st参数标题档和对应的JEDEC Flash基本参数表格,结构见图2。SFDP标题档主要设置了供开发和设计人员查询确认的签名信息0X50444653(“S”、“F”、“D”、“P”的ASCII码),在读取确认签名信息正确后,方可认为该串行Flash器件支持SFDP标准。在JEDEC Flash基本参数表格里面规范和定义了该器件的一些最基本的读取方式、指令内容、扇区大小和芯片容量等信息。其次,各家串行Flash厂商可以按照SFDP的规范依次增加2nd、3rd参数标题档以及对应的参数表来扩充一些参数特性,增强器件本体的参数识别度,结构见图3。在厂商标题档中,主要规范和预留了串行Flash的厂商ID识别号、SFDP版本号、参数长度以及存放参数表格的地址指针。其参数表格中则可以让厂商根据可以放入其器件的一些其它的参数信息如电压、特殊指令和功能支持的状况,也可以在读取中明确地显示出来,但不是SFDP标准所强制规范的,属于可选项。

4 在系统软件上读取SFDP的操作流程及代码
    系统对于串行Flash的任何操作,在软件上必须按照相应的指令和规范的流程才可以正确地操作串行Flash。读取SFDP也必须按照规定的操作流程。开启片选选通芯片——>发送0x5A的读取SFDP的指令——>发送3byte的地址——>发送1byte的空周期——>在输出脚上读取SFDP数据——>关闭片选结束操作。 通过一进一出方式读取SFDP数据的时序如图4所示。

SFDP参数表的部分软件读取代码参考如下:

JEDEC标准(JESD216)S FDP对串行Flash在系统中的应用的更多相关文章

  1. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列

    第24章     SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  2. 第24章 QSPI—读写串行FLASH

    本章参考资料:<STM32F76xxx参考手册>.<STM32F76xxx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<S ...

  3. 第25章 串行FLASH文件系统FatFs—零死角玩转STM32-F429系列

    第25章     串行FLASH文件系统FatFs 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.c ...

  4. 玩转X-CTR100 l STM32F4 l W25Q64 SPI串行FLASH存储

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载FLA ...

  5. SPI—读写串行 FLASH

    SPI协议简介SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线.它被广泛地使用在 ADC. LCD ...

  6. 串行FLASH文件系统FatFs---转自野火论坛

    为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper:这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这 ...

  7. 第25章 串行FLASH文件系统FatFs

    25.1  文件系统 即使读者可能不了解文件系统,读者也一定对“文件”这个概念十分熟悉.数据在PC上是以文件的形式储存在磁盘中的,这些数据的形式一般为ASCII码或二进制形式.在上一章我们已经写好了Q ...

  8. 原创:应用串行NOR闪存提升内存处理能力

    在嵌入式系统中,NOR闪存一直以来仍然是较受青睐的非易失性内存,NOR器件的低延时特性可以接受代码执行和数据存储在一个单一的产品.虽然NAND记忆体已成为许多高密度应用的首选解决方案,但NOR仍然是低 ...

  9. 痞子衡嵌入式:导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是导致串行NOR Flash在i.MXRT下无法正常下载/启动的常见因素之SFDP. i.MXRT系列MCU发布已两年多了,基于i.MXR ...

随机推荐

  1. POJ 1523 网络连通

    题目大意: 给你一个网络组,每台机子与其他机子的关系,让你找到所有的割点,如果没有割点,输出无 这道题目就是最直接的求割点问题,我在这里用的是邻接矩阵来存储机子之间的关系 割点问题的求解需要对深度优先 ...

  2. bzoj 2818 GCD 数论 欧拉函数

    bzoj[2818]Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Samp ...

  3. 矩形周长(codevs 2149)

    题目描述 Description N(N<5000) 张矩形的海报,照片和其他同样形状的图片贴在墙上.它们的边都是垂直的或水平的.每个矩形可以部分或者全部覆盖其他矩形.所有的矩形组成的集合的轮廓 ...

  4. Java设计模式之(工厂模式)

    工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...

  5. navicat 无法连接到腾讯云Mysql

    远程连接进入服务器 远程连接进入服务器之后,输入命令mysql -u root -p 之后输入mysql密码,进入mysql 命令环境 设置开启远程登录 GRANT ALL PRIVILEGES ON ...

  6. openstack swift middleware开发

    首先MiddleWare核心代码,这段代码卸载swift的源代码目录下,~/swift/swift/common/middleware下新建deletionpreventing.py: import ...

  7. Meteor结构

    Meteor提供了一些特殊的文件夹,可以帮助开发人员构建他们的应用程序. client 如果创建客户端文件夹,这个文件夹里面的一切都将在客户端上运行.在这里,可以将您的HTML,CSS和客户端Java ...

  8. 【APUE】线程与信号

    每个线程都有自己的信号屏蔽字,但是信号的处理是进程中所有线程共享的.进程中的信号是递送到单个线程的. 线程中pthread_sigmask函数类似与进程的sigprocmask函数,可以用来阻塞信号. ...

  9. 【Scrapy】Selectors

    Constructing selectors For convenience,response objects exposes a selector on .selector attribute,it ...

  10. Linux 编译安装Boost

    linux平台下要编译安装除gcc和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装: #yum install gcc ...