摘要:針對目前DSP的算法開發(fā)主要依賴手工編寫C代碼,不但工作量大,,而且程序的下載依賴于專門的昂貴的仿真器的問題,,在此提出了基于Matlab/Simulink環(huán)境的DSP算法開發(fā),并利用串口通信實現(xiàn)程序下裁的綜合方案,。該方案能很好地利用Matlab現(xiàn)有的功能模塊,大大降低了DSP的算法開發(fā)難度,,利用RTW技術(shù),,可將算法自動生成C代碼。利用串口通信下載調(diào)試程序,,方便有效,,節(jié)約了系統(tǒng)開發(fā)的成本。經(jīng)實驗驗證,,利用該方案縮短了算法開發(fā)的周期,,結(jié)果可靠,成本低,。
關(guān)鍵詞:DSP,;串口; RTW,;Simulink
0 引言
數(shù)字信號處理器(Digital Signal Processing,,DSP)是一項成熟的數(shù)字處理技術(shù)。它具有速度快,、精度高,、抗干擾能力強、尺寸小,、性能穩(wěn)定等優(yōu)點,,特別適合處理復(fù)雜的控制算法。目前傳統(tǒng)的DSP功能開發(fā)方法,,是利用匯編語言或C/C++語言進行DSP功能開發(fā),,具有周期長,工作量大,,調(diào)試復(fù)雜等缺點,,不利于算法驗證和產(chǎn)品快速開發(fā)。而且,程序下載所依賴的仿真器價格一般比較昂貴,,也增加了產(chǎn)品開發(fā)的成本,。
本文利用TMS320F2812芯片自主開發(fā)了硬件平臺,提出了在Matlab/Simulink環(huán)境下,,搭建算法模型并自動生成C代碼,,并通過串口下載至DSP目標板的快速開發(fā)方案。
1 總體方案介紹
本文自主開發(fā)的硬件平臺是以TMS320F2812作為核心處理器,,開發(fā)了串口通信,、正交編碼、PWM輸出和啟動模式跳線等功能,?;贛atlab /Simulink環(huán)境的DSP快速開發(fā)方法,首先利用了自主開發(fā)的軟件在DSP硬件,、Code Composer Studio開發(fā)環(huán)境(CCS)和Matlab軟件之間建立連接,,然后在Simulink環(huán)境下,建立運動控制算法模型,。在該建模過程中,,用戶可以像操作Matlab變量一樣操作DSP的存儲器和寄存器。模型搭建完成后,,再利用RTW技術(shù),,將模型自動生成對應(yīng)的C/C++代碼,該代碼能夠被CCS集成開發(fā)環(huán)境支持的,,經(jīng)過CCS編譯后生成可執(zhí)行代碼,,最后利用DSP的串口將可執(zhí)行代碼下載到DSP的儲存器中運行。該過程的流程圖如圖1所示,。
在Matlab環(huán)境下對DSP進行開發(fā),,不僅可以方便地利用Matlab現(xiàn)有的數(shù)學(xué)工具箱來完成復(fù)雜算法的設(shè)計,而且將所有操作統(tǒng)一為Matlab命令流操作,,大大降低了設(shè)計人員需要掌握不同軟件的難度,。
2 Matlab建模
在SimuIink環(huán)境下,使用工具箱中與DSP相關(guān)的庫,,將需要模塊拖至模型窗口,,建立目標模型,該過程與普通的Simulink建模過程相似,。特別需要說明的是幾類重要的模塊,。Target模塊預(yù)定義了DSP的所有基本硬件信息,比如主頻,,儲存器的分配,,是每個模型都必須有的模塊。該模塊需要放置在模型的頂層,沒有輸入輸出設(shè)置,。外設(shè)模塊包含了DSP所有功能外設(shè),,包括I/O口、PWM波形生成器,、計時器,、QEP正交編碼功能等。算法模塊庫包含了DSP常用的算法模型,,比如PID控制器,。這些算法庫都是支持IQrnath格式,是一種將浮點運算轉(zhuǎn)化為定點運算的功能,,可以提高DSP進行浮點運算的效率,。模型建立完成后,利用RTW功能編譯后就能生成與該模型對應(yīng)的C/C++代碼,,并生成相應(yīng)的Project文件,。使用CCS集成開發(fā)環(huán)境,對該代碼編譯,,即生成可執(zhí)行文件,為串口下載程序做好準備,。
3 串口下載
實現(xiàn)基于串口實現(xiàn)程序下載的功能,,是利用了Matlab的串口通信指令和在DSP中的一個引導(dǎo)的函數(shù)。
3.1 引導(dǎo)函數(shù)
在F2812的ROM中編寫引導(dǎo)函數(shù),,該函數(shù)是在DSP上電或重啟時執(zhí)行,。它是用于將執(zhí)行代碼從外部源傳輸?shù)絻?nèi)存儲器中;從而允許代碼存儲在外部的慢速而不易丟失的存儲器中,,然后引導(dǎo)至DSP內(nèi)部的快速存儲器中執(zhí)行,。該引導(dǎo)函數(shù)提供了多種引導(dǎo)的方式,以適應(yīng)不同的系統(tǒng)要求,。不同的模式是根據(jù)GPIO引腳的信號來決定的,,對應(yīng)關(guān)系見表1。
本文是使用了SCI引導(dǎo)模式,,通過串口將可執(zhí)行代碼傳送至DSP內(nèi)部來執(zhí)行,。所以DSP硬件的引腳必須有對應(yīng)的信號輸入。
3.2 串口通信
Matlab中有支持串口通信的對象,,使用該對象,,可以方便的實現(xiàn)上位機和下位機的串口通訊相關(guān)的所有事件,比如設(shè)置參數(shù)(波特率,、數(shù)據(jù)位,、停止位等),發(fā)送/接收數(shù)據(jù),中斷等,。在本文中,,使用Matlab的串口功能的最基本流程如下:
3.3 程序下載步驟
在上位機編寫串口通信函數(shù)后,就可以利用串口將可執(zhí)行代碼下載至DSP目標板運行,。按照以下步驟完成:
(1)數(shù)據(jù)轉(zhuǎn)換,。引導(dǎo)函數(shù)對于流入的數(shù)據(jù)有相應(yīng)的格式規(guī)定。經(jīng)過CCS編譯的文件必須先進行格式轉(zhuǎn)化才能被引導(dǎo)函數(shù)接收,。該過程可以使用TI公司免費提供的hex2000工具完成,。
(2)硬件設(shè)置。將DSP硬件設(shè)置為SCI引導(dǎo)模式,。
(3)建立串口通信,。將轉(zhuǎn)化后的數(shù)據(jù)流保存為Matlab的變量形式,按照前面描述的串口通訊辦法,,將變量中的數(shù)據(jù)傳送至DSP,。
(4)程序執(zhí)行。
4 實驗驗證
為了驗證本方案的可靠性,,本文設(shè)計了一個串口控制電機調(diào)速的實驗,。該實驗的內(nèi)容是:上位機利用串口來發(fā)送速度指令,對電機的轉(zhuǎn)速進行PID控制,。其中,,對電機的驅(qū)動方式采用PWM驅(qū)動方式,設(shè)置PWM的周期寄存器值是64 000個計數(shù)周期,。該實驗硬件連接如圖2所示,,DSP與PC機之間以串口連接。上位機建立控制模型如圖3所示,。
本文所使用的DSP主頻是150MHz,,根據(jù)時鐘分頻后換算的結(jié)果,實際的PWM波的周期約是850μs,,設(shè)置上位機發(fā)送指令為75%的最大轉(zhuǎn)速,,則對應(yīng)的PWM的占空比為75%,其中高電平的實際長度約為640 μs,,這與用示波器觀察到的圖4是一致的,,因此,本文提出的DSP功能開發(fā)方案是可靠的,。
5 結(jié)語
本文提出了基于Matlab/Simulink環(huán)境的DSP算法開發(fā),,并利用串口實現(xiàn)程序下載的快速開發(fā)方案。該方案很好地利用了Matlab強大的科學(xué)計算和可視化圖形開發(fā)功能,,縮短了DSP算法的開發(fā)周期,,降低了DSP編程的工作量,,節(jié)約了硬件成本。最后,,在本文自主設(shè)計的硬件平臺上進行驗證,,結(jié)果表明該方案是可行有效的。