微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于DSP和X5165芯片的非易失性数据存储设计

基于DSP和X5165芯片的非易失性数据存储设计

时间:01-02 来源:EDN 点击:
数字信号处理器(DSP)的应用日趋广泛,而重要数据的非易失性保存问题常常是DSP应用中不可缺少的一部分。目前,非易失性的数据保存方法多采用EEPROM(电可擦可编程只读存储器)芯片。本文介绍的X5165芯片,可以较好地完成非易失性数据的保存问题。

在某型号交流伺服系统中,要求能够随时对各种参数设置进行非易失性保存。考虑到具有串行外设接口(Serial Peripheral InteRFace,SPI)的芯片使用简单,占用PCB板面积小等优点,故,采用了XICOR公司生产的16kbit SPI EEPROM芯片来存储重要数据。

1 TMS320LF2407A的串行外设接口简介

TMS320LF2407A是TI公司开发生产的16位定点DSP。TMS320LF2407A采用CMOS工艺制造,工作频率为40MHz,指令周期为25ns。其片内集成了丰富的资源,支持在线编程,非常便于开发设计,且价格低廉,已经进入了传统单片机所占据的领域。

TMS320LF2407A器件,其片内资源包括了4个引脚的串行外设模块。SPI是一个高速、同步串行I/O口,它允许长度可编程的位移入或者移出。通常,SPI用于DSP处理器和其它芯片之间的通信。它允许与带SPI接口的各种类型的芯片相连。SPI的主/从操作也支持多处理器的通信。

TMS320LF2407A的SPI接口有以下特点:

(1)4个外部引脚:SPISOMI(SPI从动输出/主动输入引脚),SPISIMO(SPI从动输入/主动输出引脚),SPISTE(SPI从动发送使能引脚),SPICLK(SPI串行时钟引脚)。

(2)发送和接收操作可通过中断或查询方法来完成。

(3)可编程波特率,当频率为40MHz时,波特率可达10Mbps。

(4)数据字长:1~16个数据位。

(5)4种时钟方案(由时钟极性和时钟相位控制),如图1所示。四种不同的时钟方式如下:

·无延时的下降沿:串行外设接口在SPICLK信号下降沿发送数据,在SPICLK信号上升沿接收数据;

·有延时的下降沿:串行外设接口在SPICLK信号下降沿之前的半个周期时发送数据,在SPICLK信号下降沿接收数据;

·无延时的上升沿:串行外设接口在SPICLK信号上升沿发送数据,在SPICLK信号下降沿接收数据;

·有延时的上升沿:串行外设接口在SPICLK信号上升沿之前的半个周期时发送数据,在SPICLK信号上升沿接收数据。


(6) 同时接收和发送操作。

2 硬件连接电路

X5165的主要特点如下:(1)可编程的看门狗定时器;(2)工作电压管理,并产生复位信号;(3)SPI接口,波特率可达2Mbps;(4)数据块锁定功能和片内偶然性的写保护功能等。

TMS320LF2407A能与多片不同种类的带SPI接口的芯片相连。本文给出了该芯片与X5165的硬件连接,如图2所示。通过SPISIMO引脚发送数据,SPISOMI引脚接收数据,SPICLK引脚发送时钟信号。两个IO引脚IOPB4、IOPB5用来控制(写保护)和片选信号。

3 X5165的工作原理

X5165包含了一个8位的指令寄存器。SI引脚上输入的数据在SCK上升沿被锁存,片内的数据在SCK下降沿输出到SO引脚上。所有的指令、地址和数据都是先传输最高位,指令、数据为8位,地址为16位。时钟SCK允许操作过程中停止并在其后恢复。根据图1所示,应该选用"无延时的上升沿"这一时钟方式,且数据字长为8位。X5165的指令集如表1所示。


X5165包括一个8位状态寄存器,格式如表2所示。


表2中,WIP位是指出非易失性写操作是否忙,只读位,为1,写操作正在进行,为0,无写操作。WEL是写使能锁存状态位,它可以用WREN指令置位,用WRDI指令复位。WPEN与引脚组合,实现保护存储阵列和状态寄存器位WPEN、BL1、BL0、WD1、WD0,是非易失性位,可用WRSR指令对WPEN位编程。其组合如表3所示。

 
BL1、BL0是存储器块保护位,为非易失性位。其组合可通过WRSR指令编程,可以保护存储器阵列范围,如表4所示。


选定保护的块,用户只能读不能写。

WD1、WD0是看门狗定时器位,为非易失性位,可用WRSR指令进行编程。

在读状态寄存器时,先将片选信号拉到低电平,然后通过SPI接口发送数据,先发送RDSR指令,接着提供8个SCK脉冲,就可以将寄存器的内容读回到TMS320LF2407A中。
在写状态寄存器时,参考表3,可知,必须先用WREN指令将WEL位置位。由于本文提供的电路能控制引脚,故,直接将该引脚电平拉为高电平,就可以对状态寄存器进行写操作。在写状态寄存器时,先将片选信号拉到低电平,然后发送数据,先发送WRSR指令,然后发送8位待写入的内容。注意,状态寄存器的只读位不受影响。

在读存储阵列时,先将片选信号拉到低电平,然后通过SPI接口发送数据,先发送READ指令,接着发送16位地址,选定的存储单元中的数据在SCK下降沿读回TMS320LF2407A中。每个数据被送出后,芯片内的地址计数器自动加1,继续提供SCK脉冲,可读出下一个存储单元的数据。当地址计数器达到$07FFH时,自动翻转到$0000H单元。读数据完成后,将片选信号拉到高电平。

在写操作进行之前,参考表3,可知必须置位"WEL"。然后,需要将非保护块设置为可读写方式。根据图2表示的连接,可知,只需要将引脚电平拉高,就可以进行写操作。当然也可以通过对WPEN位进行编程实现。在写存储阵列时,先将片选信号拉到低电平,接着通过SPI接口发送数据,先发送WRITE指令,然后发送16位地址,接着发送8位的数据。每个数据被送出后,芯片内的地址计数器自动加1,继续提供SCK脉冲,可继续将数据写入下一个存储单元。当地址计数器达到$07FFH时,自动翻转到$0000H单元。写数据完成后,将片选信号拉到高电平。值得注意的是,每次写操作完成后,都必须查询WIP位来确定写操作是否完成,否则,如果连续进行两次写操作,可能会出错。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top