原创 SPI-Flash是什么?使用注意事项及常见问题

2019-6-4 20:45 4790 16 5 分类: 采购与分销

一.概念:

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。 

文章评论3条评论)

登录后参与讨论

zhujun74_602010376 2019-6-17 17:40

SPI Nor Flash是固件的家,谢谢分享

是木科技 2019-6-6 11:08

总结的很好呀,收藏了,多谢。

curton 2019-6-5 20:50

学习
相关推荐阅读
用户3882244 2019-08-29 10:17
PCB生产中的过孔和背钻有哪些技术?
做硬件的朋友都知道,PCB过孔的设计其实很有讲究,今天为大家分享PCB中过孔和背钻的技术知识。一、高速PCB中的过孔设计在高速PCB设计中,往往需要采用多层PCB,而过孔是多层PCB 设计中的一个重要...
用户3882244 2019-08-22 18:45
高速PCB中的过孔设计,你真的懂吗?
在高速PCB设计中,往往需要采用多层PCB,而过孔是多层PCB 设计中的一个重要因素。PCB中的过孔主要由孔、孔周围的焊盘区、POWER 层隔离区三部分组成。接下来,我们来了解下高速PCB中过孔的问题...
用户3882244 2019-08-14 18:15
不外传的PCB布线绝招
PCB又被称为印刷电路板(PrintedCircuitBoard),它可以实现电子元器件间的线路连接和功能实现,也是电源电路设计中重要的组成部分。今天就将以本文来介绍PCB板布局布线的基本规则。一、元...
用户3882244 2019-08-08 09:30
PCB为什么发生甩铜?这3个原因给说全了
PCB的铜线脱落(也就是常说的甩铜),各PCB品牌都会推说是层压板的问题,要求其生产工厂承担不良损失。根据多年的客户投诉处理经验,PCB甩铜常见的原因有以下几种:一、PCB厂制程因素:1、铜箔蚀刻过度...
用户3882244 2019-08-01 15:39
CAM350转pdf的方法
点击File→Print→Print...下面说一下比较重要的几个选项,从图看到分了4个区:第一区域,Portrait是设为竖直打印;Landscape是设为横向打印;点击Plotter Setup按...
用户3882244 2019-07-26 09:35
防止PCB印制板翘曲的方法
一.为什么线路板要求十分平整  在自动化插装线上,印制板若不平整,会引起定位不准,元器件无法插装到板子的孔和表面贴装焊盘上,甚至会撞坏自动插装机。装上元器件的板子焊接后发生弯曲,元件脚很难剪平整齐。板...
我要评论
3
16
关闭 站长推荐上一条 /2 下一条