DSP的SPI口和串行EEPROM在变频器中的应用_第1页
DSP的SPI口和串行EEPROM在变频器中的应用_第2页
DSP的SPI口和串行EEPROM在变频器中的应用_第3页
DSP的SPI口和串行EEPROM在变频器中的应用_第4页
DSP的SPI口和串行EEPROM在变频器中的应用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DSP的SPI口和串行EEPROM在变频器中的应用1引言变频器的开发中我们选用TMS320F240芯片做主CPU,TMS320F240系列是美国TI公司于1997年推出的,专为数字电机控制和其它控制应用系统而设计的16位定点数字信号处理器。它将数字信号处理的高速运算功能与面向电机的强大控制能力结合在一起,成为中低端变频器理想的主控芯片。F240片内外设包括双10位A/D转换器,带有锁相环PLL时钟模块,带中断的看门狗定时器模块,串行通信接口SCI及串行外设接口SPI,另外,还集成了一个事件管理模块EVM。因此,TMS320F240基本能满足笔者变频器设计的要求。变频器有几百甚至上千个参数,这些

2、参数值都要求系统断电后不能丢失,在设计中我们选用非易失性存储器EEPROM保存数据。每次上电时,从EEPROM中读取上次参数的设定值,以保证变频器运行状态的连续性,同样每次断电时,也要保存变频器此次运行的参数设定情况,以便开机时读取。本文阐述了变频器开发中F240扩展EEPROM(X5168)的设计思路和实现过程。2对TMS320F240的串行外设接口(SPI)的说明TMS320F240的串行外设接口(SPI)模块是一个高速同步串行输入/输出端口,它允许F240控制器和片外外设或其他控制器进行串行通信,在通信过程中,SPI能够以任意给定的传输速率对具有可编成长度(1-8位)的串行比特流进行收发

3、。该模块也是一个8位外设,它直接挂在16位的片内外设总线上,因此,外设总线的高8位读写访问对该模块是没有意义的。SPI模块的特性如下:(1)4个外部引脚。SPISOMI为SPI从输出/主输入引脚;SPISIMO为SPI从输入/主输出引脚;SPISTE为SPI从发送使能引脚;SPICLK为SPI串行时钟引脚。(2)两种工作方式,即主模式(Master)和从模式(Slave)。(3)数据字长。1-8个数据位。(4)可同时接收和发送数据,发送和接收操作可通过中断或查询方法来完成。(5)波特率,l25种可编程的波特率,下列两个公式给出了计算SPI的波特率的方法:1.当SPIBRR=3-127时,SPI

4、波特率=系统时钟频率/(SPI寄存器的值+1);2.当SPIBRR=0、1、2时,SPI波特率=系统时钟频率/4;(6)4种时钟方案,由时钟极性位(SPICCR寄存器的位6)和时钟相位位(SPICTL寄存器的位3)进行设置,包括:1.无延时下降沿有效:串行外设接口在SPICLK信号下降沿发送数据,而在SPICLK信号上升沿接收数据;2.有延时下降沿有效:串行外设接口在SPICLK信号下降沿之前的半个周期时发送数据,而在SPICLK信号下降沿接收数据;3.无延时上升沿有效:串行外设接口在SPICLK信号上升沿发送数据,而在SPICLK信号下降沿接收数据;4.有延时上升沿有效:串行外设接口在SPI

5、CLK信号上升沿之前的半个周期时发送数据,在SPICLK信号上升沿接收数据。3对X5168的说明DSP处理速度比较快,且本设计需要保存的数据量大,笔者选择了XICOR公司的带16KbSPIEEPROM的CPU监视器X5168。器件把四种常用的功能:上电复位、看门狗定时器、电源电压监控和块锁存保护的串行EEPROM存储器集成在一个封装之内,这种组合降低了系统成本,减少了电路板空间,增加了可靠性。器件的存储器部分是带有XICOR公司的块锁存保护的CMOS串行EEPROM阵列,阵列的内部组织是x8位。具有串行外围接口(SPI)和软件协议的特点,允许在简单的四线总线上工作。利用XICOR专有的直接写入

6、晶片,提供最小为100,000次擦写和最少为100年的数据保存期。4DSP与X5168的连接通信4.1硬件设计在变频器设计中DSP与X5168的硬件连接图如图1图1TMS320F240与X5168连接原理图 串行外设接口(SPI)有两种工作模式:主模式和从模式,与X5168连接时工作于主模式。从图中可看到,X5168通过四根线来完成与DSP的数据交换,DSP的SPISIMO、SPISOMI、SPICLK、SPISTE引脚分别连接X5168的SI(串行输入)、SO(串行输出)、SCK(串行时钟)、/CS(片选端),此时的F240控制器称为“主机”,这种情况下,SPI在SPICLK引脚上提供了整个

