【解析新特性】300W单路输出工业电源>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 用CCS对一个信号进行FFT频谱分析后,怎么DA转换输出到示波器上观察

共18条 1/2 1 2 跳转至

用CCS对一个信号进行FFT频谱分析后,怎么DA转换输出到示波器上观察

菜鸟
2014-05-10 22:09:08    评分
用CCS对一个信号进行FFT频谱分析后,怎么DA转换输出到示波器上观察。

专家
2014-05-10 23:15:22    评分
2楼

DSP 好高级的一个东西啊~~

暂时还不会用啊~~


高工
2014-05-11 11:25:09    评分
3楼
是要把CCS里面算好的FFT频谱图通过DA输出显示在示波器上吗? 示波器接收的都是时域信号,然后再通过Math功能里面的FFT才能显示FFT的 所以可行的办法是把信号通过DA输出到示波器上,由示波器做FFT

菜鸟
2014-05-11 11:34:08    评分
4楼
就是我用CCS仿真出了频谱图,怎么样在普通示波器上观察它呢。

高工
2014-05-11 11:36:09    评分
5楼
没有办法直接复制过去的,示波器必须先把信号本身拿到,再算FFT

菜鸟
2014-05-11 11:41:17    评分
6楼
不是说可以对DSP芯片的输出的结果做DA变换,然后观察吗

菜鸟
2014-05-11 11:45:32    评分
7楼
我想再请教一个问题,怎么对电脑里一个现成的.dat文件用CCS做FFT,用C语言?只看到了那种在C语言里生成一个波形再变换的,不会从电脑里导入的这种。

高工
2014-05-11 11:47:25    评分
8楼
没错,只要你的板子有DA芯片,就可以把某个信号DA输出,然后用示波器观测,或者输出到其它的电路里面 当然这个输出的信号一般在程序里是某个变量 如果你一定要把FFT的结果输出,那要把各个频率弄成一个输出,各个频率的幅值弄成一个数组,然后分别DA输出,在示波器上用XY图画出来;这样做显然没有直接把要算fft的信号通过DA输出到示波器上然后直接做FFT方便

菜鸟
2014-05-11 11:58:13    评分
9楼
#include "math.h" #define sample_1 256 #define signal_1_f 60 #define signal_2_f 200 #define signal_sample_f 512 #define pi 3.1415926 int input[sample_1]; float fwaver[sample_1],fwavei[sample_1],w[sample_1]; float sin_tab[sample_1]; float cos_tab[sample_1]; void init_fft_tab(); void input_data(); void fft(float datar[sample_1],float datai[sample_1]); void main() {   int i;   init_fft_tab();   input_data();   for (i=0;i<sample_1;i++)    {      fwaver[i]=input[i]; fwavei[i]=0.0f; w[i]=0.0f; } fft(fwaver,fwavei); while(1);  }  void init_fft_tab()   {    float wt1;    float wt2;    int i;    for (i=0;i<sample_1;i++)     { wt1=2*pi*i*signal_1_f; wt1=wt1/signal_sample_f; wt2=2*pi*i*signal_2_f; wt2=wt2/signal_sample_f; input[i]=(cos(wt1)+cos(wt2))/2*32768; }   }   void input_data()    {     int i; for(i=0;i<sample_1;i++) {  sin_tab[i]=sin(2*pi*i/sample_1);  cos_tab[i]=cos(2*pi*i/sample_1); } }   void fft(float datar[sample_1],float datai[sample_1]) {  int x0,x1,x2,x3,x4,x5,x6,x7,xx;  int i,j,k,b,p,L;  float TR,TI,temp;  for(i=0;i<sample_1;i++)  {   x0=x1=x2=x3=x4=x5=x6=0;   x0=i&0x01;x1=(i/2)&0x01;x2=(i/4)&0x01;x3=(i/8)&0x01;   x4=(i/16)&0x01;x5=(i/32)&0x01;x6=(i/64)&0x01;x7=(i/128)&0x01;   xx=x0*128+x1*64+x2*32+x3*16+x4*8+x5*4+x6*2+x7;   datai[xx]=datar[i];  }  for(i=0;i<sample_1;i++)   {     datar[i]=datai[i];datai[i]=0; }  for(L=1;L<=8;L++)   {    b=1;i=L-1; while(i>0) { b=b*2;i--; } for(j=0;j<=b-1;j++) { p=1;i=8-L; while(i>0)  {  p=p*2;i--;  } p=p*j;         for(k=j;k<256;k=k+2*b) {  TR=datar[k];TI=datai[k];temp=datar[k+b];  datar[k]=datar[k]+datar[k+b]*cos_tab[p]+datai[k+b]*sin_tab[p];  datai[k]=datai[k]-datar[k+b]*sin_tab[p]+datai[k+b]*cos_tab[p];  datar[k+b]=TR-datar[k+b]*cos_tab[p]-datai[k+b]*sin_tab[p];  datai[k+b]=TI+temp*sin_tab[p]-datai[k+b]*cos_tab[p];    }  } } for(i=0;i<sample_1/2;i++) { w[i]=sqrt(datar[i]*datar[i]+datai[i]*datai[i]); } } -f 0 -w -stack 500 -sysstack 500 -l rts55.lib MEMORY  {    DARAM: o=0x100,  l=0x7f00    VECT:o=0x8000, l=0x100    DARAM2:o=0x8100,l=0x7f00    SARAM: o=0x10000,l=0x30000    SDRAM:o=0x40000,l=0x3e0000   }  SECTIONS  {    .text: {}>DARAM     .vectors: {}>VECT    .trcinit:{}>DARAM    .gblinit:{}>DARAM    .frt:{}>DARAM     .cinit:{}>DARAM    .pinit:{}>DARAM     .sysinit:{}>DARAM2    .far:{}>DARAM2    .const:{}>DARAM2    .switch:{}>DARAM2    .sysmem:{}>DARAM2    .cio:{}>DARAM2    .MEM$obj:{}>DARAM2    .sysheap:{}>DARAM2    .sysstack:{}>DARAM2    .stack:{}>DARAM2    .input:{}>DARAM2    .fftcode:{}>DARAM2    } 这个是一个fft.c,用的是C5510,CCS仿真已经可以了。请问怎么才能输出到示波器呢?如果您有时间,想请你帮我一下。

菜鸟
2014-05-11 12:03:12    评分
10楼
我现在的任务是要对一个现有的.dat文件用CCS进行FFT频谱分析,然后输出到示波器上观察。如果您会的话,我想多请教一下,真的需要帮助。波形如图。

共18条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]