DSP

关于CCS软件的Graph功能使用详解

2019-07-13 19:28发布

原文转载于:http://blog.csdn.net/hj199404182515/article/details/60467027   非常感谢。
我们在学习使用TI的DSP集成开发环境CCS(Code Compose Studio)时,有时特别想在线的看一下内存中的数据到底是个什么样子,或者想看一下它的频谱是个什么样子,如果不知道CCS自带有绘图功能或者知道但不是很会使用,这无疑会使程序调试带来很大的不便。对于新手来说这一功能显得有些"高大上",让很多人感觉它很难使用。今天笔者就来详细的介绍一下如何正确的使用其自带的Graph功能。     为了更好的演示,笔者自己写了一段演示代码,先贴上来。[cpp] view plain copy print?
  1. #include "math.h"  
  2.   
  3. #define PI                           3.1415926      //定义圆周率  
  4. #define Fs                           1000                //定义采样频率 Hz  
  5. #define F1                          100                  //信号频率  Hz  
  6. #define F2                          20  
  7. #define Sample_points    1024               //采样点数  
  8.   
  9. float signal1[Sample_points];  
  10. float signal2[Sample_points];  
  11.   
  12. int main(void)  
  13. {  
  14.     int i;  
  15.     float t;  
  16.   
  17.     for(i=0;i
  18.     {  
  19.         t = i*1.0/Fs;  
  20.         signal1[i] = sin(2*PI*F1*t);  
  21.         signal2[i] = sin(2*PI*F2*t);  
  22.     }  
  23.       
  24.     while(1);  
  25. }  
    很简单的一段代码,大致意思就是生成了两个不同频率的正弦信号。分别保存在了数组signal1和signal2中。编译该程序,然后连上仿真器连上相应的DSP芯片,笔者用的是TMS320C6748,连上后让程序运行到while(1);然后停止运行。如下图所示
Single Time使用演示点击菜单栏Tools->Graph->Single Time,如图所示
点开后出现如下的对话窗口:
下面对里面的每一项参数进行一下说明Acquisition Buffer Size:表示通过仿真器从DSP的内存中读取的数据的大小,由于程序里用于存储信号的数组大小是1024,这里我们设置成1024,当然也可以设置成比他更小的值,这样就只能看到信号的部分图像。Dsp Data Type:表示你的数据是什么类型的,它一共有如下几种类型可选如图所示:
演示程序中的数组是float型的所以选择32 bit floating point。Index Increment:索引增量,表示每个数据点序号的相差值,这里我们是逐点显示的,因此默认设置为1,如果想要每隔一个点显示一个那么你就应该设置成2。Q_Value:Q值,一般这不常用,默认就行。Sampling Rate Hz:以Hz为单位的采样率,在这里我们的采样率是1K,因此设置成1000。Start Address:开始地址,表示你要显示的数组的首地址,我们现在想要看的是数组signal1因此,设置成signal1。Auto Scale:自动调整显示比例使其适应整个显示窗口。  这里我们开启。Axis Display :显示坐标轴,这里我们开启。Data Plot Style:数据绘制类型,有Line和Bar两种,这里我们选择Line。Display Data Size:显示数据大小,表示要将多少个点的数据进行显示,注意这个值一定要小于等于Acquisition Buffer Size,这里我们设置成1024。Grid Style:网格类型,有 No Grid, Minor Grid, Major Grid三种选项,这里我们选择No Grid。Magnitude Display Scale:幅值显示类型,有Linear(线性的)Logarithmic(对数的),这里我们选择Linear。Time Display Unit:显示时间的单位有sample, s, ms, us几种可选,其中sample表示显示的点的序号,这里我们选择ms。Use Dc Value For Graph:是否使用Dc值,一般不常用,默认就行。整个的设置如下:
设置完成后,点击OK。出现如下的窗口。
可以通过窗口右上方的菜单对图像进行调整,比如我想放大,这是可以点击带+号的放大镜。如下图所示。

Dual Time的使用方法与Signle Time相比,除了能够同时显示两个数组的图像,其它的都一样。FFT Magnitude使用演示点击菜单栏Tools->Graph->FFT Magnitude,如图所示

里面有些参数之前已经介绍,这里不再重复,这里只介绍没有的。Signal Type :信号类型,有Real,Complex这两种,由于演示程序里的是实数据,因此我们选择Real,如果你的数据类型是Complex,那么请选择Complex,此时会多出一些参数,因为我们平时用的大多数是实数据,因此在此不介绍Complex的。Frequency Display Unit :频率显示单位,有Hz,KHz,MHz三种,这里我们选择Hz。FFT Order :FFT的阶数,由它来决定FFT Frame Size,例如 FFT Order 设置为5 那么FFT Frame Size 就为32 = 2^5。这里我们设置成10,那么FFT Frame Size就是1024。FFT  Frame Size :FFT一帧变换点数,它由FFT Order决定。FFT Window Function :FFT窗函数,就是选择做FFT变换时采用什么窗函数,有Rectangular(矩形窗,相当于没有加窗),Bartlett,Blackman,Hamming,Hanning,至于选择什么窗函数根据实际的需求来决定到底采用哪一个窗函数(不知道这些窗函数是什么的,请阅读信号与系统方面的书籍),这里我们选择的是Rectanguar,也就是不加窗。设置好的参数如下图所示。
点击OK,出现如下所示窗口。
峰值点正好在100Hz处。
        关于FFT Magnitude PhaseComplex FFTFFT Watterfall的使用他们都与FFT Magnitude的类似,相信读者在熟练掌握了Signle TimeFFT Magnitude的使用方法后,很快的就能学会使用其它的绘图方法。
笔者使用的CCS版本是6.13,在其它的版本上使用方法与之类似,读者在学习其他版本的Graph功能时,依然可以以此为参考。