Menu Close

SPI接口的EEPROM的原理与使用

E2PROM一般有两种两接口,分别为I2C接口 和SPI接口。由于SPI为3线制接口,输入、输出分离,读写简单,总线速度快,因此大容量的串行EEPROM多采用SPI接口的串行EEPROM。本节内容以Microchip的AT25040B 为例进行介绍,其它的SPI接口的串行EEPROM其结构和用法都是类似的,在使用时注意读一下使用手册和注意事项即可。

  1. 芯片的管脚定义与封装结构

封装:如图1所示有4种封装,硬件工程师和PCB layout需要注意正确选型和使用,封装的基本知识请参照”硬件设计与PCB Layout”相关内容。

%title插图%num

图1     SPI接口EEPROM(AT25010B)

  • 管脚定义:

#WP : #WP为写保护管脚。当该管脚为低时,整个芯片处于写保护状态。#HOLD一般和#CS 配合使用,可以在读写期间隔离串行输入、输出。在#HOLD为低电平期间,SDO为高阻状态,时钟信号与SDI都被忽略。多数设计电路中#HOLD脚直接接高电平。

表1

管脚(Pin Name) function 功能 备注
#CS Chip Select 片选 低电平有效
SCK Serial Data Clock 串行时钟
SI Serial Data input 串行数据输入
SO Serial Data Output 串行数据输出
GND Ground
#WP Write Protect 写保护 低电平有效
#HOLD Suspends Serial Input and Output 输入悬浮,输出高阻 输出高阻

2. SPI接口EEPROM的特点:

(1)速度快:相比较I2C接口,SPI的速度一般在5M左右,有的可以支持20M。

(2)SI/SO输入、输出分离:在写入的同时可以查看输出,读写操作简单。

(3)在使用时需注意SPI 模式(Mode),一般在存储器的操作中采用Mode0 或Mode3

Mode0 与Model3的区别如图2所示,当设置为Mode0时,在#CS拉高时SCK保持低电平,而Mode3对应的SCK为高电平。

%title插图%num

图2    SPI读写模式

  • SPI 接口EEPROM内部结构框图

如图3所示,SI,#CS ,#WP , SCK 等信号译码,进行数据的寻址与锁存。

%title插图%num

图3  SPI接口EEPROM内部功能框图

 

 

4. SPI接口EEPROM硬件扩展

图3-19 显示了如何进行SPI EEPROM的多片扩展使用。Master一般是MCU,DSP或FPGA,SS0-3可以是专用的接口,也可以是GPIO,只要每次只有一位为低电平就可以正确选择对应的Slave芯片。

%title插图%num

图4 SPI接口EEPROM扩展

5. SPI EEPROM的读写命令:

  • 操作命令:

SPI EEPROM 操作命令总计6条,分别为写使能锁存,复位写使能,读状态寄存器,写状态寄存器,读数据,写数据;如要进行写操作,则首先确保写使能正确执行。一般情况下,当#CS有低到高转变后会复位写使能,因此一般在写操作前一般会先进行写使能操作,之后跟写操作。表2中X为无关项,可以为0也可以为1。A表示高位地址。

表2

命令Instruction

name

命令格式Instruction

format

操作

operation

命令描述
WREN 0000X110 Write enable Set

write enable latch

写使能锁存
WRDI 0000X100 Write disable instruction

Reset write enable latch

复位写使能
RDSR 0000X101 Read status Register 读状态寄存器
WRSR 0000X001 Write status register 写状态寄存器
READ 0000A011 Read data

from memory array

读数据A表示AT25040的第八位地址
WRITE 0000A010 Write data to

memory array

写数据A表示AT25040的第八位地址为0或1
  • 状态寄存器

状态寄存器的格式如表3

表3

%title插图%num

  • 状态寄存器内容解释,

状态寄存器内容详细解释见表4

表4

位(Bit) 定义(Definition)
Bit0 (#RDY) Bit0=”0” (#RDY) indicate the device is ready Bit0=”0” (#RDY) 指示设备已经准备就绪,可以继续各种操作
Bit0 = “1” indicates the write cycle is in progress. Bit0 = “1”指示正在处理内部编程过程。
Bit1 (WEN) Bit1 = “0” indicates the device is not write enabled Bit1 = “0” 指示器件没有处在写使能状态
Bit 1 = “1” indicates the device is write enabled. Bit1 = “1”指示器件已处在写使能状态
Bit2(BP0) See table 5 见表5
Bit3(BP1) See table 6 见表5
Bits 4–7 are “0”s when device is not in an internal write cycle.
Bits 0–7 are “1”s during an internal write cycle.
  • 写保护控制

写保护由BP1,BP0组合的值进行选择,该部分的写保护与#WP不同,是软件可控的写保护,详细内容见表5。

表5

%title插图%num

6. 读写操作时序图:

  • 数据时钟同步图,如图5所示

%title插图%num

图5 数据时钟同步图

  • 写使能 , 如图6

%title插图%num

图6 写使能时序图

  • 写使能复位,如图7

%title插图%num

图7 写使能复位

  • 读状态寄存器

读状态寄存器,在写命令阶段命令的位(Bits )与主设备上升沿对齐,在数据读取阶段,数据位的输出与时钟的下降沿对齐,因此主设备捕获该数据时应与时钟的上升沿对齐,如图8所示。

%title插图%num

图8  读状态寄存器

  • 写状态寄存器

状态寄存器的内容,紧跟操作命令,中间没有间断。都是从高位到低位,如图9。

%title插图%num

图9 写状态寄存器时序

  • 读操作

从图10可以看出,在读操作的数据阶段,从设备数据在时钟的下降沿输出,主设备在该数据时捕获时应该与时钟上升沿对齐。对于容量的存储器,主要高位地址的位置。

%title插图%num

图10 读操作时序图

  • 写操作

在串行移位时,高位(MSB)在前,低位(LSB)在后。

%title插图%num

图11 写数据操作

  • #HOLD时序图

在#CS为低电平时,如果#HOLD由高到低变化,输入SI被忽略,SO为高阻输出。主要用途是临时终端读写过程,当需要恢复时可以将#HOLD拉高,可以继续被中断的过程。在没有硬核支持的MCU操作时,会非常使用。

%title插图%num

图12 #HOLD 时序控制

7. 编程步骤及注意事项

    • 读操作

      • 写读命令–>读地址(SI),在数据下降沿准备数据,在上升沿写入。串行化时高位在前,低位在后。
      • 读数据(SO),主设备上升沿数据捕获数据,高位在前低位在后,串行左移。
    • 写操作

      • 写使能置位,
      • 写操作,写命令–>写地址(SI),串行化时高位在前,低位在后。
      • 写数据(SI),高位在前低位在后。
    • 编程

      在写数据结束后,当#CS由低到高启动编程(烧录),大约持续时间为5毫秒。也可以利用读取状态寄存器的结果进行识别。

    • 编程时钟

最高可支持20Mhz

8. 相关芯片

相关芯片有AT25080B,AT251600B,AT25320B,AT25640B等,管脚兼容,容量以2的幂次增长,请自行阅读相关资料,确定编程注意事项。

SPI EEPROM AT25040B芯片资料

 

Posted in FPGA, 存储器, 教材与教案, 文章, 资料区

发表评论

相关链接