(西北工業(yè)大學(xué), 陜西 西安 710072)
摘 要:針對(duì)某型無人機(jī)導(dǎo)航/飛控聯(lián)機(jī)調(diào)試時(shí)多種通信接口的需求,采用DSP處理器、雙口RAM和工控PC機(jī)的ISA總線來完成CAN,RS 422,RS 485,TTL232/RS 232等多總線接口電路的設(shè)計(jì),其結(jié)構(gòu)簡(jiǎn)單、實(shí)用性強(qiáng)。可方便無人機(jī)飛控系統(tǒng)的調(diào)試和仿真,且可廣泛應(yīng)用到多總線的工控系統(tǒng)中。
關(guān)鍵詞: 無人機(jī); DSP; ISA; CAN總線
中圖法分類號(hào): TP311文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 1001 3695(2006)08 0209 03
Design of Multi bus Card for Based on TMS320F2812 DSP
JIA Wei, YAN Jian guo, QU Yao hong, GAO Jian yao
(Northwestern Polytechnical University, Xi’ an Shanxi 710072, China)
Abstract: In order to meeting some UAV’ s flight controller’ s communication,digital signal processor TMS320F2812,dual port RAM,bus driver chip and industrial PC’ s ISA Bus are introduced in the design of multi bus interface circuit. The design is simple and applied which is not only convenient for testing UAV’ s flight controller and hardware in loop emulation,but also fit for industrial control system with multi bus.
Key words: UAV; DSP; ISA; CAN bus
隨著無人機(jī)技術(shù)的迅猛發(fā)展,低成本、高可靠性、多功能結(jié)構(gòu)的導(dǎo)航/控制系統(tǒng)已成為當(dāng)前研究的熱點(diǎn)之一[1]。為了減小開發(fā)風(fēng)險(xiǎn),降低設(shè)計(jì)成本,搭建多種總線的地面仿真和測(cè)試平臺(tái)是非常必要的。目前,無人機(jī)導(dǎo)航/飛控系統(tǒng)的GPS模塊多采用RS 232總線結(jié)構(gòu),無線電鏈路和任務(wù)管理采用RS 422/RS 485總線結(jié)構(gòu)[2,3],而在閉環(huán)仿真實(shí)驗(yàn)及故障檢測(cè)中,通常采用CAN總線和RS 232總線結(jié)構(gòu)。另一方面,為了便于調(diào)試,通常需要在工控PC機(jī)上實(shí)現(xiàn)這些總線接口。然而目前采用的通信接口卡大都存在功能單一的缺點(diǎn),盡管可以利用PC機(jī)串口通過轉(zhuǎn)接線來實(shí)現(xiàn)總線接口的轉(zhuǎn)換,但PC機(jī)的串口是有限的,往往滿足不了上述要求。為了適應(yīng)實(shí)際當(dāng)中多種總線應(yīng)用的變化,縮短開發(fā)周期,本文主要研究了基于ISA總線接口卡的開發(fā)。利用DSP器件TMS320F2812和雙口RAM器件IDT70V27以及相應(yīng)的總線驅(qū)動(dòng)芯片,以簡(jiǎn)潔的電路實(shí)現(xiàn)了多串行總線到ISA總線的通信轉(zhuǎn)換。
1 硬件原理設(shè)計(jì)
硬件設(shè)計(jì)主要分兩部分:一是板上處理器如何實(shí)現(xiàn)多種串行總線的連接;二是板上處理器與SA總線如何實(shí)現(xiàn)橋接。前者在采用含多串口的處理器(F2812)的同時(shí),利用相應(yīng)器件進(jìn)行串口擴(kuò)展,后者一般采用多端口RAM進(jìn)行高速數(shù)據(jù)傳輸。
由于TI公司的DSP器件TMS320F2812(F2812)具有150MHz的工作頻率和內(nèi)部128KB Flash和豐富的串行口(包括CAN,McBSP,SPI和2SCI)[4],因此以該DSP為核心,很容易實(shí)現(xiàn)多串行總線的連接。采用3.3V供電的 RS 485/ RS 422驅(qū)動(dòng)芯片MAX3490分別與F2812的兩個(gè)SCI相連RS 485/RS 422通信;通過MAX3111與SPI相連,擴(kuò)展了通用異步串行接口(UART),可實(shí)現(xiàn)RS 232 和RS 422復(fù)用的總線[6];CAN總線接口通過SN65HVD232來實(shí)現(xiàn)。另外,為了保證板卡的司令部F2812的安全,需要進(jìn)行電路隔離:①在F2812各對(duì)外串行接口中進(jìn)行光電隔離。②進(jìn)行電源隔離。串口隔離采用高頻光隔6N137實(shí)現(xiàn),由于其上限頻率達(dá)10MHz,滿足上述各總線的通信速率要求;電源隔離采用TI公司的隔離式 DC\\DC 模塊DCR010503P對(duì)總線驅(qū)動(dòng)芯片進(jìn)行供電。
為了滿足多串口通信帶來的數(shù)據(jù)負(fù)荷,F(xiàn)2812與ISA總線通過IDT公司的雙口RAMIDT70V27完成數(shù)據(jù)交換。由于IDT70V27具有+3.3V和+5V電壓的兼容性,所以可以直接與F2812和ISA總線相連,且其容量大、讀寫時(shí)間短,滿足大量數(shù)據(jù)的高速傳輸。基于以上設(shè)計(jì),多種總線的ISA接口卡原理框圖如圖1所示。
2 電路實(shí)現(xiàn)
2.1 ISA總線、DSP和雙口RAM間的接口
PC機(jī)對(duì)接口的尋址有兩種方法:①將雙口RAM當(dāng)成外部設(shè)備,使用端口I/O指令進(jìn)行訪問,該方法一次只能傳送一個(gè)字節(jié)或字,因而傳送速度較慢;②內(nèi)存映像法,將雙口RAM地址配置于PC機(jī)主存儲(chǔ)器的高端(一般為C0000H DFFFFH),以使PC機(jī)像訪問主存儲(chǔ)器一樣訪問雙口RAM,同時(shí)使所有能夠訪問主存儲(chǔ)器的指令也能以同樣的方式訪問雙口RAM。內(nèi)存映像法能以字符塊為單位進(jìn)行傳送,因而可實(shí)現(xiàn)快速訪問雙口RAM。因此這里采用存儲(chǔ)器內(nèi)存映射的尋址方式。
雙口RAM存儲(chǔ)器IDT70V27具有32KB的尋址空間,其特點(diǎn)是存儲(chǔ)數(shù)據(jù)共享。但是,兩個(gè)獨(dú)立的CPU或控制器同時(shí)訪問雙口RAM的同一存儲(chǔ)單元?jiǎng)荼卦斐蓴?shù)據(jù)訪問失真。為了防止沖突的發(fā)生,就必須存在訪問仲裁控制。IDT70V27利用BUSY引腳信號(hào)提供的內(nèi)部硬件判優(yōu)的方式,當(dāng)兩端口同時(shí)訪問同一地址單元時(shí),由片內(nèi)電路根據(jù)兩邊的地址,片選讀寫信號(hào)到達(dá)的先后順序,裁決哪個(gè)端口有使用權(quán)。BUSY信號(hào)可直接接至支持插入等待時(shí)序引腳;為了防止選擇不當(dāng)引起地址沖突而導(dǎo)致死機(jī),用比較器選擇開關(guān)組成了開關(guān)式可選端口的地址譯碼電路,通過切換開關(guān)狀態(tài)來改變分配給IDT70V27的地址空間,以避免發(fā)生沖突。
ISA總線共有20條地址線,其中A0~A14接IDT70V27的A0L~A14L, A15~A19接74LS686的P0~P4, ALE接P7。74LS686的Q0~Q4接了一個(gè)多位開關(guān),Q6和Q7都置1。74LS686的輸出信號(hào)作為IDT70V27的左片選信號(hào)。因此,IDT70V27的地址分配在C0000H~DFFFFH之間。由多位開關(guān)的通斷來決定置1還是置0,實(shí)現(xiàn)地址范圍的切換。
DSP側(cè),地址線的低15線直接與雙口RAM另一側(cè)的地址線相連,片選信號(hào)Zone6、狀態(tài)線和讀寫線分別與雙口RAM的片選線、忙信號(hào)線和讀寫線直接相連,三者的接口電路如圖2所示。
2.2 隔離電路和各總線收發(fā)接口設(shè)計(jì)
為了保證核心器件F2812的安全,在其引出的各個(gè)總線上加隔離是非常必要的。光隔6N137的最高工作頻率是10MHz。該ISA插卡上各串行通信的接口中,波特率最高的是CAN總線,其最高波特率為1MHz,所以采用光隔6N137可以滿足設(shè)計(jì)的要求。板卡除CAN總線外,其他總線均由UART通用異步串行接口與相應(yīng)驅(qū)動(dòng)芯片相連接構(gòu)成,而CAN總線在結(jié)構(gòu)上與UART相同,所以隔離電路的設(shè)計(jì)基本相同;另外需要進(jìn)行電源隔離,這里主要采用TI公司的隔離DC\\DC模塊DCR010503P進(jìn)行電源隔離,DCR010503P是貼片式封裝,節(jié)省電路板空間,其接口電路如圖3所示。
2.3 串口擴(kuò)展電路的設(shè)計(jì)
MAX3111芯片可以實(shí)現(xiàn)SPI至UART的轉(zhuǎn)換,且內(nèi)部具有發(fā)送和接收的雙向FIFO緩存,可以減少對(duì)CPU的中斷并保證高速的數(shù)據(jù)通信。它與F2812 通過SPI總線連接:DSP的發(fā)送時(shí)鐘信號(hào)(SPICLK)作為MAX3111的串行時(shí)鐘輸入,狀態(tài)信號(hào)(SPISTEA)作為MAX3111的片選信號(hào)(CS),主機(jī)發(fā)送引腳SPISIMO與DIN連接作為發(fā)送數(shù)據(jù)線,主機(jī)接受引腳SPISOMI與DOUT連接作為接收數(shù)據(jù)線,為了保證F2812通過SPI接口接收數(shù)據(jù)不丟幀,MZX3111的中斷信號(hào)(IRQ)與DSP的外部中斷相連。另外MAX3111的TX與T1IN連接,RX與R1OUT連接,以便利用其片內(nèi)的轉(zhuǎn)換器實(shí)現(xiàn)UART到RS 232的電平轉(zhuǎn)換,同時(shí)TX和RX分別以“Y”字形分線接至光隔用于擴(kuò)展一路RS 422總線。F2812與MAX3111的接口電路如圖4所示。
2.4 電源管理電路設(shè)計(jì)
該ISA板上主要分兩部分供電:①光隔一側(cè)是F2812、雙口RAM及DSP外圍器件的供電,這部分器件的工作電壓是 3.3V 的,其中F2812是需要1.8V和3.3V兩種工作電源,而ISA總線插槽上B3引腳提供了5V電源,可以利用該5V電源進(jìn)行電壓轉(zhuǎn)換,為了實(shí)現(xiàn)的方便,選用TI公司的TPS767D318雙輸出穩(wěn)壓芯片,該芯片具有1.8V和3.3V兩種輸出電壓,正常工作時(shí)每路最大輸出電流達(dá)1A,可以完全滿足ISA功耗的要求;②另一側(cè)對(duì)于總線驅(qū)動(dòng)所需的隔離電源,由于各總線驅(qū)動(dòng)選器件均需要3.3V的工作電壓,所以采用TI公司的DCR010503P芯片來實(shí)現(xiàn),該隔離DC/DC模塊體積小,具有貼片封裝形式,能夠減少電路板的面積并可實(shí)現(xiàn)5V~3.3V隔離電壓的變換。
3 軟件設(shè)計(jì)
根據(jù)多總線通信卡的多種通信協(xié)議及波特率的不同,就應(yīng)該有多種相應(yīng)的驅(qū)動(dòng)程序和DSP處理程序。接口卡軟件設(shè)計(jì)包括兩部分:①卡上Flash駐留的F2812控制程序,用CCS實(shí)現(xiàn),負(fù)責(zé)DSP與雙口RAM及總線收發(fā)器間的通信;②主機(jī)端的驅(qū)動(dòng)程序,用C語(yǔ)言+WinDriver實(shí)現(xiàn),負(fù)責(zé)完成主機(jī)與雙口RAM之間的通信,它提供了訪問接口的一系列函數(shù),可以在應(yīng)用程序中調(diào)用。
3.1 F2812的片上Flash程序開發(fā)
當(dāng)卡安裝到主機(jī)中,主機(jī)自動(dòng)為卡分配一個(gè)相應(yīng)大小的內(nèi)存空間,映射為卡上的雙口RAM存儲(chǔ)空間。雙口RAM的存儲(chǔ)空間劃分為命令區(qū)和緩沖區(qū)兩部分。命令區(qū)存放各總線的波特率設(shè)置、數(shù)據(jù)幀長(zhǎng)度和發(fā)送與接收命令的首指針與尾指針,緩沖區(qū)用于存放各總線待發(fā)送和接收到的數(shù)據(jù)。
在默認(rèn)情況下各總線通信速率為19.2KHz波特率,在雙RAM分配四個(gè)獨(dú)立單元,分別存放PC機(jī)對(duì)四種總線通信波特率的設(shè)置信息,分配四個(gè)單元存放四種總線的數(shù)據(jù)幀長(zhǎng)度,再分配16個(gè)單元,每四個(gè)一組,分別存放四個(gè)總線DSP發(fā)送緩沖區(qū)的首指針和尾指針并接收緩沖區(qū)的首指針和尾指針;另外還需分配八個(gè)單元存放DSP接收緩沖區(qū)數(shù)據(jù)幀的幀頭和幀尾信息。在F2812完成初始化后,首先依次掃描波特率設(shè)置信息,如發(fā)現(xiàn)該設(shè)置與某總線當(dāng)前的波特率不同,則重新設(shè)置總線通信的波特率,然后依次掃描各接收緩沖區(qū)的首尾指針是否相同,相同則繼續(xù)掃描,當(dāng)某一對(duì)首尾指針不同則讀取數(shù)據(jù)并檢測(cè)和記錄數(shù)據(jù)幀頭與幀尾,讀取完一幀后,在相應(yīng)的總線上發(fā)出去。同樣,當(dāng)某總線上接收數(shù)據(jù)達(dá)到FIFO緩沖深度時(shí)會(huì)中斷DSP,F(xiàn)2812在中斷程序里只需將接收的數(shù)據(jù)依次寫入雙口RAM的發(fā)送緩沖區(qū)即可,其數(shù)據(jù)幀的解碼交由工控PC機(jī)來完成。F2812的主程序流程如圖5所示。
數(shù)據(jù)緩沖區(qū)采用環(huán)形隊(duì)列數(shù)據(jù)結(jié)構(gòu),以先進(jìn)先出方式工作,每個(gè)數(shù)據(jù)緩沖區(qū)設(shè)置1024Bytes的長(zhǎng)度。當(dāng)要進(jìn)行發(fā)送操作時(shí),先讀出尾指針,根據(jù)尾指針?biāo)傅刂贩湃霐?shù)據(jù),然后將命令區(qū)中的尾指針改為指向緩沖區(qū)中下一個(gè)地址單元,而頭指針保持不變,這樣就完成了一次數(shù)據(jù)發(fā)送。當(dāng)要接收數(shù)據(jù)時(shí),首先檢查首尾指針是否相等,如果相等,則表明緩沖區(qū)沒有新數(shù)據(jù);如果不等,表明有新數(shù)據(jù),這時(shí)應(yīng)根據(jù)頭指針?biāo)傅刂纷x出數(shù)據(jù),然后修改頭指針指向下一個(gè)地址單元,這樣就接收了一個(gè)數(shù)據(jù)。如此循環(huán)可完成多個(gè)數(shù)據(jù)的發(fā)送和接收。當(dāng)尾指針?biāo)傅刂愤_(dá)到緩沖區(qū)最后一個(gè)單元時(shí),其下一個(gè)所指地址則返回到緩沖區(qū)第一個(gè)單元,循環(huán)使用緩沖區(qū);當(dāng)尾指針追上頭指針時(shí),頭指針則自動(dòng)下移一個(gè)單元,放棄最先放入的一個(gè)數(shù),保持最新一拍數(shù)據(jù)。F2812向總線上發(fā)送數(shù)據(jù)時(shí),需要判斷從雙口RAM緩沖區(qū)讀取的數(shù)據(jù)是否滿一幀并檢驗(yàn)幀頭和幀尾,當(dāng)滿一幀時(shí)向相應(yīng)串口發(fā)送數(shù)據(jù)。對(duì)于串口中斷接收的數(shù)據(jù),同樣以循環(huán)隊(duì)列的形式由F2812寫入雙口RAM。F2812中斷服務(wù)程序如圖6所示。
由于SCIA,SCIB和CAN總線接口均屬于F2812的片上資源,對(duì)相應(yīng)的寄存器進(jìn)行適當(dāng)?shù)呐渲茫纯赏瓿上鄳?yīng)的功能。但由SPI接口擴(kuò)展的UART的程序設(shè)計(jì),首先需要初始化SPI 模塊寄存器,然后通過PI總線向MAX3111寫控制字以進(jìn)行 UART的初始化。需要注意的是SPI接口必須設(shè)置成上升沿非延時(shí)模式才能進(jìn)行正常通信。
3.2 ISA卡驅(qū)動(dòng)程序的開發(fā)
驅(qū)動(dòng)程序主要采用Windriver開發(fā)工具進(jìn)行設(shè)計(jì),驅(qū)動(dòng)程序主要對(duì)各總線通信波特率、幀頭與幀尾的設(shè)置提供接口函數(shù)以及數(shù)據(jù)發(fā)送接口函數(shù)。對(duì)于數(shù)據(jù)發(fā)送的接口函數(shù)流程可參照?qǐng)D6;PC定時(shí)掃描雙口RAM的命令區(qū)的首尾指針,首尾指針地址相異,則讀取數(shù)據(jù)并存入緩存,以供接口函數(shù)調(diào)用。
4 結(jié)束語(yǔ)
本接口卡能滿足快速性、可靠性等系統(tǒng)性能的要求,且設(shè)計(jì)簡(jiǎn)潔,具有一定的智能性,已應(yīng)用在某型無人機(jī)的導(dǎo)航計(jì)算機(jī)的軟件測(cè)試和飛控系統(tǒng)半物理仿真試驗(yàn)中。其中接口卡的RS 232用于虛擬PS信號(hào)輸出,一路RS 422模擬地面站指令,另一路RS 422進(jìn)行任務(wù)平臺(tái)模擬,CAN總線用于飛機(jī)模型和故障模型注入。通過聯(lián)機(jī)調(diào)試后可以看出,本接口卡可很好地滿足無人機(jī)導(dǎo)航/飛控系統(tǒng)仿真測(cè)試時(shí)多總線通信的要求。
參考文獻(xiàn):
[1]馮密榮,等.世界無人機(jī)大全[M].北京:航空工業(yè)出版社,2004.533-576.
[2] Cloud Cap Technology Corporation.A Highly Integrated UAV Avioni cs System[EB/OL]. http:// www.cloudcapte ch.com/downloads.htm,2004-02-14.
[3] 北京麥克普特?zé)o人機(jī)控制系統(tǒng)有限公司.AP50駕駛儀技術(shù)手冊(cè)[EB/OL]. http:// www.uavstar.com,2004-12-02.
[4] Texas Instruments.TMS320F2812 DSP Controllers[EB/OL].http://www.ti.com,2001-07.
[5] Maxim.MAX3111 Datasheet[EB/OL].http:// www.maxim ic.com,1999-07.
作者簡(jiǎn)介: 賈偉(1980-),男,黑龍江安達(dá)人,碩士研究生,研究方向?yàn)榭刂评碚撆c控制工程、無人機(jī)飛行控制等;閆建國(guó)(1956-),男,上海人,教授,碩士生導(dǎo)師,研究方向?yàn)橹悄芸刂啤?dǎo)航制導(dǎo)與控制等; 屈耀紅(1971-),男,陜西河陽(yáng)人,博士研究生,研究方向?yàn)閷?dǎo)航制導(dǎo)與控制、航跡規(guī)劃等;高建堯 (1981-), 男,浙江龍游人,碩士研究生,研究方向?yàn)闇y(cè)控技術(shù)、UAV導(dǎo)航控制。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。