[DSP编程] 【求助】如何用MATLAB生成CCS可用的.dat文件

[复制链接]
3391|6
 楼主 | 2015-3-13 21:08 | 显示全部楼层 |阅读模式
我想用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打开的,但是波形严重错误,是类似锯齿一样凌乱的波形

我怀疑是最后一句有问题。好凌乱~不知道怎么才能改,使得正确生成正弦呢?

新人。求大神指教,谢谢^^
| 2015-3-13 23:35 | 显示全部楼层
你是通过GRAPH查看的吗     还有你的.dat通过CCS  load之后存放到哪儿了
通过查看MEMORY的方式看看    是不是跟你生成的数据一样
如果一样  我觉得应该是你的Graph设置问题了
 楼主 | 2015-3-14 10:55 | 显示全部楼层
感觉像是.DAT的问题,也就是matlab里面编程有问题~我用一个网上下载的正确的DAT文件导入CCS后,CCS显示的图像是正确的。
| 2015-3-14 20:39 | 显示全部楼层
用下面这个程序就可以了,但是是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);
 楼主 | 2015-3-15 11:53 | 显示全部楼层
aresc 发表于 2015-3-14 20:39
用下面这个程序就可以了,但是是16位定点格式的,如果是32位的,相应的改一下就可以了。

close all; clear ...


谢谢。可是我生成的CCS上的图像还是类似锯齿形的啊。
你的DAT看上去确实比我之前的对劲,可是CCS导入后还是有问题。16,32位都试过了,波形一样类似锯齿一样的。

而且没有负值

求大神帮忙看看 谢谢!
| 2015-3-15 18:03 | 显示全部楼层
本帖最后由 aresc 于 2015-3-15 18:05 编辑

那可能不接受定点类型的数据格式,我只是按你说的2的补码理解为定点格式的数据。那个文件里最高位为1的就是负值,比如0x8000,等等。

你要搞清楚CCS接受什么格式的数据,浮点还是定点?具体的文本格式是什么样的?比如数值1.0吧,用32为定点表示是0x7FFFFFFF,如果用浮点格式是0x3F800000.或者直接写成1.0在文本文件中。我很久没用CCS,不清楚它需要什么样的数据格式。或者你用CCS存一段1.0的数值到文本文件贴出来看看?
| 2018-6-27 15:00 | 显示全部楼层
le_pataya 发表于 2015-3-14 10:55
感觉像是.DAT的问题,也就是matlab里面编程有问题~我用一个网上下载的正确的DAT文件导入CCS后,CCS显示的图 ...

在哪里下载的请问
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /5 下一条

快速回复 返回顶部 返回列表