介绍了数字信号处理器tms320lf2407a的串行外设接口,给出了eeprom存储器x5165与 tms320lf2407a的硬件连接电路和应用程序实例。
关键词:非易失性存储器, 数字信号处理器, 串行外设接口
数字信号处理器(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位来确定写操作是否完成,否则,如果连续进行两次写操作,可能会出错。
4 x5165相关操作的软件实现
tms320lf2407a的串行外设接口模块很容易实现对x5165的各种操作,且由于该dsp具有非常丰富的片内资源,因此,使用了两个io引脚控制信号和片选信号。
首先是tms320lf2407a的spi模块初始化工作。本文给出实际使用的源代码如下:
下面的程序用来实现x5165的读操作。因为tms320lf2407a是16位机,故,一次读写两个8位数据。源代码如下:
下面是发送子程序,寄存器acc载入待发送的数据,读回的数据也返回到acc中,源代码如下:
send——data:ldp #spitxbuf>>7?
sacl spitxbuf;待发送的数据?
ldp #spists>>7?
s——5165:bit spists,bit6 ;检测spi——int位?
bcnd s——x5165,ntc ;如果spi——int为0,继续查询?
lacc spirxbuf;读回数据,保存在acc中?
retp?
限于篇幅,tms320lf2407a对x5165的其他软件操作不再赘述。按照上面的硬件、软件的设计思想,已经将x5165成功地应用于某型号的交流伺服系统中。
Java初学者教学
纯电动汽车它在市场中的竞争优势是什么
燃气热水器使用方法 燃气热水器的升数大小有什么区别
什么样子的物联网架构才是合适的
二叉树按任意顺序,返回所有路径程序实现
基于DSP和X5165芯片的非易失性数据存储设计
基于LM12CLK的100W音频放大器电路图
笔记本和台式机处理器差在哪 笔记本最常见的处理器都有哪些?
2021曙光区块链存储系统强势来袭
一文解读SDK中包含的实用性方法
华为P10价格配置全曝光,P10 Plus 6GB+128GB售价超5千,你会买吗?
美政府:华为禁令至少持续5年
!租售/收购/维修HP8595E频谱分析仪HP8595E 小
万物互联时代我们需要怎样的智能连接设计
iPhone SE2的消息又双叒来了,你还相信吗?
电力监控系统的主要功能 电力系统的主要作用
数字化成汽车零部件发展趋势,数商云SRM系统库存管理模块助力企业转型升级
华为HMS Core 5.0上线,服务能力开放可覆盖七大领域
AI实现拐角处的实时汽车成像有什么意义
Excel新功能要逆天 微软把Python加入Excel