原文轉載於:http://blog.csdn.net/hj199404182515/article/details/60467027 非常感謝。
我們在學習使用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);
- }
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功能時,依然可以以此爲參考。