TMS320LF2407是TI公司主推的一種高性能、低價格DSP處理器,,其處理速度達到30 MIPS,,片內(nèi)處理集成RAM、Flash及定時器外,,還集成了A/D轉(zhuǎn)換器,、PWM控制器及CAN總線控制器等模塊,特別適合于電機,、電源變換等實時要求高的控制系統(tǒng),。但是通常設(shè)計DSP程序的方法是,在DSP的集成開發(fā)環(huán)境CCS中用C語言設(shè)計,,需要花費大量的時間用來編寫和輸入程序代碼,。在 Matlab中用圖形化的方式設(shè)計DSP的程序,能夠縮短產(chǎn)品的開發(fā)時間,。
1 Embedded Target for T1 C2000 DSP介紹
目前,,新版本的Matlab軟件(Matlab7.O)已經(jīng)集成了TI公司C2000、C5000,、C6000系列DSP的開發(fā)工具包,,可在 Matlab/Simulink環(huán)境中用圖形化的方式進行DSP的設(shè)計及仿真驗證。并能將設(shè)計的圖形文件(.mdl)直接轉(zhuǎn)換成C語言程序,。其中 C2000系列的開發(fā)工具是EmbeddedTarget for TI C2000 DSP,。該工具包是TI公司與MathWorks公司共同開發(fā)的產(chǎn)品,在Matlab /Simulink中嵌入了eXpressDSP工具箱,,支持C24x及C28x系列的DSP處理器,。在C24x系列DSP工具箱中,包含DSP處理器中的模/數(shù)轉(zhuǎn)換(ADC),、CAN發(fā)送及接收,、PWM控制等模塊。用戶可以在Matlab中調(diào)用這些圖形化的功能模塊及Simulik中的其他模塊建立數(shù)字信號處理的模型,,并可以對模型進行仿真驗證,,然后生成TMS320C2000的C語言代碼及CCS的工程項目文件,,在CCS中經(jīng)修改、編譯后就可以下載到 DSP目標板中運行,。
2 ADC轉(zhuǎn)換及FIR濾波處理程序的設(shè)計
以下是用Embedded target for TI C2000工具包設(shè)計ADC轉(zhuǎn)換及FIR濾波的步驟,。
步驟1,在新建的Simulink文件(.mdl)中,,放入C2000 Target Preferences中的LF2407 eZdsp功能塊,,用于參數(shù)的初始化設(shè)置。對話框設(shè)置如圖1所示,。其中DSP定時器的時鐘比例因子(Timer Clock Prescaler),,可以選擇I~128,則相應(yīng)的定時器采樣時間為:
式中Timer Period是DSP的最大時鐘計數(shù)周期,,LF2407是16位定點處理器,,所以Timer Period數(shù)是216-1。圖1中設(shè)定的Timer Clock Prescaler數(shù)值是2,,當(dāng)LF2407的工作頻率(CPU Clock Speed)為40MHz時,,由上式計算出的定數(shù)器的采樣時間是0.003 2 S。由于數(shù)據(jù)處理需要占用一定的運行時間,,所以要通過試驗選擇適當(dāng)?shù)亩〞r器采樣時間,。
實現(xiàn)A/D轉(zhuǎn)換的功能塊是C24x ADC,其參數(shù)設(shè)置如圖2所示,。A/D轉(zhuǎn)換通道可以選擇模塊A,、B中的任一個通道,也可以選擇多個通道,,A/D轉(zhuǎn)換的采樣時間設(shè)置為64/80 000,。
步驟2,設(shè)計FIR濾波器,。在Simulink的信號處理工具箱(Signal Processing Bloekset)中,,將濾波器設(shè)計專用工具(FDAToo1)放入文件中,雙擊圖符,,彈出圖3所示的濾波器設(shè)計對話框,。
在圖3中,選擇濾波器類型為FIR低通濾波器,,采樣頻率為6kHz,,低通頻率為1kHz,截至頻率為2 kHz,。先點擊對話框中的Design Filter,,然后再點擊圖3中實現(xiàn)模型(Realize Model)圖標進入模型實現(xiàn)對話框,選擇Over-write generated“filter”block,則在設(shè)計框圖中生成一個名稱為“Filter”的FIR濾波器的功能框圖,,再將原先放入的FDATool 圖標刪除,,將Filter連接到圖中,完成的設(shè)計如圖4所示,。
圖4中添加的增益模塊(Gain)是為了實現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換,。由于ADC轉(zhuǎn)換輸出的是16位整型數(shù)據(jù),而濾波器的輸入需要雙精度浮點數(shù)據(jù),,因此Gain的數(shù)據(jù)類型參數(shù)(Signal datatypes)設(shè)為float(“double”),。Gainl是將浮點數(shù)轉(zhuǎn)換為整型數(shù),因此數(shù)據(jù)類型參數(shù)設(shè)為uint(16),。圖4中添加寄存器 (C24x To Memory)模塊是為了使設(shè)計完整。在生成的C程序中,,增益模塊Gainl的輸出是rth-Gainl,,可被其他應(yīng)用程序調(diào)用。
步驟3,,將圖形文件生成C程序,。在圖4中,運行Simulation菜單下的Configuration Parameters項,,彈出配置對話框,,選擇其中的Real-Time WorkShop項,點擊Build按鈕,,則將圖4的框圖轉(zhuǎn)化為TI C2000DSP的C語言代碼,,并自動調(diào)用CCS2軟件編譯運行該程序。生成的C語言程序包括:中斷向量文件vectors.a(chǎn)sm,、中斷服務(wù)程序 MW_c24xx_csl.C,、ADC轉(zhuǎn)換控制testADC.c、主程序TestADC_main.c等,。
3 修改及完善程序
由Matlab直接生成的程序能夠?qū)崿F(xiàn)ADC轉(zhuǎn)換及數(shù)字濾波功能,,但是由于程序中使用了許多缺省設(shè)置,在運行過程中還存在一些問題,。用上述方法生成的程序中,,中斷處理程序中只對定時器中斷進行處理。當(dāng)由于干擾信號引起其他中斷時,,會造成DSP停機,,因此要在中斷向量定義無效中斷(_nothing),并在中斷響應(yīng)程序中添加中斷服務(wù)程序,。修改后的程序中,,斜體部分是修改的代碼。修改程序如下:
中斷向量文件vectors.a(chǎn)sm:
在ADC轉(zhuǎn)換處理程序中,每次ADC轉(zhuǎn)換結(jié)束后沒有復(fù)位DSP的排序器指針,。雖然程序中設(shè)定的是只進行一個通道的A/D轉(zhuǎn)換,,但結(jié)果卻是16個通道的循環(huán)轉(zhuǎn)換,造成數(shù)字濾波器的輸人數(shù)據(jù)不正確,,因此程序要作修改,,在testadc_c中添加:
TestADC_B.C24xADC=MMREGS[RESULT0]>>6;/*A/D轉(zhuǎn)換結(jié)果右移6位*/< br> MMREGS[ArN2TRL2]=MMREGS[ADCTRL2]l0X4242,;/*復(fù)位排序器指針并清除A/D中斷標志*/
如果需要通過t/o端口輸出結(jié)果,,則可以在testadc_c中定義一個I/o(portl00),然后將FIR濾波后的數(shù)據(jù)rtb-Gainl輸出,,程序如下:
4 試驗結(jié)果及結(jié)論
由上述方法設(shè)計的程序在TMS3201LF2407A處理器上能正常運行,。試驗結(jié)果證明,采用FIR濾波后,,ADC轉(zhuǎn)換的抗干擾能力有了明顯的提高,。用 Matlab快速建立TI DSP模型及直接生成C語言程序的方法,簡化了DSP軟件的開發(fā),。在Embedded target for TI C2000工具箱中還包含其他工具,,如PWM控制、CAN總線控制及通用I/O控制等,。利用這些工具與Simulink中的其他工具相結(jié)合,,能夠完成復(fù)雜功能的DSP程序設(shè)計,并且只需進行少量的修改,,就可以實現(xiàn)功能正確的C語言程序的設(shè)計,,節(jié)省程序的編寫及輸入時間。