CCS支持的.dat文件的格式为:
文件头为
定数 数据格式 起始地址 页类型 数据块大小
1651 1 80000000 0 10
固定标识 数据格式 基地址 页类型 长度
数据格式:1-十六进制 2-十进制 3-十进制长整型 4-十进制浮点型
页类型: 0-数据 1-程序 ?
长度: 装入数据的长度
比如一个.dat文件:
1651 1 800 1 10
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
0x0000
制作.dat 文件的方法也很简单,可以用VC++或者MATLAB来实现。比如hellodsp的网友lwxing提供的使用matlab创建.dat文件的一个实例:
matlab向dsp传递.dat文件
x=2*sin(2*pi*100*m*dt);
for m=1:200;
if x(m)>=0 y(m)=x(m);
else y(m)=4+x(m);
end;
end;
y=y*16384;
fid=fopen('input.dat','w');%打开文件,'w'是将此文件定义为可写的,fid是此文件的整数标示
fprintf(fid,'1651 1 0 1 0\n');%输出文件头,文件头必须是dsp所能识别的,就如此句程序所设定的
fprintf(fid,'0x%x\n',round(y));%输出y数组,并写到与fid标示符相同的文件,即yinput.dat文件里。round是取y值的最近的数,即如果是1.2,就取1,如果1.6,就取2.
fclose(fid); %关闭fid标示符的文件。
fid=fopen('input.dat','w');%打开文件,属性设置为写
fprintf(fid,'1651 1 0 1 0\n');%输出文件头,只有此文件头dsp芯片才能识别
fprintf(fid,'0x%x\n',round(x));%输出十六进制的x
fclose(fid);关闭
这里x要转换成二进制补码,这也是我发此贴的目的所在。只是个人的理解,如果有问题,请大侠们改正,为更多dsp学习者们提供借鉴。
首先确定x的范围,譬如x=【-2,2】,那么,我们采用定点Q14,那么就是要乘以16384,如果x<0,还要转化成其补码。补码应该是用模加上x,即4+x,然后再将此数乘以16384.
转载请注明出自DSP交流网 DSP学习第一论坛 DSP技术应用与推广平台 DSP开发服务平台 http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=4537
其在CCS中的使用方法可以有一下命令:
File->Da
File->Da
File->File I/O
验证一下,采用倒推的方法,即使用save da
之后将部分数据,地址为0x80000000,长度0x10保存到test.dat中,使用编辑工具打开test.dat,得到的文件内容如下
1651 1 80000000 0 10
0x01020304
0x00000001
0x00000002
0x00000003
0x00000004
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
0x00000000
由于CCS中设定采用小端的存储方式,所以数据存储的顺序有一些改变,即0x01020304中04是数据的最低位,放在内存的LSB,01是数据的最高位,放在内存的MSB,同时在所有的32位数据之前添加了0x字段。
http://jinsuo2007.blog.163.com/blog/static/1922799520109151745262/