摘 要:以CAN總線控制器SJA1000為核心,研究PC/104-CAN接口卡應用的各個環節。分析CAN總線接口電路,研究編制PC/104-CAN接口卡通信程序的方法,構建監控系統的CAN 總線分布式通信網絡。應用表明:CAN總線數據傳輸穩定、可靠性好、能滿足現場的實時性要求。
關鍵詞:PC/104;CAN總線;SJA1000;現場實時性
中圖分類號:TP302文獻標識碼:A文章編號:1004373X(2008)2009802
Application and Research of Interface Card Based on PC/104-CAN Bus
LIU Ming,WEI Wei
(Telecommunication Engineering Institute,Air Force Engineering University,Xi′an,710077,China)
Abstract:In the core of CAN bus controller SJA1000,the application of interface card based on PC/104-CAN bus is studied.The interface circuit of CAN bus and metheds on programming for communication between the PC/104-CAN interface card and units are analysed and researched.A distributed communication network for the monitor system is constructed.The result of test shows that the stability and dependability of data transmission is good,and the field′s real-time demand is satisfied.
Keywords:PC/104;CAN bus;SJA1000;field′s real-time
1 引 言
CAN(Controller Area Network)總線是一種有效支持分布控制或實時控制的串行通信網絡,采用多主協議,廢除了傳統的站地址編碼,而采用對通信數據塊進行編碼的方法,使網絡內節點個數在理論上不受限制。具有總線仲裁、錯誤檢測、自動重發等功能。由于采用了許多新技術及獨特的設計,CAN總線與一般的通信總線相比,它的數據通信具有突出的可靠性和實時性。
嵌入式PC/104將臺式PC機的全部功能重新包裝于一個格式標準統一、穩定可靠、且符合嵌入式系統尺寸的標準模塊中,與PC機兼容。PC/104總線是ISA總線的一種變化形式,其引腳的組成和功能與ISA總線完全相同,而PC/104總線的結構更緊湊,且可堆疊,適應于嵌入式系統的需要。PC/104總線和CAN總線之間的轉換接口采用PC/104-CAN接口卡。
本項目使用1塊嵌入式PC/104的雙路CAN總線接口卡,CAN控制器采用Philips的獨立CAN控制器SJA1000芯片,它符合CANBUS2.0B標準,能夠采用查詢和中斷2種方式對其進行訪問。CAN收發器采用Philips的82C250,可以同時操作2路CAN接口,提供高達1 Mb/s的傳輸速度。
2 CAN總線接口分析
應用PC/104-CAN接口卡要考慮與嵌入式PC機的連接以及與CAN物理總線的相連。
CAN控制器通過地址線、數據線和控制線與PC/104進行連接,如圖1所示。SJA1000芯片的控制線ALE,WR,RD可與PC/104的控制線直接連接。但其地址線和數據線是分時復用的,不能跟PC/104的地址線、數據線直接相連,必須將PC/104的地址線和數據線進行正確的轉換和隔離,才能與SJA1000的地址/數據線連接。

CAN收發器82C250是CAN控制器和物理總線間的接口,它能提供對總線的差動發送能力和對CAN控制器的差動接收能力。82C250還具有很強的驅動能力,能增大通信距離(最遠可達10 km),并具有瞬間抗干擾能力。采用高速集成光電耦合器6N137,使總線驅動器與總線控制器分別供電,隔斷了二者的電氣連接,保護嵌入式PC機不受地環流和雷電過壓的影響。
另外,設計CAN地址選擇電路,以確保CAN總線節點在整個系統中的地址惟一。
3 CAN接口軟件設計
首先通過開關選擇內存基地址,通過跳線選擇SJA1000的中斷號。系統104主板的CPU為486DX,其對接口板訪問采用內存映射方式工作,該方式可以訪問較大的地址空間,便于實現快速交換數據。Intel X86體系的CPU其ISA可以映射的空間為0xC8000~0xEFFFF。使用比較器和地址選擇開關組成可選端口地址譯碼電路,通過開關選通內存映射基地址(C8000H,C9000H,CA000H,…,EF000H),以避免與其他器件沖突。接口的INT引腳通過跳線選擇,避免與其他的適配卡沖突。
CAN接口卡的軟件設計包括驅動程序設計和動態鏈接庫(DLL)設計2部分,其軟件層次如圖2所示。

