SPI EEPROM

  • 特点
  • 简介
  • 1 功能介绍
    • 1.1 操作原则
    • 1.2 读序列
    • 1.3 写序列
    • 1.4 写使能和写失能
    • 1.5 读状态寄存器指令
    • 1.6 写状态寄存器指令
    • 1.7 数据保护
    • 1.8 上电状态
    • 1.9 页擦除
    • 1.10 扇区擦除
    • 1.11 芯片擦除
    • 1.12 深度睡眠模式
    • 1.13 从深度睡眠中唤醒并读取电子签名

最近项目接触到SPI EEPROM这款存储器件,打算记录一下,下面内容大部分是数据手册的内容,其中夹杂着部分自己的理解,各位看官如在实际操作中发现不妥,请以英文手册为准。EEPROM一般都是小容量的存储设备,今天介绍的SPI接口的EEPROM,是美国微芯科技(MicroChip)的25系列产品,容量范围从1kbits到1Mbits不等,通常情况下用来保存一些程序参数。 产品列表

型号 容量(bits) 组织结构 VCC范围 最大速度(MHz) 页大小(Bytes) 温度范围 封装
25LC010A 1K 128X8 2.5-5.5V 10 16 I,E P,MS,SN,ST,MC,OT
25AA010A 1K 128X8 1.8-5.5V 10 16 I P,MS,SN,ST,MC,OT
25LC020A 2K 256X8 2.5-5.5V 10 16 I,E P,MS,SN,ST,MC,OT
25AA020A 2K 256X8 1.8-5.5V 10 16 I P,MS,SN,ST,MC,OT
25LC040A 4K 512X8 2.5-5.5V 10 16 I,E P,MS,SN,ST,MC,OT
25AA040A 4K 512X8 1.8-5.5V 10 16 I P,MS,SN,ST,MC,OT
25LC080A 8K 1024X8 2.5-5.5V 10 16 I,E P,MS,SN,ST
25AA080A 8K 1024X8 1.8-5.5V 10 16 I P,MS,SN,ST
25LC080B 8K 1024X8 2.5-5.5V 10 32 I,E P,MS,SN,ST
25LC160A 16K 2048X8 2.5-5.5V 10 16 I,E P,MS,SN,ST
25AA160A 16K 2048X8 1.8-5.5V 10 16 I P,MS,SN,ST
25LC160B 16K 2048X8 2.5-5.5V 10 32 I,E P,MS,SN,ST
25AA160B 16K 2048X8 1.8-5.5V 10 32 I P,MS,SN,ST
25LC320A 32K 4096X8 2.5-5.5V 10 32 I,E P,MS,SN,ST
25LC320A 32K 4096X8 1.8-5.5V 10 32 I P,MS,SN,ST
25LC640A 64K 8192X8 2.5-5.5V 10 32 I,E P,MS,SN,ST
25AA640A 64K 8192X8 1.8-5.5V 10 32 I P,MS,SN,ST
25LC128 128K 16384X8 2.5-5.5V 10 64 I,E P,SN,SM,ST,MF
25AA128 128K 16384X8 1.8-5.5V 10 64 I P,SN,SM,ST,MF
25LC256 256K 32768X8 2.5-5.5V 10 64 I,E P,SN,SM,ST,MF
25AA256 256K 32768X8 1.8-5.5V 10 64 I P,SN,SM,ST,MF
25LC512 512K 65536X8 2.5-5.5V 20 128 I,E P,SM,MF
25AA512 512K 65536X8 1.8-5.5V 20 128 I, P,SM,MF
25LC1024 1024K 131072 X8 2.5-5.5V 20 256 I,E P,SM,MF
25AA1024 1024K 131072 X8 1.8-5.5V 20 256 I P,SM,MF

