SPI-Flash是什么?使用注意事项及常见问题
一.概念:
SPI:serial peripheral interface
串行接口设备,spi flash 就是通过串行的接口进行操作的flash存储设备
flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash!
spi flash 读写较慢,次数有限制,一般用于不经常更改的存储。
早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。
二、SPI FLASH读写介绍
对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。
其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。
掌握以上方法,就可以轻松操作SPI flash芯片了,当然,对时序这种底层的操作,还需要不断学习和积累,不论是用FPGA还是MCU,最终都是为了产生时序信号,只要静下来认真理解了它,一切问题就迎刃而解了。
三.注意事项
1.不同的SPI FLASH芯片可能会提供的擦除方式:扇区擦除(4KBytes),半块擦除(32KBytes),块擦除(64KBytes),片擦除。
2.不同的SPI FLASH芯片可能会提供的编程方式(也就是写数据):页编程(256Bytes),扇区编程(4KBytes)。
3.SPI FLASH如果擦除过,在往里面写0xFF这样的数据意义不大,因为它的特性就是擦除后数据就是0xFF。
4.写入flash时,只能把数据(bit)从1该为0。
5.传统的EEPROM的特点就是可以随机访问和修改任何一个字节,可以往每个bit中写入0或1。而写入flash时,只能把数据(bit)从1该为0。但是传统的EEPROM容量因成本的缘故收到限制,绝少有超过有512K的。
6.Nor Flash容量相对小,成本高,基本没坏块,数据线和地址线分开,可以实现随机寻址,读取任何一个字节,擦除任然要按块来擦。NAND FLASH容量大,成本低,坏块经常出现,但可以标记坏块,使软件跳过,数据线和地址线复用,按块擦除按页读取。
四、项目实操中的问题
项目中需要用到SPI flash,在使用这个4MB 的SPI flash中出了三个问题让印象深刻,特记录下来以作提醒
问题1:我们知道SPI flash也分主从模式,一般master都是有MCU等器件担当的,而slave有SPI器件担任,笔者的这个小系统同样如此。
并且MCU是自带有SPI controler,接线方式依然是四线解法,SCK,CS,DO,DI,在看手册的过程因为自己的不注意,看到描述是“user can
decide the SPICS configuration in the master mode,if P_IO_Ctrl[10] set 1, the IOA[12] as GPIO function, if P_IO_Ctrl[10] set 0, the IOA[12] as SPICS hardware function” 我当时没有好好体会这句话的意思,简单的认为我在使用SPI flash之前就k肯定需要把P_IO_Ctrl[10]设置为 0, 其实这是错误的认识。
因为现在是通过MCU对slave SPI器件操作,首先肯定是需要MCU端来选中SPI器件,从master角度来讲,只需要一个GPIO信号线接到slave的CS端,同时输出低电平就相当了选中了这个slave了,之所以如此说法是因为这是从slave角度来说的,相当于MCU现在也作为一个slave,另一个MCU控制这个slave,则这时候SPI 初始化时就需要把 P_IO_Ctrl[10] set 0
问题2:需要一个烧录器向SPI flash中烧写内容,用的是西立特公司的superPro,但烧录步骤错误了,忘记了在编程之前必须要erase,
了解了一下,好像是和nor flash一样的介质,擦除会把所有bit置1,在编程的时候根据需要只可以把相应位置0.
问题3:在使用MCU上一个SPI 控制器接口接SPI flash时,没有交叉连接,即MCU 的DI应该接SPI 的DO,MCU 的DO应该接SPI 的DI。
闪存芯片NOR Flash、NAND Flash傻傻分不清楚 ICMAX帮你搞定
通过前天的文章介绍,我们知道eMMC 是 Flash Memory 的一类,eMMC的内部组成是NAND flash+主控IC,那什么是Flash Memory、NOR Flash、NAND Flash,宏旺半导体就和大家好好捋一捋它们几者之间的关系。
Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。另外,绝大部分的 U 盘、SDCard 等移动存储设备也都是使用 Flash Memory 作为存储介质。
1. Flash Memory 的主要特性
与传统的硬盘存储器相比,Flash Memory 具有质量轻、能耗低、体积小、抗震能力强等的优点,但也有不少局限性,主要如下:
需要先擦除再写入
Flash Memory 写入数据时有一定的限制,它只能将当前为 1 的比特改写为 0,而无法将已经为 0 的比特改写为 1,只有在擦除的操作中,才能把整块的比特改写为 1。
块擦除次数有限
Flash Memory 的每个数据块都有擦除次数的限制(十万到百万次不等),擦写超过一定次数后,该数据块将无法可靠存储数据,成为坏块。
为了最大化的延长 Flash Memory 的寿命,在软件上需要做擦写均衡(Wear Leveling),通过分散写入、动态映射等手段均衡使用各个数据块。同时,软件还需要进行坏块管理(Bad Block Management,BBM),标识坏块,不让坏块参与数据存储。(注:除了擦写导致的坏块外,Flash Memory 在生产过程也会产生坏块,即固有坏块。)
读写干扰
由于硬件实现上的物理特性,Flash Memory 在进行读写操作时,有可能会导致邻近的其他比特发生位翻转,导致数据异常,这种异常可以通过重新擦除来恢复,Flash Memory 应用中通常会使用 ECC 等算法进行错误检测和数据修正。
电荷泄漏
存储在 Flash Memory 存储单元的电荷,如果长期没有使用,会发生电荷泄漏,导致数据错误,不过这个时间比较长,一般十年左右,此种异常是非永久性的,重新擦除可以恢复。
2. NOR Flash 和 NAND Flash
根据硬件上存储原理的不同,Flash Memory 主要可以分为 NOR Flash 和 NAND Flash 两类。 主要的差异如下所示:
· NAND Flash 读取速度与 NOR Flash 相近,根据接口的不同有所差异;
· NAND Flash 的写入速度比 NOR Flash 快很多;
· NAND Flash 的擦除速度比 NOR Flash 快很多;
· NAND Flash 最大擦次数比 NOR Flash 多;
· NOR Flash 支持片上执行,可以在上面直接运行代码;
· NOR Flash 软件驱动比 NAND Flash 简单;
· NOR Flash 可以随机按字节读取数据,NAND Flash 需要按块进行读取。
· 大容量下 NAND Flash 比 NOR Flash 成本要低很多,体积也更小;
(注:NOR Flash 和 NAND Flash 的擦除都是按块块进行的,执行一个擦除或者写入操作时,NOR Flash 大约需要 5s,而 NAND Flash 通常不超过 4ms。)
2.1 NOR Flash
NOR Flash 根据与 CPU 端接口的不同,可以分为 Parallel NOR Flash 和 Serial NOR Flash 两类。
Parallel NOR Flash 可以接入到 Host 的 SRAM/DRAM Controller 上,所存储的内容可以直接映射到 CPU 地址空间,不需要拷贝到 RAM 中即可被 CPU 访问,因而支持片上执行。Serial NOR Flash 的成本比 Parallel NOR Flash 低,主要通过 SPI 接口与 Host 连接。
图片: Parallel NOR Flash 与 Serial NOR Flash
鉴于 NOR Flash 擦写速度慢,成本高等特性,NOR Flash 主要应用于小容量、内容更新少的场景,例如 PC 主板 BIOS、路由器系统存储等。
2.2 NAND Flash
NAND Flash 需要通过专门的 NFI(NAND Flash Interface)与 Host 端进行通信,如下图所示:
图片:NAND Flash Interface
NAND Flash 根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。
NAND Flash 的一个存储单元内部,是通过不同的电压等级,来表示其所存储的信息的。在 SLC 中,存储单元的电压被分为两个等级,分别表示 0 和 1 两个状态,即 1 个比特。在 MLC 中,存储单元的电压则被分为 4 个等级,分别表示 00 01 10 11 四个状态,即 2 个比特位。同理,在 TLC 中,存储单元的电压被分为 8 个等级,存储 3 个比特信息。
图片: SLC、MLC 与 TLC
NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。下图 中,给出了特定工艺和技术水平下的成本和寿命数据。
相比于 NOR Flash,NAND Flash 写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash Memory 都属于 NAND Flash,PC 中的固态硬盘中也是使用 NAND Flash。
3. Raw Flash 和 Managed Flash
由于 Flash Memory 存在按块擦写、擦写次数的限制、读写干扰、电荷泄露等的局限,为了最大程度的发挥 Flash Memory 的价值,通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。
在具体实现中,根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类。
图片: Raw Flash 和 Managed Flash
Raw Flash
在此类应用中,在 Host 端通常有专门的 FTL 或者 Flash 文件系统来实现坏块管理、擦写均衡等的功能。Host 端的软件复杂度较高,但是整体方案的成本较低,常用于价格敏感的嵌入式产品中。通常我们所说的 NOR Flash 和 NAND Flash 都属于这类型。
Managed Flash
Managed Flash 在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。相比于直接将 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,对 Host 提供标准化的接口,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 Flash 进行特殊的处理。eMMC、SD Card、UFS、U 盘等产品是属于 Managed Flash 这一类。
看完这篇文章,相信对Flash memory都会有一个全面的了解,无论是其原理,还是NOR Flash 和 NAND Flash、Raw Flash 和 Managed Flash 之间的异同,欢迎关注宏旺半导体,会持续带来存储领域更专业的文章。
相关问答
spi 串行 flash 和 spi 串行闪存是一个东西吗?spi串行flash和spi串行闪存不完全是一个东西。SPI是指一种通信接口。SPIFlash是一种使用SPI通信的Flash,即,可能指NOR也可能是NAND。但现在大部分情况默认下...
boss芯片对应的哪个芯片?目前电脑主板上使用的bios芯片采用SPINorFlash存储器芯片。SPIFlash(即SPINorFlash)是NorFlash的一种,NORFlash是一种非易失闪存技术,是I...
目前在主流主板上的BIOS芯片通常为?目前电脑主板上使用的bios芯片采用SPINorFlash存储器芯片。SPIFlash(即SPINorFlash)是NorFlash的一种,NORFlash是一种非易失闪存技术,是I...
experience搭配of/in/with,有什么区别?分别各自的用法是什么...[回答]先说说这个单词experience[ik'spiəriəns],不如系统的讲一下它的用法:它有两种词性n.经验;经历;体验;如果是经验,是不可数名词;经历很多次则可以...
韩国疫情,你觉得会对国产手机以及存储市场产生多大影响?芯科讯为您解答韩国疫情,你觉得会对国产手机以及存储市场产生多大影响?这次的新冠病毒影响的不仅仅只有中国,很多国家也受到了许多波折,韩国是一个典型。...
mcimx6d6avt10ae支持4g闪存吗?MCIMX6D6AVT10AE是i.MX6Dual应用处理器,支持4GBeMMC闪存。它集成了多个硬件加速器和接口,包括SDIO、eMMC和SPINORFlash等。您可以在设计中选择适合您...
MT6260MA参数?以下是MT6260MA的主要参数:CPU:ARM7EJ-S内核,主频为260MHz。存储器:集成32MB的NORFlash和8MB的PSRAM。通信接口:支持UART、USB、SPI、I2C等...
sc3080s芯片静态参数?能的要求。5.工作电压:2.5V-3.6V;6.工作温度:-40℃~85℃。此外,SC3080S还具有良好的EMC性能,支持多种安全功能,如看门狗、复位保护、安全启动等,可以满足...