之前有很多博主讲过在matlab当中导出数据,到DSP里面进行计算,然后再将数据导出到matlab当中进行使用。
以前使用过matlab当中的dat数据,大家可以看一下区别:
fid = fopen('A.dat','wt');%将所得的数据存在A.dat当中
fprintf(fid,'%g\n',A);
fclose(fid);
这是在matlab当中生成dat文件的结果
如果要使用matlab生成DSP可以使用的头文件的话,就可以添加头文件:fprintf(fid,'1651 1 0 1 0\n');%输出文件头,文件头必须是dsp所能识别的
而在DSP当中使用dat文件的规定是:
CCS支持的.dat文件的格式为:
文件头为
定数(固定标识) | 数据格式 | 起始地址(基地址 ) | 页类型 | 数据块大小(长度) |
1651 | 1/2/3/4 | (16进制) | 0/1 | (10进制) |
数据格式:1-十六进制 2-十进制 3-十进制长整型 4-十进制浮点型
页类型: 0-数据 1-程序 (cmd文件中的page0或page1)
长度: 装入数据的长度
例如:1651是固定标识,2是表示10进制,3F85A4 表示首地址是0X3F85A4 ,1表示为程序,1444表示数据个数,此为十进制。
需要导入的数据准备好之后,就可以在CCS当中进行仿真了,该种情况适用于没有DSP开发板,利用CCS进行纯算法的验证
下面讲一讲在CCS当中具体导入数据的过程:
工程编译成功之后,点击debug,这个是不连开发板的,所以是虚拟的纯软件仿真,但是CCS的高版本(v6之后)是不支持纯软件仿真的,所以要先配置仿真环境,具体仿真文件和仿真教程下载链接:https://download.csdn.net/download/qq_43811597/87606916?spm=1001.2014.3001.5503
然后导入dat文件,就是按照上面头文件的要求产生的文件(这个步骤可以用matlab产生,也可以自己制作,新建一个txt文件,然后将文件后缀改为.dat即可,然后将需要导入的数据,在excel当中放到一列,然后复制粘贴到该dat文件下,然后在第一行写入头文件即可)
然后在选择文件所在位置,点击next:
然后填入首地址(必须是DSP当中可以使用的地址)和长度,注意进制,然后点击finish就可了:
然后就可以在memory browser当中看到写入的数据,如果找不到,也可以在view当中调出:
其次就是怎么确保在程序当中使用的变量是用的这些数据:是将首地址放到一个指针里面,然后再把它的值赋给变量,程序执行之后,可以在variables当中查看是否成功;
Uint16 *c0 = 0x3F85A4;
Uint16 c[DETECTOR_SIZE][DETECTOR_SIZE];
for(i=0;i<DETECTOR_SIZE;i++)
{
for(j=0;j<DETECTOR_SIZE;j++)
{
c[i][j] = *(c0+i*DETECTOR_SIZE+j);
}
}
然后是如何将计算出的结果导出:
比如我们要导出上面变量C的结果,那么首先在variables当中查看它的是首地址,以及确定长度:可以看到其首地址为0x009000,长度位1444
然后点击save memory
选择好要保存的路径,点击next:
然后填写要保存的格式,点击finish:
最后看一下结果:
9:使用新方案,
8:当使用格式1 - 4时,这是可选的