特点

  • 最大时钟速度

    -10MHz(1K~256K)
    -20Mhz(512K~1M)
    
  • 以字节为单位的写操作和以页为单位的写操作

  • 低功耗的CMOS技术

    -典型的写操作电流:5mA
    -典型的读操作电流:5mA @10MHz7mA@20MHz
    
  • 典型的待机电流:1uA

  • 写周期时间:最长5ms

          最长6ms (25XX1024)

  • 自同步的擦除操作与写操作

  • 擦除功能(512K~1M)

    -页擦除:最长6ms
    -扇区擦除:最长15ms
    -芯片擦除:最长15ms
    
  • 内置写保护

    -上电/掉电数据保护电路
    -写使能锁存
    -写保护引脚
    
  • 块/扇区写保护

    -没保护,1/4保护,1/2保护或者全保护

  • 顺序读

  • 高可靠性

  • 数据保存期:>200年

    -ESD保护:>4000V
    -耐久性:> 1M次的擦除/写
    -8引脚和6引脚的标准封装
    
  • 支持的温度范围:

    -工业(I):-40°C至85°C
    -汽车(E):-40°C至125°C
    

引脚功能表

名称 功能
CS 芯片选择
SO 串行数据输出
WP 写保护
VSS
SI 串行数据输入
SCK 串行时钟输入
HOLD 控制输入
VCC 电源电压

简介

微芯科技公司支持与串行外围设备接口(SPI)兼容的串行总线体系结构,并且该系列低电压串行电可擦除EEROMs包含从1Kbits到1Mbits不同容量段。支持以字节和页为单位的功能操作,但高容量的512Kbit和1Mbit产品也支持扇区和芯片层次的功能操作,这两种功能操作通常与基于闪存的产品有关联。
        总线信号包括一根时钟输入(SCK)信号以及独立的数据输入(SI)和数据输出(SO)信号,可以通过片选(CS)输入信号来控制设备的访问。
        可以通过控制脚(HOLD)暂停对设备的访问,当设备处于暂停状态时,除了片选脚,所有输入脚上的传输都会被忽略,这让主机可以处理更高优先级的中断。
        该系列SPI产品提供标准的8脚PDIP和SOIC封装,也提供更多更先进的封装,比如8脚TSSOP,MSOP,2X3 DFN,5X6DFN封装和6脚的SOT-23封装,所有封装都进行无锡(哑光锡)处理,符合RoHS标准。

1 功能介绍

1.1 操作原则

25系列串行EEPROM被设计成可以直接连接串行外设接口(SPI),现今流行的微处理器都有该接口,微芯的PIC微处理器也有该接口。那些没有内置SPI接口的微处理器也可以通过使用分散的IO脚来模拟SPI协议达到正确写数据的目的。
        该系列的EEPROM内部都有一个8bit的指令寄存器。可以通过SI引脚访问器件,数据会在SCK的上升沿锁存,在整个操作过程中,CS脚必须拉低并且HOLD脚必须拉高。
        表2-1包含了一系列的可能的指令字节和操作格式,所有指令,地址,数据在传输过程中,都是先传输高有效位,后传输低有效位。
        CS拉低后,数据(SI)会在第一个SCK的上升沿采样,如果时钟线跟其它外设共用,(为避免受到干扰)用户可以控制HOLD输入生效,使EEPROM处于‘保持’模式,之后释放HOLD脚,将恢复到HOLD生效前的那个状态点。

表1-1 指令集
指令名称 指令格式 简介
所有容量段都有的指令
READ 0000 0011 从存储阵列的指定地址开始读取数据
WRITE 0000 0010 往存储阵列的指定地址开始写数据
WREN 0000 0110 设置写使能锁存位(使能写操作)
WRDI 0000 0100 复位写使能锁存位(失能写操作)
RDSR 0000 0101 读状态寄存器
WRSR 0000 0001 写状态寄存器
只有25XX512 和 25XX1024才有的指令
PE 0100 0010 页擦除--擦除存储阵列中的一页
SE 1101 1000 扇区擦除--擦除存储阵列中的一个扇区
CE 1100 0111 芯片擦除--擦除存储阵列中的所有扇区
RDID 1010 1011 从深度睡眠中恢复和读取电子签名
DPD 1011 1001 进入深度睡眠模式

1.2 读序列

先将CS脚拉低选中器件,然后将8bit的READ指令发送给EEPROM,指令后面跟着地址,正确发送READ指令和地址后,对应地址上的数据将通过SO脚输出,如果继续提供时钟脉冲,下一个地址的数据将会顺序输出。每输出1byte数据,器件内部的地址指针都会自动递增,当达到最高地址后,地址计数器将恢复成00000h,这将使器件无限循环读。CS拉高后,读操作将终止。