在Windows98操作系統中,應用程序訪問硬件是通過驅動程序來進行的,禁止應用程序直接訪問硬件。驅動程序是指管理實際數據傳輸和控制特定物理設備的程序,它運行于操作系統的內核態。為了保證操作系統的穩定和安全,驅動程序必須按一定的規范來編寫。本項目用的驅動程序主要考慮以下內容:設置端口和中斷號,設置CAN卡通信默認參數,CAN卡內存分配,映射I/O地址,創建CAN卡事件和數據接收事件,初始化中斷等。
動態鏈接庫DLL是基于Windows的程序模塊,是一組被預編譯的函數,由主程序調用。它包含可執行代碼、數據、各種資源,擴大了庫文件的使用范圍。采用動態鏈接庫的優點是減少了EXE文件的大小和節省了內存開銷。動態鏈接庫運行在用戶態,它一方面負責與驅動程序進行數據通信,另一方面又被用戶應用程序調用。該項目的應用程序采用VC編制的DLL函數,主要有以下幾個:復位CANResetB,正常CANNormalRunB,設置CANInitB,發送CANSendB,接收CANReceiveB。
4 CAN應用程序設計
CAN控制器SJA1000處在網絡層次結構中的數據鏈路層和物理層,通過對它的編程,CPU可以設置它的工作方式,控制它的工作狀態,與CAN收發器82C250進行數據的接收和發送,把應用層建立在它的基礎之上。
SJA1000初始化只有在復位模式下才能進行,初始化主要包括工作方式的設置、接收濾波方式的設置、接收屏蔽寄存器和接收代碼寄存器的設置、波特率設置和中斷允許寄存器的設置等。SJA1000在完成初始化后就可以回到工作狀態進行正常的通信任務。圖3,圖4是主控程序初始化CAN卡流程:

在初始化CAN接口卡基礎上編制發送和接收應用程序,可以實現CAN網絡中主控(CAN節點)與各個分機(CAN節點)的通信問題,實現主控控制各CAN節點,各節點也可主動或從動上報其工作狀態以及監測數據,實現實時控制和監測整機工作狀態。
5 結 語
采用PC/104-CAN接口卡很好地解決了主控與各個分機(CAN節點)的通信問題。該項目設計的CAN總線嵌入式控制監測系統具有良好的可靠性和實時性,數據傳輸速率較高,完全可以滿足整機控制和實時監控的需求。該控制系統已經投入使用,系統運行穩定、電磁兼容性較強。
參考文獻
[1]饒運濤.現場總線CAN原理與應用技術[M].北京:北京航空航天大學出版社,2003.
[2]陽憲惠.現場總線技術及應用[M].北京:清華大學出版社,1999.
[3]Predko M.PC接口技術內幕[M].陳逸,譯.北京:中國電力出版社,1992.
[4]Philips Datasheet:SJA1000 Stand-lone CAN Controller[Z].2000(4):1-68.
[5]Philips Datasheet:Philips 82C250 CAN Controller Interface Data Sheet[Z].2000.
[6]Peter Hank,Egon Johnk.Stand-alone CAN Controller SJA1000 Application Note[Z].System Laboratory Hamburg,Germany,1997.
[7]鄭崗,左鵬飛,劉丁.動態優先級思想在CAN總線網絡中的應用[J].測控技術,2004,23(7):44-46.
[8]鄭勇蕓,饒運濤,鄒繼軍.現場總線CAN通信中多線程的應用[J].東華理工學院學報,2004,27(2):196-200.
[9]武芳瑛,吳滌.一種PC104總線和CAN總線的接口[J].電力自動化設備,2004,24(8):53-55.
[10]姜興剛,劉立三,楊兆慧.基于PC-104總線的CAN通信卡的設計與實現[J].計算機測量與控制,2004,12(7):672-674.
作者簡介
劉 明 女,1963年出生,副教授,江蘇徐州人。主要研究方向為軍用導航和計算機應用。