7、串行通信网络所需的串行时钟;数据从SPISIMO引脚输出;并锁存从SPISOMI引脚输入的数据;SPIBRR寄存器决定了整个串行通信网络中数据发送和接收时的位传输率。写入SPIDAT的数据启动了SPISIMO引脚上的数据发送,先发送最高有效位;同时,接收的数据通过SPISOMI引脚移入SPIDAT的最低有效位。当有一定数量的数据位通过SPIDAT移位时,产生下列事件:一、SPIINTFLAG置1二、SPIDAT的内容传送到SPIBUF三、如果SPIINTENA也被置1,则产生中断请求在主模式中,无论寄存器SPIPC1的位5(SPISTEFUNCTION)为何值,SPISTE引脚都将用作通用数字

8、I/O引脚。在本设计中,引脚SPISTE用作从机SPI模块的片选引脚;在将主机数据传送到从机器件之前,应将从机器件片选引脚拉低电平,并且在传送完主机数据之后,重新将该引脚拉为高电平。4.2软件设计上文介绍了F240的SPI模块的功能,配置寄存器串行外设接口工作于主模式,波特率设置为2MHz,初始化程序如下:voidSPIinitial(void)SPICCR=0xc7;/复位SPISPICTL=0x06;/主模式,使能TALK,禁止SPI中断SPISTS=0x00;/清中断标志SPIBRR=0x04;/波特率设为SPICLK=SYSCLK/4+1=2MHz,SYSCLK=10MHzSPIPC1

9、=0x52;/SPISTE引脚配置成输出引脚,SPICLK被配置成串行时钟的输/入或输出SPIPC2=0x22;/SPISIMO,SPISOMI用作SPI输入输出SPICCR=0x47;/上升沿发送,下降沿输入数据锁存,无时延,字符长度为8对EEPROM的读写是设计的重点,以下分别介绍:一、读操作a).从EEPROM存储器阵列中读数据时,/CS首先被拉低以选择器件,向器件传送8位读READ指令(00000011B),接着是16位地址(高位在前)。在读操作码和地址送出后,存储位于在所选地址的存储器中的数据在SO线上被移出,继续提供时钟脉冲可接着读出存储在位于下一个地址的存储器中的数据。每移出一个

10、字节地址自动增加至下一个更高的地址,在达到最高地址时,地址计数器返回到地址$0000,允许读周期无限期地继续。将/CS拉高可终止读操作。参见读EEPROM阵列时序图2。图2读EEPROM阵列时序图 以下是读X5168子程序,其中RA_ADDR为存储读出数据的数组的首地址,EEP_ADDR为要读取数据在EEPROM阵列中的地址,N为要读取数据的个数voidREAD_X5168(unsignedintRA_ADDR,unsignedintEEP_ADDR,unsignedintN)unsignedintI,readspibuf1,readspibuf2;SPIPC1&=0xBF;/置低SPISTE

11、引脚,从而选通X5168/SPIDAT=READ;/发送X5168的写状态寄存器命令字/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=SPIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/SPIDAT=EEP_ADDR8;/发送地址高八位/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=SPIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/SPIDAT=EEP_ADDR;/发送地址低八位/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=S

12、PIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/for(I=0;ISPIDAT=0;/发送伪数据/while(SPISTS&0x40)!=0x40)/等待SPI读/写结束/readspibuf1=SPIBUF;/读取高位字节/readspibuf1=readspibuf18;/先发送高位地址在发送低位地址/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=SPIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/SPIDAT=EEP_ADDR;/先发送高位地址在发送低位地址/while(SPISTS&0x40)!=0x40)/等

13、待SPI写结束/readspibuf=SPIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/for(I=0;ISPIDAT=(RA_ADDR+I)8;/发送数据用数组传送,传送数据高八位/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=SPIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/SPIDAT=(RA_ADDR+I);/发送数据用数组传送,传送数据第八位/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=SPIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/SPIP

14、C1|=0x40;/置高SPISTE引脚,从而禁止X5168/c).为向状态寄存器写数据,在WRSR指令(00000001B)之后应跟随被写入的数据(见图6),数据位0和位1必须为“0”。图6写状态寄存器时序图 以下是写状态寄存器子程序:voidWRSR_X5168(unsignedintCOM)/写状态/WREN_X5168();/写使能/SPIPC1&=0xBF;/置低SPISTE引脚,从而选通X5168/SPIDAT=WRSR;/发送X5168的写状态寄存器命令字/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=SPIBUF;/读SPIBUF寄存器,清除SPIINTFLAG位/SPIDAT=COM;/STATUS_REG发送状态字/while(SPISTS&0x40)!=0x40)/等待SPI写结束/readspibuf=SPIBUF;/读SPISTS寄存器,清除SPIINT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论