表1-2 读/写序列寻址
容量 寻址所需bit数 最大地址 页大小
1K 7 007F 16 Bytes
2K 8 00FF 16 Bytes
4K 9 01FF 16 Bytes
8K 10 03FF 16或32 Bytes
16K 11 07FF 16或32 Bytes
32K 12 0FFF 32 Bytes
64K 13 1FFF 32 Bytes
128K 14 3FFF 64 Bytes
256K 15 7FFF 64 Bytes
512K 16 FFFF 128 Bytes
1024K 167 1FFFF 256 Bytes
注意:版本A - 16Bytes
   版本B - 32Bytes
8bit或者9bit寻址的读时序

16bit寻址的读时序

24bit寻址的读时序

1.3 写序列

在尝试往EEPROM中写数据之前,必须发送WREN指令设置写使能锁存位。CS拉低,然后随着时钟输出正确的指令给EEPROM,在8 bits指令传输完成后,必须拉高CS才能置上写使能锁存位。如果在发送WREN指令后,CS没有拉高,然后立即发起写操作,数据将不会写入存储阵列,因为此时写使能锁存位并没有被正确置上。
一个写序列包含一个自动的同步擦除周期,所以在写命令之前并不需要擦除。
一旦写使能锁存位置上了,用户可以继续拉低,然后发送WRITE指令,地址以及要写的数据。需要的话,可以在一个写周期内将1页数据写进设备,不同容量段,1页的大小从16Bytes到256Bytes不等,唯一的限制就是,所有的数据要写进同一个页。前面的表格展示了页大小的信息
对于25XX512和25XX1024,无论是否要写满整个页,都会对整个页进行刷新,所以这类器件的耐久性取决于每个页。

注意:不管实际上有多少数量的数据要写,页写操作仅限于在一个物理页内写数据。物理页的边界起始于页缓存大小(页大小)的整数倍位置,结束于页大小整数倍-1的位置。如果一个页写命令尝试越界写数据,那么数据会环绕到当前页的起始位置(将覆盖之前写下的数据),而不会像预期那样写入到下一个物理页。所以对应用软件来说,避免页写操作的越界就显得尤为重要

为了确保数据确实写进存储阵列,当第n byte数据的最低有效位(D0)传送完毕,CS必须将拉高。如果在任意节点拉高CS,写操作将不能完成。当写操作正在进行时,可以读状态寄存器来检查WIP和WEL位。处于写周期时,不可能从存储整列中进行读数据。当写周期结束,写使能锁存位将复位。

8bit或者9bit寻址的写时序

16bit寻址的写时序

24bit寻址的写时序

8bit或者9bit寻址的页写时序

16bit寻址的页写时序

24bit寻址的页写时序

1.4 写使能和写失能

EEPROM包含一个写使能锁存位。在任何写操作内部执行完成前,该锁存位都必须置上。WREN指令可以置上该锁存位,WRDI指令可以复位该锁存位。
以下列出的是写使能锁存位被复位的情况:

  • 上电
  • WRDI指令成功执行
  • WRSR指令成功执行
  • WRITE指令成功执行
  • WP脚被拉低时(仅限于1K,2K,4K)
    25XX512和25XX1024才有的指令也有复位锁存位的情况:
  • PE指令成功执行
  • SE指令成功执行
  • CE指令成功执行
写使能指令时序

写失能指令时序

1.5 读状态寄存器指令

读状态寄存器指令(RDSR)提供访问状态寄存器的方式,可以在任意时点读取状态寄存器,即使处于写周期也一样可以,下表展示了状态寄存器每一位的情况。

状态寄存器
7 6 5 4 3 2 1 0
可写可读 -- -- -- 可写可读 可写可读 只读 只读
WPEN X X X BP1 BP0 WEL WIP
注意:WPEN位在25XX010A,25XX020A,以及25XX040A上无效

WIP位用来表明当前是否正处于写操作,当该位为1时,表明当前正处于写操作当中,当该位为0时,当前没有写操作正在执行,该位是只读位。

