【求助】如何用MATLAB生成CCS可用的.dat文件
我想用matlab生成正弦函数,转成.DAT文件供CCS使用下面是我的matlab程序:
f1=10;f2=100;fs=4000;N=4000;
x = linspace(0,N/fs,N);
y1 = sin(2*pi*f1*x);
y=y1;
figure
plot(x,y) %创建文件sine.dat,可写入
fid=fopen('mysine.dat','w');%将文件头写入文件,将生成的y信号写入到文件,格式四位小数
fprintf(fid,'1651 1 0 1 0\n');
fprintf(fid,'0x%x\n',y+(y<0)*1); %将文件头写入文件,将生成的y信号写入到文件,格式十六进制,负数用补码
matlab波形没有问题,是一个幅度为1的正弦波
但是
.dat文件是可以被CCS打开的,但是波形严重错误,是类似锯齿一样凌乱的波形
我怀疑是最后一句有问题。好凌乱~不知道怎么才能改,使得正确生成正弦呢?
新人。求大神指教,谢谢^^
你是通过GRAPH查看的吗 还有你的.dat通过CCSload之后存放到哪儿了
通过查看MEMORY的方式看看 是不是跟你生成的数据一样
如果一样我觉得应该是你的Graph设置问题了 感觉像是.DAT的问题,也就是matlab里面编程有问题~我用一个网上下载的正确的DAT文件导入CCS后,CCS显示的图像是正确的。
用下面这个程序就可以了,但是是16位定点格式的,如果是32位的,相应的改一下就可以了。
close all; clear all; clc;
f1=10;f2=100;fs=4000;N=4000;
x = linspace(0,N/fs,N);
y1 = sin(2*pi*f1*x);
y=y1;
figure
plot(x,y) %创建文件sine.dat,可写入
fid=fopen('mysine.dat','w+t');%将文件头写入文件,将生成的y信号写入到文件,格式四位小数
fprintf(fid,'1651 1 0 1 0\n');
t = int16(2^15*y); % if 32-bit fixed-point, int32(2^31*y);
t2 =double(t);
for i=1:length(t2)
fprintf(fid,'0x%04x\n',t2(i)+(t2(i)<0)*2^16); % if 32-bit fixed-point, t2(i)+(t2(i)<0)*2^32);
end
fclose(fid);
aresc 发表于 2015-3-14 20:39
用下面这个程序就可以了,但是是16位定点格式的,如果是32位的,相应的改一下就可以了。
close all; clear ...
谢谢。可是我生成的CCS上的图像还是类似锯齿形的啊。
你的DAT看上去确实比我之前的对劲,可是CCS导入后还是有问题。16,32位都试过了,波形一样类似锯齿一样的。
而且没有负值
求大神帮忙看看 谢谢!
本帖最后由 aresc 于 2015-3-15 18:05 编辑
那可能不接受定点类型的数据格式,我只是按你说的2的补码理解为定点格式的数据。那个文件里最高位为1的就是负值,比如0x8000,等等。
你要搞清楚CCS接受什么格式的数据,浮点还是定点?具体的文本格式是什么样的?比如数值1.0吧,用32为定点表示是0x7FFFFFFF,如果用浮点格式是0x3F800000.或者直接写成1.0在文本文件中。我很久没用CCS,不清楚它需要什么样的数据格式。或者你用CCS存一段1.0的数值到文本文件贴出来看看?
le_pataya 发表于 2015-3-14 10:55
感觉像是.DAT的问题,也就是matlab里面编程有问题~我用一个网上下载的正确的DAT文件导入CCS后,CCS显示的图 ...
在哪里下载的请问
页:
[1]