MATLAB与DSP使用RTDX的实时数据交换
明。
Extern RTDX_input_channel ichan;
Extern RTDX_output_channel ochan;
最后,单击CCS软件Tools->RTDX->Configuration Control,在弹出的窗口中选择“Enable RTDX”,手动使能RTDX接口。
2.1.2 使用RTDX读写数据
DSP中的RTDX目标库提供了一些C函数发送和接收数据:
①RTDX_readNB()读数据函数包括3个参数:第1个是输入通道的指针,第2个是存储数据的数组指针,第3个是数据字长。这是非连续读,即如果没有数据可读将直接返回。
②RTDX_read()函数的3个参数和RTDX_readNB()一样,不同的是RTDX_read()是连续读,即它将不返回直到读完数据。如果通道忙或未使能,它将返回RTDX_READ_ERROR。
③RTDX_write()写数据函数也包括3个参数:第1个是输出通道的指针,第2个是要传输的数组指针,第3个是数据字长。执行后会返回一个整数,非0代表成功。
④RTDX_sizeofInput()包含输入通道指针的一个参数,并返回从缓冲器中读取的字长,一般在RTDX_read NB()完成一次读操作后使用它。
⑤RTDX_channelBLasy()包含输入通道指针的一个参数,并返回一个整数指示通道状态,0表示通道不忙。
它通常与RTDX_readNB()结合使用,用于检查是否有其他读数据请求。
2.2 MATLAB对RTDX的配置使用
2.2.1 发送数据
在传输数据之前,MATLAB需要知道目标DSP板的信息,完成MATLAB和CCS以及目标DSP的连接,使用下面这条指令实现:
h=actxserver(‘RTDX’);
此指令要在DSP加载了可执行文件并使能RTDX接口之后才能使用,使用这条指令还创建了与RTDX的连接对象,h为连接对象的句柄。
在MATLAB中打开并使能RTDX输入通道之前,必须在DSP目标程序中已经创建了该输入通道,调用下面这条指令实现:
invoke(h,‘open’,‘ichan’,‘W’);
传输数据用下面这条指令实现:
invoke(h,‘Write’,intl6(v));
数据通过最近打开的输入通道由MATLAB向DSP写数据,intl6(v)表示对数据v做强制数据类型转换,因为使用的TMS320VC5509A是16位定点DSP。
在完成数据传输或读数据之前,应该将此接口关闭,使用下面这条指令实现:
invoke(h,‘close’);
2.2.2 接收数据
在MATLAB接收数据部分并没有采用发送数据使用的那种最新的RTDX实现方式,因为新方法的实现难度较大,这里介绍通用的实现方法,具体步骤如下:
①cc=ticcs()实现MATLAB和CCS以及DSP三者的连接,并创建连接对象,对象句柄为cc。
②打开并使能RTDX通道:
cc.rtdx.open(‘ochan’,‘r’);%打开名为ochan的RTDX读通道(MATLAB从DSP读)
cc.rtdx.enable(‘ochan’);%使能通道ochan
cc.rtdx.enable;%使能RTDX接口
③读取数据:
cc.rtdx.readmsg(‘ochan’,‘intl6’);%读取16位字的数据
3 应用实例
列举一个简单的求和运算来说明RTDX的具体实现方法,旨在让读者掌握如何使用RTDX实现MATLAB和DSP之间的双向数据传递。整个程序的实现思路是:首先MATLAB通过RTDX输入通道向DSP中写入10个数据,然后DSP对这10个数据求和,最后将这个和值经RTDX输出通道传递给MATLAB。整个过程的实现流程如图2所示。
3.1 DSP程序实现
3. 2 MATLAB程序实现
MATLAB向DSP写数据
结语
RTDX技术巧妙地实现了MATLAB和目标DSP之间的数据交换,使开发者能够在算法仿真和实时处理之间进行多次反复,以确定最佳算法和参数,极大地方便了DSP应用程序的设计,缩短了开发周期。
- 基于DSP和MATLAB的语音数据采集和处理系统(05-13)
- 简化“算法到C代码”是软件业的一项挑战(07-04)
- DSP与MATLAB的语音数据采集和处理系统(02-12)
- 基于MATLAB-DSP在无传感器矢量控制中的应用(05-04)
- 基于Matlab和VC混合编程的DSP数据采集系统(05-06)
- 基于FPGA设计DSP的实践与改进设计(05-11)