运动控制系统中大容量串口FLASH的扩展实现--控制网



运动控制系统中大容量串口FLASH的扩展实现
企业:控制网 日期:2006-07-23
领域: 点击数:2033
  前言
       随着信息时代的到来,各种信息的集成和交互越来越频繁。在运动控制系统中需要处理和存储的信息量也与日俱增,大部分运动控制系统中核心芯片MCU自身已经集成了较大容量的存储器(与以前MCU相比),但仅仅依靠MCU自身的存储器一般很难满足系统对大容量存储器的要求,因此必须找到高效的方法实现对系统的存储容量的扩展。
        SPI是一个高效的、数据位数可编程的高速输入/输出串行流接口,几乎所有MCU生产厂商都提供对SPI接口的支持,目前高速的SPI接口时钟频率已达到60M甚至更高,SPI接口一般只用4根连接线即可完成所有的数据通讯和控制操作,因此不占用MCU的数据总线和地址总线,极大的节约了系统的硬件资源,是一种经济实用的扩展系统存储容量的方法。
        本文利用TI公司最新的32位DSP―TMS320F2812自身的增强型SPI接口,结合性价比高的串行接口Flash,高效地实现了对系统存储容量的扩展,具有非常大的实用价值和推广意义。
 系统总体介绍
       本文的FLASH扩展实现的硬件系统是具有Ethernet接口的基于DSP和CPLD的运动控制板,系统总体结构如图所示。


       核心芯片是TI公司最新推出的的32位定点DSP―TMS320F2812和ALTERA公司的MAXII系列CPLD―EPM1270G。主要完成对系统输入信号检测、处理、各种控制算法以及和各种接口(Ethernet接口和RS232接口)的通讯,运动控制系统的部分控制程序、大量的初始化数据和系统的配置信息都存放在ST公司的大容量串口FLASH:m25p80中,通过DSP增强型的SPI接口实现与核心处理器DSP的高速通信。
 Flash扩展的硬件设计
1. TMS320F2812的增强型SPI接口特性:
 (1)波特率:可编程的125种不同的波特率。
 (2)有效数据长度:可编程的1~ 16位有效数据长度
 (3)支持4种时钟模式:不带相位延时的下降沿模式、带相位延时的下降沿模式、
           不带相位延时的上升沿模式和带相位延时的上升沿模式。
 (4)可连续操作的特性:
Ø         16级发送和接收FIFO;
Ø         可编程的延时发送控制
        时钟模式应根据具体的应用中与MCU接口器件的操作时序决定,选取原则是保证在器件进行读写操作过程中,所要求的CLK时钟沿到来时所操作的数据必须已经提供在相应的引脚上。例如:当接口器件(本系统中是FLASH)在上升沿接收数据,在下降沿发送数据时,MCU应该选择不带相位延时的下降沿方式。
        增强型的SPI接口具有16位16级深度的发送和接收FIFO,这为高速连续操作提供了可能,在发送和接收时可以最多进行32个字节的连续操作,从而极大地提高了通讯效率;可编程的中断优先级使用户可以根据具体系统应用,确定产生中断时已经发送或者接收到的字节数,提高了系统通讯效率和系统的灵活性;可编程的延时发送控制功能使用户可以根据系统要求配置每次发送时的延时时间,当接口器件操作速度相对MCU慢时,在不改变SPI接口时钟的条件下增加发送延时时间,既保证了接口操作的高速性时也满足了慢速接口器件的操作时序要求。这些增强的特性为SPI接口的扩展提供了极大的灵活性。
2.ST公司串行接口FLASH芯片m25p80特性:
m25p80是意法半导体公司推出的8M大容量串行接口FLASH芯片,芯片采用2.7~3.6V单电源供电,兼容标准的SPI接口,器件在上升沿接收数据下降沿发送数据,接口时钟最高为40M;支持最大256 bytes的快速页面编程操作、快速的块擦除(512 kbit)操作和快速的整体擦除(8M)操作;具有操作暂停和硬件写保护功能。
SPI模块接线图如右图所示:


SPISOMI:SPI从模  式输出/主模式输入引脚; 与FLASH的串行数据输出引脚Q相连。
SPISIMO:SPI从模式输入/主模式输出引脚; 与FLASH的串行数据输入D引脚相连。
SPISTE:SPI从模式发送使能引脚;与FLASH的片选引脚 相连。
SPICLK:SPI串行时钟引脚;与FLASH的时钟输入引脚C相连。
RAM_WP信号由DSP的I/O口输出,控制外部Flash的写保护功能,当RAM_WP为高电平时,使能Flash的硬件写保护功能,Flash内部扇区受保护的,不能进行写操作。系统中对Flash的操作不会发生暂停,因此M25P80的 信号直接接高电平,不进行中断暂停操作。
3. m25p80的指令操作:m25p80支持的操作指令共有12条,所有指令都是8比特位,操作步骤如下:操作时先选中芯片(片选信号拉低),然后输入8位操作指令字节,紧接着输入地址字节(0~3bytes,必要时还要加入哑读字节),然后把片选信号拉高(有些指令不要求),然后m25p80即可以启动内部控制逻辑,自行完成相应的操作。以下以最常用的页面快速编程指令进行具体说明(其他指令与该指令操作相似可以相互参考):
进行页面编程操作首先应将内部状态寄存器的写允许位(WREN)置1,然后将片选信号拉低选中芯片,输入pp指令字节02h,紧接着输入3个字节的地址数据,然后输入要编程的数据,所有数据都输入后将片选信号拉高,m25p80随即启动内部逻辑完成编程操作。指令时序图如下图所示,具体的软件编程实现请参考SPI模块软件编程部分。


