基于SM320F2812 SPI总线的扩展EEPROM设计
扫描二维码
随时随地手机看文章
0 引言
EEPROM(Electrically Erasable ProgrammableRead-Only Memory电可擦可编程只读存储器),是一种掉电后数据不丢失的存储芯片.在实际应用中,为了保持程序能够统一,又必须在程序中使用不同的参数,可以使用EEPROM进行扩展存储,将需要使用的数据存储在EEPROM中.当系统上电开始工作时,首先从EEPROM中读取参数,然后执行应用.本文采用了ATMEL公司的EEPROM存储器AT25010及TI公司推出的2000系列DSP TMS320F2812,很好地实现了数据的擦写和存储.AT25010采用了标准的SPI总线接口,所以与DSP经过简洁的设计连接后即可实现硬件连接.
1.AT25010介绍
AT25010是ATMEL公司推出的串行外设接口可擦写存储器,具有1KB(128*8)字节容量和掉电后数据保持功能,主要用于低电压和低功耗应用中.
2.TMS320F2812的SPI接口介绍
TMS320F2812是TI公司推出的32位的定点DSP,主要应用于控制领域.DSP主频可以通过软件进行设置,最高可以达到150MHz,内部集成了丰富的资源,可以大大简化外围电路的设计.
TMS320F2812的串行外设接口(SPI)是一个高速同步的串行输入/输出口,通信速率和通信数据长度都是可编程的,通常用于DSP处理器和外部外设以及其他处理器之间进行通信.
SPI接口有一个16级的接收和传输FIFO,可以减少工作时CPU的开销.
3.硬件设计
为了使D S P能够从E E P R O M中正确写入和读出数据, 需要对硬件进行正确的设置.
TMS320F2812处理器SPI模块有4个外部引脚,分别是SPI从输出/主输入引脚SPISOMI.SPI从输入/主输出引脚SPISIMO.SPI从发送使能引脚SPISTE.SPI串行时钟引脚SPICLK.AT25010与TMS320F2812的硬件接口电路如图1示所.图1中将DSP的SPISTE引脚与AT25010的片选信号引脚CS相连,使DSP能控制是否选通芯片;DSP的SPISOMI引脚与A T 2 5 0 1 0的数据输出引脚S O相连,接收AT25010发送的数据;DSP的SPISIMO引脚与AT25010的数据输出引脚SI相连,向AT25010发送数据;DSP的SPICLK引脚与AT25010的串行时钟引脚SCK相连,向AT25010提供时钟信号,使其能够与DSP保持同步.AT25010芯片写保护引脚WP(Write Protect)控制是否能够对其写入数据.当将此引脚置高电平时,DSP可以对AT25010芯片写入或者读取数据;当将此引脚置低电平时,DSP只能对AT25010芯片进行读取数据的操作,而不能对其写入数据.电路设计时将AT25010的WP引脚通过电阻拉高.
4.软件设计
在D S P开始对A T 2 5 0 1 0进行数据写入和读取之前, 按照设计要求进行初始化.对TMS320F2812的设置:首先关闭可屏蔽中断,设置中断屏蔽寄存器,开启系统SPI时钟使能,允许SPI串行外设接口正常工作.其次,DSP采用发送数据的方式对AT25010进行初始化,当DSP需要对AT25010写入数据时,向AT25010发送写入控制指令,并控制时钟同步信号和片选使能信号,向指定的地址写入数据;当DSP需要对AT25010读取数据时,向AT25010发送读取数据的控制指令,从指定地址中读取数据.
4.1 SPI初始化
初始化SPI模块,需要打开系统的SPI使能寄存器,设置SPI的波特率,配置SPI数据发送模块寄存器.数据接收模块寄存器.状态控制寄存器和FIFO寄存器,满足正常系统工作要求.
4.2 AT25010设置
当DSP需要读取AT25010指定地址的数据时,必须按照以下顺序.在片选引脚CS拉低选中AT25010芯片后,“读指令”必须首先发送至AT25010,然后发送地址数据.如果DSP读取数据完毕,片选引脚CS拉高为高电平.
当DSP当DSP需要向AT25010指定地址写入数据时,也必须按照一定的顺序执行.首先必须确认写保护引脚WP是高电平,然后确认被写入的地址没有被锁定.写入数据时,DSP首先向AT20501发送写使能信号WREN.然后才能执行写操作.在片选引脚CS拉低选中AT25010芯片后,8位的地址和8位的数据分别被DSP发送到AT25010芯片,对指定地址写入数据.对AT25010芯片设置后,可以进行页写入,可一次写入大量数据,节省系统资源.[!--empirenews.page--]
4.3 程序设计
读取数据的程序设计架构如下:
SpiaRegs.SPITXBUF=0×0300;//发送读取指令SpiaRegs.SPITXBUF=(Addr《8);//发送需要读取数据的地址位SpiaRegs.SPITXBUF=0×0000;//发送一位空指令val=SpiaRegs.SPIRXBUF;//读取指定地址的数据读取数据的程序设计架构如下:
SpiaRegs.SPITXBUF=0×0200;//发送写入指令SpiaRegs.SPITXBUF=(Addr《8);//发送需要写入数据的地址位SpiaRegs.SPITXBUF=(Data《8);//发送需要写入数据的数据SpiaRegs.SPITXBUF=0×0400;//WRDI5.数据写入和读取实验。
如图2 .
编写软件代码,进行DSP对AT25010写入和读取数据的实验.
由于AT25010是1KB的存储器,DSP最多只能向AT25010写入128个8位数据.在软件中设置一个9位的数组,分别赋值由0×11至0×99,地址使用0-8共9个地址位.DSP采用循环发送的方式,将数组中的数据发送到存储芯片中.
然后DSP进行读取操作,从存储芯片的地址位中读出数据,写入到另一个数组中并对读取和写入的数据进行比较,检验数据是否正确.结果如图3所示.
由图3可以看出,读取和写入的数据完全一致.对于使用数据量较大的系统,可以更换容量更大的存储器,使用文中的硬件设计和程序设计,同样可满足需求.
6.结语
本设计使用DSP芯片自带的SPI接口进行硬件设计,节省了设计时间,降低了电路设计的复杂度,实现了对系统掉电以后数据的存储,并可解决由于数据不同造成的程序一致性的问题.此设计满足了系统的要求,适用于各种需要掉电后保存数据的嵌入式系统.