TMS320F240型DSP的SPI口的扩展
1 引 言
dsp芯片,也称数字信号处理器,是一种特殊结构的微处理器。dsp芯片内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的dsp指令,可以用来快速实现各种数字信号处理算法。因此,dsp在计算密集的实时控制领域得到了日益广泛的应用。tms320f240是目前应用比较广泛的一款定点dsp,它具有20mips的指令执行速度,强大的内部事件管理器、i/o端口和其他外围设备。其中,串行外设接口(spi)是一个高速同步串行输入/输出(i/o)端口,它允许一个具有可编程长度(1到8位)的串行位流,以可编程的位传送速率从设备移入或移出。spi通常用于dsp控制器和外部设备或其它控制器间的通讯。典型的应用包括通过eeprom、移位寄存器、显示驱动器和模数转换器(adc)等设备进行外设扩展。
对于某一控制任务需要多个dsp协同完成时,dsp之间的数据交换将会很频繁,此时,我们就可以通过spi口进行dsp之间的高速数据交换,实现相互间的功能扩展。这种模式的dsp之间的通讯,较通过串行通讯接口(sci)进行通讯时,速率提高近一倍,而且它还可以通过控制寄存器的talk位实现多个dsp之间的数据交换。当系统需要预先从eeprom读出定值时,也可以通过tms320f240的spi口进行外设扩展。
2 dsp之间的扩展
在多个dsp构成的串行通讯网络中,dsp分为主模式dsp和从模式dsp。主模式dsp的数据在spisimo引脚上输出并从spisomi上锁存,从模式dsp的数据在spisomi引脚上输出并从spisimo上锁存。主模式spi为整个网络提供串行时钟spiclk,并通过写入spidat寄存器的数据启动spiclk信号从而启动数据传送,当预先设定的1到8位串行位流传送完毕后,spiclk信号中止,传送结束。对于从控制器和主控制器,数据在spiclk的一个沿从移位寄存器移出,在负跳沿锁存到移位寄存器。可以通过spi的两个时钟模式位选择四种不同的时钟模式,使得两个控制器的发送和接收同时进行,由软件决定数据是有意义的还是哑数据。当清除从设备控制寄存器的talk位时,数据发送被禁止并且输出线(spisomi)处于高阻态。这种情况下允许许多从设备在网络上连在一起,但每次只有一个从设备被允许讲。图1是spi用于两个控制器(一个主控制器和一个从控制器)之间通讯的典型连接方式。


splk#0h,spipri
;设置spi中断为高优先级
splk#07h,spiccr
;上升沿发送,有时延,字符长度为8
在程序初始化控制寄存器后,就可以按设定值进行dsp之间的发送和接收,下面是主模式和从模式的spi子程序代码。



为了节省中断资源,spi一般采用查询方式进行数据收发。
3 扩展eeprom
在开发dsp系统时,某些情况下会读取或者存储一些定值,这时我们就需要通过spi接口扩展eeprom。具有spi接口的串行eeprom均可被tms320f240直接逻辑扩展,方便易行。

x5043是xicor公司的最高时钟速率为3.3mhz的4kbits串行eeprom,它与tms320f240型dsp的连接如图2所示。
其软件设置如下:
设置各控制寄存器:

tms320f240的spi接口有可选择的四种不同的时钟模式,如何选择时钟模式是它与各种扩展spi接口器件实现时钟同步的关键。x5043的数据在时钟下降沿从so引脚上输出并在时钟上升沿从si引脚上锁存。读操作时,在其从si引脚输入的最低位地址所对应的时钟下降沿,其so引脚开始输出数据。因此,作为主器件的dsp就选择‘下降沿、无时延’的时钟模式。在这种模式下,无操作时钟时,dsp的spiclk引脚位高,当该引脚由高变低时,启动发送。
写子程序如下:








由于x5043是一个半双工器件,故,在write子程序中从spibuf中读出来的数据是无效的,同时,在read子程序中写向spidat的数据也是无效的,只起启动发送时钟的作用。这一点不同于spi,spi之间的发送和接收是全双工的,可以同时进行。
4 spi扩展在功角测量系统中的应用
发电机功角是电力系统运行的关键状态量,是电力系统能否稳定运行的重要标志。功角测量系统就是将机端电压整型后的方波信号前沿,减去代替空载电势的转子位置脉冲信号前沿,以获得负载时的上述两种信号的相位差值,再用空载时两种信号的相位差减去负载时两种信号的相位差,即得发电机的功角值。该系统具有很强的现实意义,其原理图如图3所示。
上述系统中,空载相位差是定值,一旦装置安装完毕,其值不变。而在实际的电力系统中,转子的极对数比较多,这些空载相位差值就需要存在相应的eeprom里,以便读取。所以,该系统就通过主芯片的spi口进行串行eeprom的扩展。在系统上电时,dsp将初始的相位差值从eeprom导入内存,进行相应的计算后通过isa总线将所得的功角值送入主控器。这里的eeprom仍然采用的是x5043,其具体操作在上面第3节中已作过详细的说明。

5 结束语
本文介绍了tms320f240型定点dsp的spi接口的功能扩展,其一般方法同样适用于其它具有spi接口的dsp。多个dsp通过spi口的相互扩展可实现dsp之间的高速数据交换,通过spi口扩展eeprom可实现dsp对定值的存取。某些其它的串行设备,比如高精度的串行a/d,串行数字电位器等,也可通过类似方法进行扩展。通过这些扩展可以使dsp的功能变得更加强大,同时,深入了解这些扩展方法对于开发dsp控制装置有着重要的意义。
评论