SPI模块软件编程


 SPI模块软件编程
(1)软件流程说明:(流程图如下图所示)


a. 与SPI相关的系统初始化:完成SPI接口引脚功能的选择、DSP外部接口时钟的定标、SPI接口时钟的使能。本系统中具体为:GPIO多路复用控制寄存器:GPFMUX中将相关引脚配置为SPI功能引脚,低速设备时钟定标寄存器LOSPCP中低速设备时钟的定标,外设时钟控制寄存器PCLKCR中SPI接口时钟使能;实现程序如下:
GpioMuxRegs.GPFMUX.all=0xfff7;
GpioMuxRegs.GPFDIR.all=0x0008; SysCtrlRegs.HISPCP.bit.HSPCLK=0x0001;
SysCtrlRegs.LOSPCP.bit.LSPCLK=0x0000;
SysCtrlRegs.PCLKCR.bit.SPIAENCLK=1;
b. 与SPI相关的中断初始化:使能外部中断向量表(PIEVECT寄存器),复位外部中断应答寄存器(PIEACK),清除外部中断标志寄存器(PIEIFR),置位PIE中断使能寄存器(PIEIER),清除全局中断屏蔽位(ST1 寄存器的INTM位)。
c. SPI接口初始化:在SPI配置寄存器(SPICCR)中:首先置位SPI软件复位位,使SPI进入复位模式、设置SPI接口的时钟极性(根据具体的FLASH器件操作特性设置,在4中时钟模式中选择,本系统选择不带相位延时的下降沿方式)、选择有效数据位数、选择奇偶校验位;在SPI控制寄存器(SPICTL)中:使能接收中断和发送中断、选择SPI时钟相位、选择主或从模式;SPI波特率寄存器(SPIBRR)中:设置SPI接口的通讯波特率。
d. SPI增强特性配置: SPIFIFO发送寄存器(SPIFFTX)中:复位SPI发送和接收通道、使能增强特性、复位FIFO指针、清除FIFO中断标志位、使能FIFIO中断、设置FIFO中断优先级;SPIFIFO接受寄存器(SPIFFRX):请参考SPIFFTX寄存器配置,两者基本相同,分别用于发送控制和接收控制;SPIFIFO控制寄存器(SPIFFCT):根据具体器件的操作时序要求配置FIFO发送延时。实现程序如下:
  SpiaRegs.SPIFFTX.all=0xe060;//连续发送16个字节后产生发送中断
  SpiaRegs.SPIFFRX.all=0x606f;//当接收到一个数据时产生接受中断
  SpiaRegs.SPIFFCT.all=0x0006;//延时6个串行时钟周期后发送数据
(2)页编程PP软件实例
   //将写允许位置1
   GpioDataRegs.GPFDAT.bit.GPIOF3=0;     //片选信号拉低
   SpiaRegs.SPIDAT=INS_WREN;           //输入写允许位置1指令INS_WREN
   while(!SpiaRegs.SPISTS.bit.INT_FLAG);   //等待发送完毕
   GpioDataRegs.GPFDAT.bit.GPIOF3=1;    //片选信号拉高
   //PP页面编程操作
   GpioDataRegs.GPFDAT.bit.GPIOF3=0;  //片选信号拉低
   SpiaRegs.SPIDAT=INS_PP;         // 输入页编程指令 INS_ PP=0x02h 
   for(i=0;i<4;i++)                    //连续发送3个字节的地址和一个字节的编程数据
{  if(I= =3)
            SpiaRegs.SPIDAT=data;       //data为输入的编程数据
         else      
            SpiaRegs.SPIDAT=w_addr8[i];  // w_addr8[i] 为输入的地址字节
      }
   GpioDataRegs.GPFDAT.bit.GPIOF3=1;   //片选信号拉高,执行页面写操作
//接收中断子程序
interrupt void spi_rx_isr(void)
 {   FLASH_VALUE=SpiaRegs.SPIRXBUF;  //读取接收到的数据
PieCtrlRegs.PIEACK.all = 0xFFFF;    //清除中断响应标志位 
}
结束语
       本文所述的运动控制系统利用系统核心芯片DSP自身的SPI接口,结合其高速性、可连续操作性和极大的灵活性,选用性价比高的大容量串行接口FLASH,高效地实现了对系统存储容量的扩展,适应了目前信息化发展趋势,满足了系统大容量存储空间的要求。本文的实现形式经实验验证正确无误,具有很高的参考价值和广泛的应用前景。
参考文献:
『1』       ST. Corporation ,Serial Flash Memory m25p80 Data Manual ,August 2005  
『2』       Texas Instruments Incorporation ,TMS320F2812 Digital Signal Processors Data Manual ,USA,.December 2005。
『3』       张卫宁,TMS320C28X系列DSP的CPU与外设(上、下),清华大学出版社, 2005-1
『4』       苏奎峰,TMS320F2812原理与开放,电子工业出版社,2005-4。
  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: