在进行DSP算法设计时,我们通常会在Matlab上验证一下算法是否正确,然后再把算法移植到DSP当中,然而在移植的过程中会不可避免的出现各种问题,这时就需要将DSP内存中的数据导出来传到Matlab中进行分析处理,同时我们也需要从Matlab传递一些数据到DSP当中,比如我们想生成某种比较复杂的数据(例如各种类型的噪声),如果用C语言来写的话将会非常的麻烦,而这些用matlab能够亲而易举的完成,这时我们只需要将matlab生成的数据导入到DSP中就可以了,今天笔者就来向大家来分享一下实现CCS与Matlab数据交换的方法。 Matlab向CCS传递数据首先我们利用Matlab生成若干个数据,然后存储为dat格式的文件,然后通过CCS将dat格式的文件导入到DSP中。dat文件是CCS能够识别的文件之一。下面来讲一下dat文件的构成。
CCS支持的.dat文件的格式为: 文件头为 定数 数据格式 起始地址 页类型 数据块大小 固定标识 数据格式 基地址 页类型 长度 固定标识:它的值固定为1651 数据格式:1-十六进制 2-十进制 3-十进制长整型 4-十进制浮点型 基地址: 就是要存入到DSP一段内存空间的首地址 页类型: 0-数据 1-程序 长度: 装入数据的长度 比如一个.dat文件: 1651 1 80000000 0 10
接下来讲解如何使用Matlab制作dat文件,首先给出matlab代码:
运行一下程序得到一个名叫input_file的dat文件,其保存在当前matlab活动的目录下。用记事本的方式打开此文件里面的内容如下:
同时出一张如下所示的图:
此图是程序生成的数据,这个图留着后面对比。
接下来把生成的input_file.dat文件拷贝到没有中文的路径下,打开CCS使用仿真器连上相应的DSP芯片,笔者在这里使用的是TMS320C6748,进入到debug界面,在菜单栏View下找到Memory Browser选项,出现的界面如下图所示:
输入地址0xc0000000,这个地址就是刚才写到dat文件中的基地址。回车出现如下图所示的内容:
然后将鼠标放到图片中央,右键,如下图所示,选择Load Memory。
点击出现如下图所示的窗口:
点击Browse...找到刚才存放input_file.dat文件的位置,然后画红圈的地方保持一致,点击Next。如下图所示
这两项参数是自动识别的,不用管,然后点击Finish。如下图所示:
图中画圈的地方保持一致,可以看到加载的内容与刚才打开的文件内容一样,说明已经加载进去了。接下来我们可以使用Graph功能看一下数据是否正确。 Graph为single time配置如下:
出现如下图:
与matlab中生成的完全一样。至此我们就完成了从Matlab向CCS导入数据。 关于Graph功能如何使用请查看博客《关于CCS软件的Graph功能使用详解》
CCS向Matlab传递数据接下来将解如何从CCS向Matlab传递数据,回到刚才打开的Memory Browser,将鼠标放在中间,右键,如下图所示:
点击Save Memory,出现如下所示窗口: ![]()
点击Browse...选择一个没有中文的路径并给文件取名为*****.dat,我在这里取名为output_file.dat,画红圈的保持一致,点击Next,
注意画红圈的部分,保持一致,点击Finish。 完成后在刚才选择的目录下找到该文件,并用记事本的方式打开,如下图所示:
画红圈的部分是文件头,多了一个数,笔者也不太清楚是什么意思,但是后面的数据和input_file.dat是一样的,有用的数据并没有变化,因此不用担心文件头不一样,而导致使用出错。接下来给出的是利用matlab读取CCS生成的dat文件的程序:
![]()
如果有什么问题欢迎留言。
|
|