裝載自:
http://blog.csdn.net/HJ199404182515/article/details/60467027?locationNum=5&fps=1
我們在學習使用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<Sample_points;i++)
- {
- t = i*1.0/Fs;
- signal1[i] = sin(2*PI*F1*t);
- signal2[i] = sin(2*PI*F2*t);
- }
- while(1);
- }
很簡單的一段代碼,大致意思就是生成了兩個不同頻率的正弦信號。分別保存在了數組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功能時,依然可以以此為參考。