前言
最近在做基于dsp平台的无通信接口系统辨识,因此需要直接利用CCS将数据导出,然后再利用MatLAB解析读取后的数据。MatLAB的代码参考了以下这篇链接:
-/导出CCS3.3数据及使用matlab处理的方法.md at master · dailai/- · GitHub
高版本的CCS,比如7.4, 是没有File -> Data -> Save这个保存流程的。 所以我自己找了一个保存DSP数据的流程,并且结合MatLAB代码将DSP内存中的数据解析出来了。
正文
首先给一个DSPdemo代码,如下文所示
#include <main.h>
float y[100];
void main(void)
{
int i;
for(i = 0; i < 100; i++){
y[i] = sin(2 * 3.14 * (float)i * 0.1);
}
while(1);
}
我们的目的,就是把y数组,导出到MatLAB里面。
首先需要让这个demo代码运行起来,然后当天运行到while(1)的时候,我们把它停下来
然后点击 Tools -> Save Memory
选择文件路径,方便起见我们选择了桌面,并命名为test.dat。 然后Next
然后,选择数据类型这里比较关键, 由于我们dsp里面是float数组,默认是32位的,所以我们选择32-Bit Floating Point。
另外,开始地址以及读取长度这里,就根据需要读取数组名以及我们自己定义的长度来选择。
做好这一些, 就可以Finish了。 结束后,桌面就会生成一个test.dat的文件。
下面看一下MatLAB的处理代码。
clear all; close all; clc;
fid = fopen('test.dat');
fseek(fid, 21,-1); % 去文件头, 21字节,如 1651 1 80000006 0 100
x = textscan(fid, '%f');
y = x{1};
plot(y);
到此为止呢,我们就把dsp数组里面的数据,导出到MatLAB里面了
在CCS也能实时查看DSP变量的数据, 经过对比分析,读取的数据和DSP里面变量的数据是一样的,说明功能实现了。
感谢您的阅读,欢迎留言讨论、收藏、点赞、分享。