WEL位展示了当前写使能锁存位的状态,该位是只读位,当该位置1时,允许将数据写入存储阵列,当该位为0时,禁止写数据。不管状态寄存器上的WPEN位是什么情况,都可以通过WREN指令和WRDI指令来更改WEL位的值。
        BP0和BP1位表明当前哪些块处于写保护状态。用户可以通过发送WRSR指令来设置这些位,这些位是非易失性的。

读状态寄存器时序

1.6 写状态寄存器指令

写状态寄存器指令允许用户写状态寄存器中的非易失位,用户可以通过写入适当的值使存储阵列处于四种不同水平的写保护状态之一,存储阵列被分割成四个部分,用户可以令一部分,两部分或者四部分处于写保护,也可以选择全部都没有写保护。表1-4展示了各部分的控制情况。对于8Kbits以及更高容量的EEPROM,WPEN位是非易失性位,该位可作为WP引脚的使能位,WP脚与WPEN位组合形成可编程的硬件写保护功能,当WP为低并且WPEN为1时,硬件写保护生效,当WP为高或者WPEN为0时,硬件写保护失效。当芯片处于硬件写保护时,状态寄存器上的非易失性位无法修改。

阵列保护
BP1 BP0 被保护的阵列 没被保护的阵列
0 0 没有 全部(扇区0,1,2,3)
0 1 高1/4地址(扇区3) 低3/4地址(扇区0,1,2)
1 0 高1/2地址(扇区2,3) 低1/2地址(扇区0,1)
0 0 全部(扇区0,1,2,3) 没有
阵列保护地址
容量 1/4 (扇区 3 1/2 (扇区2,3 所有扇区
1K 60h-7Fh 40h-7Fh 00h-7Fh
2K C0h-FFh 80h-FFh 00h-FFh
4K 180h-1FFh 100h-1FFh 000h-1FFh
8K 300h-3FFh 200h-3FFh 000h-3FFh
16K 600h-7FFh 400h-7FFh 000h-7FFh
32K C00h-FFFh 800h-FFFh 000h-FFFh
64K 1800h-1FFFh 1000h-1FFFh 0000h-1FFFh
128K 3000h-3FFFh 2000h-3FFFh 0000h-3FFFh
256K 6000h-7FFFh 4000h-7FFFh 0000h-7FFFh
512K C000h-FFFFh 8000h-FFFFh 0000h-FFFFh
1024K 18000h-1FFFFh 10000h-1FFFFh 00000h-1FFFFh
写状态寄存器时序

1.7 数据保护

已实施以下措施防止意外写入存储阵列:

  • 上电复位写使能锁存位;
  • 设置写使能锁存位必须发送WREN指令;
  • 在字节写,页写,写状态寄存器之后,写使能锁存位都会复位;
  • 在给内部写周期适当的时钟周期后,CS必须拉高。
  • 内部写周期期间,访问存储阵列将被忽略
写保护功能表
WEL (SR bit 1) WPEN (SR bit 7)* WP (pin 3) 保护块 非保护块 状态寄存器
1 X X 保护 保护 保护
1 0 X 保护 可写 可写
1 1 0 保护 可写 保护
1 1 1 保护 可写 可写
X = 不需要考虑
* = WPEN 在24XX010A/020A/040A上无效

1.8 上电状态

以下情况EEPROM将开机:

  • 器件处于低功耗待机模式(CS=1);
  • 写使能锁存位被复位;
  • SO处于高阻态;
  • CS由高拉低进入活跃态。

1.9 页擦除

页擦除是闪存特有的功能,现在只有512kbit和1024kbit容量的EEPROM才有这个功能,该功能是对给定的页的所有比特进行擦除(所有比特都变为1),在执行页擦除之前必须发送WREN指令(拉低CS,然后开始随时钟输出指令,当8bit指令传输完毕,拉高CS使写使能锁存位被置上),要执行页擦除功能,首先要拉低CS,然后发送指令码,指令码后面跟着2字节或者3字节的地址,页内的任何一个地址都是有效的擦除地址。
        当地址的最后1bit发送出去后,必须将CS拉高,否则不会执行擦除命令,一旦CS拉高,自同步的页擦除就开始了,可以通过读取状态寄存器的WIP位来判断擦除是否完成。
        如果页擦除命令所给的地址是受保护的块(BP1,BP0决定)的地址,则命令序列将终止并且不会有擦除发生。

24bit寻址页擦除序列

16bit寻址页擦除序列

1.10 扇区擦除

扇区擦除是闪存特有的功能,现在只有512kbit和1024kbit容量的EEPROM才有这个功能,该功能是对给定的扇区的所有比特进行擦除(所有比特都变为1),在执行扇区擦除之前必须发送WREN指令(拉低CS,然后开始随时钟输出指令,当8bit指令传输完毕,拉高CS使写使能锁存位被置上),要执行扇区擦除功能,首先要拉低CS,然后发送指令码,指令码后面跟着2字节或者3字节的地址,扇区内的任何一个地址都是有效的擦除地址。
        当地址的最后1bit发送出去后,必须将CS拉高,否则不会执行擦除命令,一旦CS拉高,自同步的扇区擦除就开始了,可以通过读取状态寄存器的WIP位来判断擦除是否完成。
        如果扇区擦除命令所给的地址是受保护的块(BP1,BP0决定)的地址,则命令序列将终止并且不会有擦除发生。

24bit寻址扇区擦除序列

16bit寻址扇区擦除序列

1.11 芯片擦除

芯片擦除命令会擦除所有的比特(所有比特都变为1),执行芯片擦除之前必须发送WREN指令(拉低CS,然后开始随时钟输出指令,当8bit指令传输完毕,拉高CS使写使能锁存位被置上),要执行芯片擦除功能,先拉低CS,然后发送指令码,当指令的最后1bit发送出去后,必须将CS拉高,否则不会执行擦除命令,一旦CS拉高,自同步的芯片擦除就开始了,可以通过读取状态寄存器的WIP位来判断擦除是否完成。
        如果有设置保护块(BP1,BO0决定),那么芯片擦除命令将被器件忽略。

芯片擦除序列

1.12 深度睡眠模式

深度睡眠模式是25XX512和25XX1024才有的功能,可以使设备进入低功耗状态。当设备处于低功耗模式时,不会响应任何的读写命令,所以可以把这当成是额外的软件写保护功能。
要执行深度睡眠功能,先拉低CS,然后发送指令码,再拉高CS。如果8bit指令码发送完后没有拉高CS,则设备不会进入深度睡眠模式,一旦拉高CS,在经过一段延时(TDP)后,会稳定在低功耗状态下。
        在深度睡眠模式下,除了RDID指令,其它任何指令都会被忽略,RDID指令会将设备从深度睡眠模式下唤醒,并且会输出电子签名(ID),一段时间(TREL)后,设备将进入待机模式。
        设备掉电后,会自动从深度睡眠模式中释放,再重新上电后,将直接进入待机模式。

深度睡眠序列

1.13 从深度睡眠中唤醒并读取电子签名

在深度睡眠模式下,除了RDID指令,其它任何指令都会被忽略,该指令在设备没有进入深度睡眠模式下也可以使用,可以在没有擦除,写数据,写状态寄存器命令正在执行的情况下读取电子签名。要执行RDID功能,先拉低CS,然后发送指令码,指令码后面跟着24bits的虚拟地址(25XX1024)或者16bits的虚拟地址(25XX512),当最后1bit虚拟地址发送完后,SO引脚将会输出8bit的电子签名,当电子签名的最后1bit传送出来后,可以拉高CS结束此次命令序列,之后设备将进入待机状态,等待下一次的片选及指令。如果在电子签名输出完成后还继续提供时钟脉冲,则将继续输出签名,直到拉高CS结束命令序列。
        如果在发送RDID指令后,不等设备输出电子签名就拉高CS,依旧能保证设备从深度睡眠模式中唤醒过来,然而要进入待机模式还需要等待TREL时间。

24bit寻址RDID指令时序

16bit寻址RDID指令时序

仅从深度睡眠唤醒序列

SPI EEPROM相关推荐

  1. 华大半导体HC32F4A0笔记(四),SPI读写国产128kB EEPROM 上海贝岭BL25CMIA

    一.配置SPI引脚 本例中SPI只连接了一个设备,即国产128kB EEPROM上海贝岭BL25CMIA. NSS脚采用软件控制. 其它引脚通过查看手册可知其连接的SPI外设为SPI1. /* SPI ...

  2. CC2642研究之控制SPI Nand FLASH和EEPROM

    接上篇博客,测试蓝牙例程通过后,接下来实现利用CC2642控制板上的SPI接口NAND Flash和EEPROM. 软件:simplelink_cc26x2_sdk_2_30_00_34. 工具:Wi ...

  3. SPI专题(一) SPI简介

    1.SPI简介 SPI 全称是 serial peripheral interface ,串行外围设备接口.是 Motorola 首先在其MC68HCXX系列处理器上定义的. SPI 接口常用的场景, ...

  4. EEPROM,NOR Flash,NAND Flash,eMMC,UFS,SSD分别和主要参数及特性

    EEPROM.NOR Flash.NAND Flash.eMMC.UFS.SSD都是非易失性存储器,但它们在架构.存储容量.读写速度.功耗.价格等方面存在不同,具体如下: EEPROM:EEPROM( ...

  5. atmega8a如何烧写程序_如何让树莓派4上固件的debug日志输出到串口?

    第三季奔跑吧旗舰篇视频课程:arm64体系结构与编程2020年10月1号重磅上线笨叔带队,以练带学,几十个实验,等您来撸! 树莓派4上的FW 我们玩过树莓派的小伙伴都知道,树莓派4上有几个固件,我们是 ...

  6. void 型指针的高阶用法,你掌握了吗?

    [导读] 要比较灵活的使用C语言实现一些高层级的框架时,需要掌握一些进阶编程技巧,这篇来谈谈void指针的一些妙用.测试环境采用 IAR for ARM 8.40.1 推荐一首中文歌曲<< ...

  7. Autosar MCAL开发必知的“术语”+“缩写”概念

    如何使用该博文? ==>您可以将该篇博文当做"字典",遇到疑惑的Autosar"关键字",使用组合键Ctrl+F,快速查找该关键字. 推荐Autosar培 ...

  8. uboot readme

    前面是 Uboot 的发展,下载地址,如何获得帮助,以及版本说明 Directory Hierarchy: 目录层次 ==================== - board          Boa ...

  9. 汽车电子学习笔记—AutoSAR之基础软件层(BSW)

    汽车电子学习笔记-AutoSAR之基础软件层(BSW) - 1.概述 如之前autosar概述笔记中说明,BSW按照层级结构可以分为服务层.ECU抽象层.硬件抽象层(MCAL)和复杂驱动层(CDD). ...

最新文章

  1. Web前端工程师工作前 VS 工作后
  2. Web.sitemap网站导航
  3. [WPF]使用Fody提高效率
  4. day15-ajax和jquery
  5. CCNA笔记:Access Lists
  6. Python标准库zlib提供的数据压缩功能
  7. DiskGenius(硬盘修复分区工具)5绿色专业版
  8. FFmpeg解码H264视频裸流(直接可用)
  9. selenium 模拟火狐浏览器
  10. SMOTE算法原理及程序python(新手版)
  11. 【吴恩达deeplearning.ai】Course 5 - 2.10 词嵌入除偏
  12. CSS位置偏移反爬虫绕过
  13. 五招防止QQ密码被盗
  14. global value supply chain白皮书
  15. macmini性能测试软件,Mac mini
  16. Neo4j之导入CSV大文件 periodic commit
  17. Mac使用系列之软件安装权限
  18. 华为云照片的爬虫程序更新(python3.6)
  19. 比较TTL集成电路与CMOS集成电路
  20. Hive SQL复杂场景实现(1) —— 连续发单天数

热门文章

  1. Alexnet中的LRN
  2. element-plus table表格换行变色以及部分el自带样式的修改
  3. frida.InvalidOperationError: script has been destroyed
  4. OpenSIP3.2系列之二(用opensips-cli创建数据库)
  5. JS企业中征码证件校验正则
  6. java过滤图片_Filter过滤器过滤了图片,求放行!
  7. matlab中libsvm的svmtrain函数用法
  8. 无人机光流定位系列——(一)原理剖析
  9. USTC信院集群使用
  10. win10开机wifi图标消失 但是wifi可用