我们在学习使用TI的DSP集成开发环境CCS(Code Compose Studio)时,有时特别想在线的看一下内存中的数据到底是个什么样子,或者想看一下它的频谱是个什么样子,如果不知道CCS自带有绘图功能或者知道但不是很会使用,这无疑会使程序调试带来很大的不便。对于新手来说这一功能显得有些"高大上",让很多人感觉它很难使用。今天笔者就来详细的介绍一下如何正确的使用其自带的Graph功能。
为了更好的演示,笔者自己写了一段演示代码,先贴上来。
#include "math.h"
#define PI 3.1415926 //定义圆周率
#define Fs 1000 //定义采样频率 Hz
#define F1 100 //信号频率 Hz
#define F2 20
#define Sample_points 1024 //采样点数
float signal1[Sample_points];
float signal2[Sample_points];
int main(void)
{
int i;
float t;
for(i=0;i
很简单的一段代码,大致意思就是生成了两个不同频率的正弦信号。分别保存在了数组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 Phase,Complex FFT,FFT Watterfall的使用他们都与FFT Magnitude的类似,相信读者在熟练掌握了Signle Time和FFT Magnitude的使用方法后,很快的就能学会使用其它的绘图方法。
笔者使用的CCS版本是6.13,在其它的版本上使用方法与之类似,读者在学习其他版本的Graph功能时,依然可以以此为参考。