一種基于ARM920T的現(xiàn)場總線控制系統(tǒng)
1、引言
隨著工業(yè)控制系統(tǒng)逐步的自動化,現(xiàn)代化,現(xiàn)場總線控制系統(tǒng)得到越來越多的重視和應(yīng)用,CAN總線是目前開發(fā)簡單,性能價格比高的一種現(xiàn)場總線 。相對其他現(xiàn)場總線而言,CAN通信控制器的生產(chǎn)廠家最多、品種最全、應(yīng)用也最為廣泛?;诂F(xiàn)場總線控制系統(tǒng)智能化、復(fù)雜度的提高,作為現(xiàn)場總線的核心部件微處理器,傳統(tǒng)的51芯片,甚至ARM7已經(jīng)逐漸不能滿足需要,ARM9成為合適的選擇。但許多ARM9并沒有集成CAN接口,擴(kuò)展CAN接口成為當(dāng)務(wù)之急。且ARM9將數(shù)據(jù)地址總線分開,而CAN控制器為數(shù)據(jù)地址總線復(fù)用,使得CAN的擴(kuò)展不能一味照搬51處理器的方式。在CAN模塊驅(qū)動開發(fā)上,現(xiàn)有資料往往只針對Linux系統(tǒng)上的驅(qū)動開發(fā) 進(jìn)行介紹,而現(xiàn)場總線控制系統(tǒng)對實(shí)時性的要求使得Linux系統(tǒng)要讓位于更多的實(shí)時操作系統(tǒng)。
本文介紹了一種基于ARM920T現(xiàn)場總線的控制系統(tǒng),詳細(xì)說明了其上擴(kuò)展CAN總線的兩種方式,并給出具體的CAN模塊在實(shí)時操作系統(tǒng)eCos 上驅(qū)動程序開發(fā)的步驟,最后對兩種擴(kuò)展進(jìn)行了簡要的比較。
2、現(xiàn)場總線控制系統(tǒng)簡介
該現(xiàn)場總線控制系統(tǒng)采用EP9315為核心處理器。EP9315是Cirrus Logic公司開發(fā)的一款基于ARM920T的工業(yè)級處理器。該現(xiàn)場總線控制系統(tǒng)除了外擴(kuò)的CAN總線接口、還外擴(kuò)64Mb SDRAM和32MB FLASH、并帶有PCMCIA 接口、E PROM接口、512kb SRAM、IDE接口、實(shí)時時鐘、視頻顯示、彩色VGA TFT LCD觸摸屏、支持模擬VGA連接、視頻解碼支持壓縮視頻輸出和S-VIDEO輸出、PS/2鍵盤,三個USB接口、三個串行接口、音頻接口、1/10/100Mbps以太網(wǎng)接口、紅外線接收口;實(shí)現(xiàn)了控制系統(tǒng)的數(shù)字化、智能化;可實(shí)現(xiàn)多種功能,使系統(tǒng)的控制功能本地化,提高了系統(tǒng)的可靠性、實(shí)時性;簡化了系統(tǒng)的結(jié)構(gòu)。多接口的系統(tǒng)結(jié)構(gòu)使系統(tǒng)的擴(kuò)展,變更,拆裝更加靈活便利。
3、硬件系統(tǒng)擴(kuò)展
3.1 CAN總線模塊結(jié)構(gòu)
本文使用SJA1000T作為CAN控制器擴(kuò)展CAN模塊 。SJA1000T是使用于汽車和一般工業(yè)環(huán)境的獨(dú)立CAN總線控制器,具有完成CAN高性能通信協(xié)議所要求的全部必要特性;具有簡單總線連接的SJA1000T可完成物理層和數(shù)據(jù)鏈路層的所有功能。支持CAN2.0協(xié)議。
CAN總線收發(fā)器TJA1040T是CAN控制器和物理總線之間的接口芯片,增強(qiáng)了總線的驅(qū)動能力,從而增加CAN總線的通信距離并使得一條總線上可以掛更多的節(jié)點(diǎn)。
為增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力 ,SJA1000T的TXO和RXO并不直接與TJA1040的TXD和RXD相連,而是通過兩片光耦隔離芯片6N137與TJA1040T相連。很好地實(shí)現(xiàn)了收發(fā)器與控制器之間的電氣隔離,保護(hù)智能節(jié)點(diǎn)核心電路安全工作;并實(shí)現(xiàn)了總線上各CAN節(jié)點(diǎn)間的電氣隔離。需要強(qiáng)調(diào)的是:為實(shí)現(xiàn)這種電氣隔離,光耦器件兩側(cè)的直流電源必須是兩個無直接電氣聯(lián)系、相互隔離的直流電源。因而采用兩路DC-DC隔離電源實(shí)現(xiàn)。為進(jìn)一步加強(qiáng)安全性和抗干擾能力,可在總線收發(fā)器TJA1040T與CAN總線間串接限流電阻,避免TJA1040T受過流沖擊。同時,在CANH和CANL,與地之間并聯(lián)了濾波電容,可以起到濾除總線上的高頻干擾,并具備一定的防電磁輻射能力。此外,通信信號在線路上傳輸時,信號傳輸?shù)綄?dǎo)線的端點(diǎn)時會發(fā)生反射,反射信號會干擾正常信號的傳輸。為消除這種影響,可在CAN總線兩端并接匹配電阻,起到匹配總線阻抗和消除反射的雙重作用。若忽略這些措施,會使數(shù)據(jù)通信的抗干擾性和可靠性大大降低,甚至無法通信。
3.2 CAN模塊與ARM9的兩種連接方式
SJA1000T數(shù)據(jù)地址總線復(fù)用,而整個ARM9系列包括ARM920T數(shù)據(jù)和地址總線分開。這就使得它與ARM9系列的連接不能像傳統(tǒng)的用于51單片機(jī)系列方式擴(kuò)展連接,本文給出兩種擴(kuò)展方式 :全部IO口連接方式和最少IO口的數(shù)據(jù)信號線連接方式。
3.2.1 IO接口連接
微處理器的通用IO口可以提供一個簡便的方法來控制SJA100T。EP9315的GPIO信號提供了很大的靈活度來滿足SJA1000T時間上的要求。將SJA1000T數(shù)據(jù)地址復(fù)用總線全部與EP9315的通用IO接口連接。其它信號線WR、RD、ALE……也與IO接口連接。具體連接方式參考圖2。
3.2.2 數(shù)據(jù)信號線連接
除了全部由IO端口來控制CAN模塊,還可利用ARM9的數(shù)據(jù)線和信號線來實(shí)現(xiàn)CAN模塊的擴(kuò)展。連接電路如圖3所示,凡SJA1000T以外的信號均為EP9315芯片上的信號管腳,SJA1000T數(shù)據(jù)地址復(fù)用總線與EP9315數(shù)據(jù)線相連,GPIOx、GPIOy、GPIOz可以是EP9315任意GPIO引腳,但選擇同一個通道的GPIO口將使編程更容易。注意SJA100T的INT可以連接CPU的INT也可以連接到帶有中斷的通用IO上。在EP9315中,GPIO的通道A,B,F(xiàn)有中斷功能。
圖2和圖3是示意圖,具體的由于EP9315信號高電平為3.3V,而SJA1000T高電平為5V,故需要通過74LVC245這類電平匹配芯片進(jìn)行電平匹配后再連接。