0 引言
信息社會的發(fā)展,在很大程度上取決于信息與信號處理技術(shù)的先進性。數(shù)字信號處理技術(shù)的出現(xiàn)改變了信息與信號處理技術(shù)的整個面貌;而數(shù)字處理器作為數(shù)字信號處理的核心技術(shù),其應(yīng)用已經(jīng)涉及到設(shè)計信號處理的各個領(lǐng)域,成為電子系統(tǒng)的心臟。某光電跟蹤產(chǎn)品設(shè)計了基于TMS320C6201B和ADSP2187L的雙DSP的信息處理平臺,它提高了對信息的識別處理速度,具有實時性好、控制精度高、抗干擾能力強等特點。一般情況下,可利用JTAG口對DSP進行調(diào)試,然而,在整機情況下,這種方式就不太適用了。因而,在本系統(tǒng)中設(shè)計了RS 422接口,大大方便了遠程調(diào)試和整機調(diào)試。
1 RS 422通信設(shè)計
本系統(tǒng)選用Maxim公司提供的Max490ESA作為接口芯片,它具備高速、低功耗等特點。圖1所示為RS422接口原理圖。
該通信設(shè)計的接口程序包括兩個部分:DSP上的通信程序設(shè)計和PC機上的通信程序設(shè)計。
DSP的通信程序設(shè)計主要是調(diào)用INT5和TIMER0中斷實現(xiàn)的。RX信號線掛在TMS320C6201的INT5腳,當6201檢測到下跳時,引發(fā)一個中斷,在中斷程序中,立即將ADSP2187前端的數(shù)據(jù)采集到DSP的片內(nèi),然后開放TIMER0中斷處理程序。中斷程序負責將數(shù)據(jù)發(fā)給PC機。
PC機的RS 422通信程序采用C++Builder編寫,為多線程程序。利用了專用的RS 422通信控件Vcomm32來實現(xiàn)通信。
1.1 DSP上的RS 422通信程序設(shè)計
DSP上的RS 422通信程序是一種有限狀態(tài)機,它利用上層協(xié)議將位流進行傳輸,具體設(shè)計如下:
1.1.1 位流的形成
發(fā)送過程:RS 422是四線制的差分電平通信標準,在本系統(tǒng)中,TMS320C6201B的McBSP1用作通用I/O口,將MeBSP1的7根本來用作同步通信用的數(shù)據(jù)與控制線,現(xiàn)設(shè)置為通用I/O線。
通過將TMS320C6201B的McBSP1接口的DX引腳置高與置低實現(xiàn)發(fā)送一位位的數(shù)據(jù)流,通過讀取RX引腳上的電平信號來接收數(shù)據(jù)位流。位流的速度與PC機上接收與發(fā)送流的速度一致。位流的格式遵循標準異步通信協(xié)議(UART),本系統(tǒng)中,設(shè)定為1位起始位,8位數(shù)據(jù)位,2位停止位。由于TMS320C6201B上沒有帶UART通信口,只能用軟件通過通用I/O引腳模仿UART。位流的節(jié)奏由TMS320C6201B的定時器0定時周期控制。圖2所示為UART通用異步通信協(xié)議。
接收過程:RS 422傳輸線Rx+、Rx-經(jīng)過MAX490ESA422接口芯片后,變成5 V CMOS電平信號Rx。Rx接至TMS320C6201B的兩個地方,一是TMS320C6201B的McBSP1的Rx腳,另外還同時接至TMS320C6201B的INT5腳。接收的過程如下:一旦PC機發(fā)出一個8位數(shù)據(jù),PC機首先要發(fā)送電平為低的起始位,這時將引起Rx腳由高到低的跳變,TMS320C6201B的INT5腳將感受到這一電平的跳變,這將引發(fā)TMS320C6201B的一次電平中斷,用來提示TMS320C6201B,請準備接收PC機上的數(shù)據(jù)。在INT5的中斷處理程序中,首先關(guān)掉INT5腳電平中斷,以防后來還沒有接收完8位的數(shù)據(jù)位流上的電平變化再次引發(fā)不希望出現(xiàn)的中斷,然后退出中斷。TIMER0開始計數(shù)到給定的周期時,引起了TIMER0的定時中斷,TIMER0判斷是否收滿8位,如果沒有,則讀取McBSP1腳上的Rx信號,將其移入到接收緩沖區(qū);如果接收滿了8位,則根據(jù)接收緩沖區(qū)接收到的字的意義以及DSP其他參數(shù)做出處理,當然,收滿8位,TIMER0定時將打開INT5中斷,復(fù)原系統(tǒng)其他狀態(tài),為下一次接收完整數(shù)據(jù)做準備。這樣就完整地接收到了PC機上的一串完整的8位數(shù)據(jù)。
1.1.2 上層通信協(xié)議
位流形成后必須能識別出位流中包含的意義,或者建立一種DSP與PC之間的通信協(xié)議或通信狀態(tài)機,確保DSP能夠識別出PC機發(fā)出的命令字,同時PC機也能正確接收包含著特別含義的位流。
該通信協(xié)議要實現(xiàn)以下功能:
(1)確保DSP與PC機能正確地握手。當握手不成功時,要有相應(yīng)的錯誤處理機制;當握手不成功的次數(shù)太多時,必須停止握手,提示操作人員做相應(yīng)的處理。
(2)在握手成功后,DSP能夠根據(jù)PC發(fā)出的命令,做出相應(yīng)的響應(yīng)。
(3)協(xié)議應(yīng)該簡單,不太復(fù)雜,擴展容易。
為了達到以上設(shè)計目的,本系統(tǒng)在DSP上設(shè)計了如圖3所示的RS 422通信狀態(tài)機。
其基本過程是:當DSP啟動后,進入主程序,首先將通信狀態(tài)機置于準備接收PC機握手碼狀態(tài),一旦收到PC機發(fā)出的8位數(shù)據(jù),判斷是否是8位握手碼,如果是則將通信狀態(tài)機置于發(fā)送握手碼狀態(tài),如果握手碼接收錯誤,則發(fā)0x55,否則發(fā)0xAA。如果是正確的握手碼,則將通信狀態(tài)機置于準備接收PC機命令態(tài)。下一步,通信狀態(tài)機等待接收PC機發(fā)出的命令,一旦收到8位數(shù)據(jù),則認為是PC機發(fā)出的命令,并根據(jù)PC發(fā)出的命令,將通信狀態(tài)機調(diào)整到PC機要求的工作狀態(tài),然后執(zhí)行PC機要求的操作,如傳送AD原始數(shù)據(jù)與相關(guān)結(jié)果,等待接受PC機發(fā)出2187的程序數(shù)據(jù)等。當執(zhí)行完P(guān)C機的命令,調(diào)整通信狀態(tài)機回到初始等待PC發(fā)出握手測試碼狀態(tài),為新一輪的通信準備好條件。
1.2 PC機上的RS 422通信與數(shù)據(jù)處理
PC機上的RS 422通信程序也需要遵循上面的所列出的通信協(xié)議。下面將詳細討論PC機上的RS 422通信與數(shù)據(jù)處理程序。PC機上的RS 422通信與數(shù)據(jù)處理程序主要完成以下功能:
(1)將ADSP2187的程序文件分解,裝入緩沖區(qū)內(nèi),等待RS 422接口發(fā)出。
(2)將TMS320C6201B的程序文件分解,裝入緩沖區(qū)內(nèi),等待RS 422接口發(fā)出。
(3)接收DSP發(fā)出的相關(guān)運行結(jié)果,顯示、存貯、打印。
相對于DSP上的軟件來講,PC機上的軟件要相對復(fù)雜些。目前本系統(tǒng)用三個PC機上的軟件分別實現(xiàn)它。
PC機上的軟件用C++Builder5.0軟件編寫,RS 422通信模塊用Comm控件實現(xiàn),使用比較方便,下面分別介紹說明PC機上這三個功能軟件的結(jié)構(gòu)與實現(xiàn)。
1.2.1 ADSP2187裝入程序
由于CCS本身存在無法裝入大文件的bug,因此,在開發(fā)階段,實現(xiàn)裝入任意長度的文件是必須的。利用PC機上的C++Builder程序開發(fā)工具,首先必須能夠?qū)DSP2187的原始程序文件分解,形成CCS本身可用的數(shù)據(jù)格式。將分析出的數(shù)據(jù)放入緩沖區(qū)Buffer內(nèi),然后通過RS 422接口發(fā)送到TMS320C6201的片內(nèi)指定的單元內(nèi)。當發(fā)送完畢后,TMS320C6201內(nèi)部Boot2187函數(shù)將負責將ADSP2187數(shù)據(jù)裝到ADSP2187片內(nèi),并啟動它。在TMS320C6201B內(nèi),幾個簡單的循環(huán)語句,即可以將得到的數(shù)據(jù)發(fā)送到ADSP2187片內(nèi)。下面是程序裝載說明:
(1)TMS320C6201裝載程序流程
IDMA_IAL=0x80000000;
IDMA_IAL=程序段首地址:PM區(qū)地址不變,DM區(qū)首地址+0X4000;
讀數(shù)據(jù)使用IRD,寫數(shù)據(jù)使用IDMA_IWR;
程序區(qū)為24位字長,讀寫均為先高16位再低8位數(shù)據(jù);
(2)關(guān)于程序段地址為0X0000開始的程序段
TMS320C6201不能從0地址開始裝程序,而需要從0X0001地址開始裝程序;
0地址處的指令不裝;
例如:上面的0x0000開始的程序段裝入為:
(3)TMS320C6201啟動ADSP2187程序運行的操作
圖4所示為ADSP2187程序文件分解的數(shù)據(jù)格式及其意義。
1.2.2 TMS320C6201裝入程序
TMS320C6201B的裝入與ADSP2187程序的裝入基本一致,不同的是TMS320C6201B的程序獲取方法不同,TMS320C6201B的程序源文件是在Simulator下將TMS320C6201B的程序區(qū)導出而形成的源程序文件。由于無法將大文件裝入到TMS320C6201B片內(nèi),希望通過RS 422接口,將數(shù)據(jù)發(fā)至TMS320C6201B的SBSRAM內(nèi)或其他緩沖單元。作為燒寫FLASH的準備。
PC機的分析程序最后將TMS320C6201B的數(shù)據(jù)整理成如圖5所示的格式,再將這些代碼裝入到SBSRAM中,最后燒錄到FLASHRAM中。
1.2.3 接收DSP發(fā)出的相關(guān)運行結(jié)果
這部分程序的作用是向DSP發(fā)出獲取AD前端數(shù)據(jù)與相關(guān)計算結(jié)果的命令,然后將相關(guān)計算結(jié)果與原始數(shù)據(jù)上傳到PC機上,PC機將數(shù)據(jù)存貯在緩沖區(qū)內(nèi),將之顯示、打印、存貯成規(guī)范化的文件。
2 結(jié)論
內(nèi)外場試驗表明,某光電跟蹤產(chǎn)品雙DSP系統(tǒng)由于在設(shè)計中采用了RS 422接口,大大方便了遠程調(diào)試和整機調(diào)試,避免了內(nèi)外場測試及調(diào)試必須拆除外殼體的問題,大大節(jié)約了調(diào)試及測試時間。另外,該項技術(shù)不僅在某光電跟蹤產(chǎn)品雙DSP系統(tǒng)中得到可靠驗證,目前還被推廣應(yīng)用到其他嵌入式系統(tǒng)中。