DSP与PC间的数据通讯
摘要:DSP由于具有高性能和灵活可编程的优点而得到广泛的应用。**给出了用PC机作主机,DSP作从机来实现DSP与PC机间有效、可靠通讯的实现方法。同时通过一个数据传输程序的例子来详细阐述如何使用VB6.0专业版作为开发工具,并利用DSP中的SCI(Serial Communication Interface)模块来实现DSP与微机间的数据传递方法。
1 引言
TMS320C24x是美国TI(德州仪器)公司专为电机控制(DMC)应用而推出的一种低价格、高性能16位定点运算DSP。该器件将高性能的DSP内核和丰富的微控制器外设功能集于一身,从而为控制系统应用提供了一种理想的解决方案。TMS320C24x的串行通信接口(SCI)支持CPU与其它采用标准NRZ(不归零)格式的异步外设间的数字通信。异步模式使用两条线来与诸如采用RS-232-C格式的终端和打印机等众多标准器件进行连接,因此,利用DSP中的SCI模块来与微机间的指令和数据传递便可实现微机对生产现场的检测和控制。
VB6.0是运行于Windows上的交互式可视化集成开发环境,利用其强大的通讯控件(Microsoft Comm ActiveX Control6.0)可方便地实现PC机与DSP间的通信。
2 DSP部分
该DSP控制器的串行通讯接口由发送和接收两大部分组成,其与串行通讯相关的引脚如下:
SCIRXD:串行通讯接收引脚,也可用作普通I/O端口。
SCITXD:串行通讯发送端,也可用作普通I/O。
该DSP的系统时钟由SYSCLK设定,其中SYSCLK为CPUCLK/2CPUCLK为20MHz。
通过TMS320C24x中的一个16位波特率选择器可获得超过65000种不同的可编程波特率。波特率的设置与SCIHBAUD和SCILBAUD有关,其具体算式如下:
BRR=SYSCLK/(SCI异步波特率×8)-1,
其中SYSCLK为10MHz。本软件采用9600的波特率。可编程数据字长从1位到8位,并可由SCICCR控制寄存器来编程数据格式。本软件采用8位数据字长。PC与DSP的通讯采用中断方式,可避免DSP的CPU反复查询接收与发送缓冲区满标志,从而提高设备利用率,保证其具有足够的实时性。相应的中断设置可由SCICTL2来完成。
串行通讯接口数据无论是接收还是发送,都采用NRZ(不归零)格式。本软件采用8位数据为一帧(一个接收和发送的单位)的格式。
在串行口初始化完成后,只需对数据发送缓冲器SCITXBUF和数据接收缓冲器SCIRXBUF进行操作即可。如果要发送数据,无论何时,只要把数据写入到SCITXBUF就会产生发送中断。而加入起始位、停止位、校检位数据以及在波特率规定的节拍下移位到发送引脚SCITXD/IO等工作则可由串行通讯SCI模块本身来完成。如果要接收数据,只要DSP接收到完整的帧就会产生中断,然后只要在中断程序中把SCIRXBUF的内容读出即可,因为对于引脚SCIRXD/IO移位来的信息,串行通讯SCI模块本身即可自动去掉起始位、停止位和校检位,然后将数据放到SCIRXBUF中。
对于单机通信,可不使用SLEEP设置,而使用空闲线多处理机模式,并采用中断方式在主程序中完成初始化。同时可设置一个变量用于辨别是否给PC机发数据。
接下来应考虑中断接收子程序里从PC机送来的信号(PC机要先将DSP中需要的电机参数转换成定点数1.15、4.12、8.8、10.4等格式)。在发送子程序里,应由DSP将得到的数据回送给PC机并由PC机将定点数转换成电机参数并显示。当然,DSP也可以将内部某指定地址开始的数据传给PC机,然后由PC机按给定格式转换并处理。DSP程序流程图如图1所示。
有关SCI初始化的部分程序如下:
.bss SEND,1 ;向微机发送数据的标志
LDP #00E0h
SPLK #0017hSCICCR ;SCI复位,传输数据长度8位
SPLK #0013hSCICTL1 ;串行输入、输出使能
SPLK #0003hSCICTL2 ;串行输入、输出中断使能
SPLK #0000hSCIHBAUD
SPLK #0082hSCILBAUD;波特率9600
SPLK #0022hSCIPC2 ;定义引脚SCITXD和SCIRXD为功能引脚
SPLK #0033hSCICTL1; 串行输入、输出工作
………………………………
3 VB部分
利用VB6.0专业版提供的功能强大的Active X控件MSCOMM可实现微机与DSP的通信,实际上,在VB中,串行通讯端口所传送的数据使用的是BYTE字节型数组变量,可将装载数据的数组转换为Variant型进行传输。同理接收数据时要将数据赋给Variant型变量再进行处理。BYTE型表示数据类型为整型范围为:0~255。Variant型是变体变量,可以是任意数据类型。同时需设置一个变量(标志变量)以用于辨别是否要求DSP发送数据给PC。
由于本软件所用的DSP为定点格式,字长为16位,因此,本系统不能直接表示浮点数。而应进行格式转换。
限于篇幅,具体转换模块可参见程序中Fun8.bas.VB部分,程序流程图如图2所示,人机界面如图3所示。操作时,单击‘发送’按钮可向DSP发送数据,单击“验证”按钮则可接收DSP发送来的数据。
4 结论
利用DSP的串行通信接口SCI 和功能强大的面向对象的开发工具VB6.0专业版可以方便地实现DSP与PC机间的单机或多机串行通信。本文所涉及的软件已在PC机和TMS320F240评估板上调试通过。
|