常用串行eeprom应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SPI总线

SPI总线(Serial Peripheral Interface串行外围设备接口总线)是三线式的串行总线,是由摩托罗拉公司所研发,使用三线进行数据传输,分别是SCK时钟引脚,SI数据输入引脚和SO数据输出引脚,另外还有CS片选引脚可以对同一总线上的芯片进行选通使用,SPI总线已被广泛使用在EEPROM、单片机和各种设备中。常用串行EEPROM中的25XX系列芯片就是使用兼容SPI总线结构,采用先进COMS技术,体积小,是一种理想的低功耗非易失性存储器,广泛使用在各种家电、通讯、交通或工业设备中,通常是用于保存设备或个人的相关设置数据。ATMEL公司生产的25系列的EEPROM存储容量从1K位到256K位。其它一些芯片也会用到SPI总线,如常用的CPU监控芯片X5043、X5045就带有512字节的SPI界面EEPROM,常用于单片机系统的看门狗电路,同时也可以提供小数据量的存储,给电路设计带来很多的方便。此文将用X5045为例讲述SPI的编程应用和X5045的一些其它功能。X5045由Xicor公司出品,电压范围有2.7V到5.5V和4.5V到5.5V二个版本,擦写次数可达一百万次,最高时钟频率可达3.3MHz。图一是X5045的PID封装实物图。

图1

图2

图二是X5045的引脚定义图。CS/WDI是片选和看门狗复位输入,当CS为高时SO引脚变为高阻态,这时可以允许其它器件共用SPI总线,同时芯片也处于休眠状态,当CS为低时芯片被选中,并从休眠状态中唤醒,可以进行读写操作。SO是串行数据输出,在读芯片时数据从此脚输出。WP是写保护引脚,当WP为低时芯片写保护,不能对芯片写操作,但其它功能不受影响。Vss是电源地。SI是串行数据输入,接收来自控制器的数据和地址。SCK是串行时钟输入,RESET是复位输出,Vcc是电源。在25芯片中还有一个HOLD引脚,此引脚的功能是保持输入脚,ATMEL公司生产25芯片的HOLD引脚是低电平有效。不用此功能时,HOLD引脚要保持高电平。在芯片正在串行传输时,将HOLD拉为低电平,可以暂停进一步的传送,具体方法是SCK变低后,将HOLD也拉低,不然在下一个SCK 变低前不能暂停传送,要恢复串行传送,必须在SCK为低电平时将HOLD拉高。芯片处于暂停时,SI,SO,SCK脚为高阻状态,任何时刻只要HOLD被拉低时,SO都会处于高阻状态。

限于文章的篇幅,下面内容只着重介绍X5045芯片的SPI总线对EEPROM单元的编程应用。在X5040芯片中有6个指令,它和25系列芯片的指令是兼容的,也就是说在25系列芯片中使用时基本上是不需要改变的,具体见表一。

指令指令格式说明

WREN 0000 0110 写入允许

WRDI 0000 0100 写入禁止

RSDR 0000 0101 读状态寄存器

WRSR 0000 0001 写状态寄存器,用于操作区块写保护标识和看门狗标识

READ 0000 A8011 读数据

WRITE 0000 A8010 写数据

注:A8用于数据地址的第9位。

表一指令集

写入允许和禁止

X5045芯片内部有一个写入使能寄存器,在需要向芯片写入数据时,需要先用WREN 指令使片内写入使能寄存器先置位,写入数据后可以用WRDI指令使寄存器复位到禁止状态。当上电、WRSR指令执行、WRITE指令执行、WP拉低也会使写入使能寄存器复位到禁止状态。图三是WREN/WRDI指令的操作时序图。首先要把CS拉低,输入数据,向SCK 输入时钟信号,数据在时钟的上升沿有效,时钟上升后至少数据至少保持30ns。数据是串行的,所以在每个时钟周期的上升沿发送一个位。在操作这两个指令时,SO是处于高阻状态的。

图3写入使能时序

读写状态寄存器

X5045片内有一个状态寄存器,用于指于芯片的状态和设置,可以读写,芯片出厂时状态寄存器值为30H。具体每位的功能请看表2。WIP写入保护位,是只读位,指示芯片是否正忙于写入操作。当WIP为"1"时,说明写入正在进行,为"0"时表示没有进行写入。在编程时,写入数据操作后,可以查询WIP位,当WIP为0后才进行下一次的写入操作,这样可以避免写入出错。WEL写入使能状态位,是只读位。WEL位的状态由WREN和WRDI指令确定,WREN成功执行后WEL为"1"指示允许写入数据,WRDI指令成功执行后WEL为"0"指示禁止写入数据。在编程时可以先查询WEL位的状态,如为0时则要执行WREN后才可以进行写入操作。BL0、BL1设置当前保护的区块地址,是可读写位,这两个位的设置和区块地址的关系如表3,区块的内容被保护后,就只能读出而不能写入了。25系列芯片中

不同型号的芯片容量不一样,BL设置所保护的范围也不一样。WD1、WD0看门狗设置位是X5045/43特有的设置位,是可以读写位,在25系列芯片中这两个位是保留位,在X5045中有看门狗功能,这两个位就用于设置MCU喂狗的时间,表4是看门狗位的设置时间。状态寄存器的第6和第7位是保留位。读状态寄存器时,发送完RSDR指令后,SO由高阻态转为输出数据,从数据位的高位开始。写状态寄存器,发送完WSDR指令后,再发一个字节的状态数据就可以了,其中只读位可以是"1"也可以是"0",它们不会被WSDR指令所更改。图5、图6是读写状态寄存器的时序图。

表2状态寄存器定义

表3BL设置位

表4看门狗设置位

图4读状态寄存器时序

图5写状态寄存器时序

读数据

图6是读数据时的时序,先拉低CS选中芯片,先要把需读取的地址的第9位加到指令字节的第4个字节中,发送完指令字节就发送地址字节的前8位,这时SO就会由高阻态转为输出数据。每当一个字节的数据传送完毕后,芯片内部的地址指针自动加1,指向下一个数据地址,这时如仍有时钟脉冲时,数据会被继续输出,CS脚拉高后输出才会终止。当最高位地址的数据被读出后,地址指针指向00H。

相关文档
最新文档