張春林,趙 麗
(1.中國科學院 長春光學精密機械與物理研究所,長春 130033;2.長春職業技術學院,長春 130033)
CAN總線是一種分布式控制或實時控制的串行通信網絡,許多的著名汽車制造廠、農用機械、數控機床、機械工業、機器人、紡織工業、醫療器械及傳感器等領域都采用CAN總線來實現總控制系統與各檢測機構和執行機構間的數據通信。由于采用了許多新技術及獨特的設計,CAN總線是唯一被國際標準化組織批準的現場總線,可實時、可靠、靈活進行數據通信[1]。
CAN總線通信系統由CAN網絡節點、轉發器節點和上位機構成[2]。節點是網絡上信息的接收站和發送站,由于總線收發器物理信號驅動能力的限制,在一個CAN總線的網絡上,最多可掛接110個節點。所有智能節點由CAN總線連接成一個網絡體系,實現基本的控制功能。
CAN控制器SJA1000與微處理器的接口電路如圖1所示。采用STC89C51作為系統中的CAN總線智能節點的微處理器。STC系列單片機是美國STC公司最新推出的一種新型51內核的單片機,是新一代超強抗干擾、高速、低功耗的單片機[3]。
CAN總線控制器選用SJA1000,因其引腳和電氣參數與 CAN控制器PCA82C200兼容,能夠較好完成CAN總線通信。SJA1000具有兩種工作模式:BasicCAN模式和PeliCAN模式,有擴展的接收緩沖器64字節,先進先出(FIFO),支持CAN2.0A和CAN2.0B協議,支持11位和29位標識碼,通信速率可達1Mbps,最大24MHz時鐘頻率,可與不同的微處理器接口,可編程的CAN輸出驅動器配置,溫度適應范圍大(-40~+125℃)。
因此將SJA1000的8位數據線連接到STC89C51的P0口,CS連接到 STC89C51的 P2.7,P2.7低電平有效,可選中SJA1000。SJA1000的RD、WR、ALE、分別與STC89C51的讀、寫和地址鎖存控制引腳相連,進而對SJA1000執行相應的讀/寫操作。
復位引腳連接到 STC89C51的 P2.2,SJA1000的復位過程可由單片機控制。SJA1000的 INT接STC89C51的中斷引腳 INT0,單片機可通過中斷方式訪問 SJA1000。VDD1、VDD2和 VDD3是輸入比較器5V電源的輸入端,VSS1、VSS2和VSS3是輸入比較器的接地端。X1和X2兩個引腳外接16M晶振。

圖1 CAN控制器SJA1000與微處理器的接口電路
CAN總線收發器采用PCA 82C250。PCA82C250是CAN控制器與物理總線之間的接口,它最初是為在汽車中提供高速信號通信而設計的,82C250采用雙線差分驅動,驅動電路內部具有限流電路,可以防止發送輸出級對電源、地及負載短路。
為了保護MCU不受CAN總線上的干擾信號影響,在總線收發器與SJA1000中引入高速光電耦合器6N137進行系統隔離,如圖2所示,這樣的連接使兩端的電路較為獨立的工作,互不干擾,也能夠實現節點間的電氣隔離,增強了CAN總線節點的抗干擾能力,降低誤碼率,減少出錯重發的次數。為防止雷擊,起過壓保護的作用,PCA82C250的總線與地之間均反接一個保護二極管,兩根總線分別并聯了2個30pF的電容,可以抗高頻干擾和抑制電磁輻射。其中R12和R13為兩個120Ω的電阻,起到限流和保護作用。

圖2 CAN總線收發器與總線控制器的接口電路
6N137是一款高速光耦合器,是輸入輸出之間的轉換裝置。作為一款線性接收裝置,它突破了傳統線性裝置對環境的限制,更適應于噪聲環境。
兩個6N137的輸入端IN+分別接總線控制器和收發器的電源正極,5腳分別接電源地,IN-端接輸入信號,當有信號輸入時,受光器能夠接受到光線并產生光電流,從而在輸出端產生一定的電壓,實現了“電-光-電”轉換,起到了電氣隔離的作用。在輸出端與地之間接入15pF的電容來濾波。
上電后,單片機先進行上電復位操作,之后對相關的寄存器進行初始化設置。SJA1000只有工作在復位模式才能進行寄存器的狀態設置,在設置之前,必須首先對復位模式標識進行設置,在這之前,要先關閉SJA1000的中斷源,之后再進行相關寄存器的設置,其流程圖如圖3所示。
可采用中斷方式或查詢的方式發送報文。在本系統中,采用查詢方式發送報文。發送時首先查詢一下上次報文是否發送完成,完成后判斷發送緩沖區是否鎖定,解鎖后將報文寫入SJA1000的發送緩沖器,再啟動發送命令,之后CAN控制器自動完成報文的發送。
這里單片機采用外部中斷0來接收報文。這里采用外部中斷電平觸發的方式,在 SJA1000中,當一個報文被無誤地接收后,SJA1000便會向單片機發送一個低電平中斷信號,請求單片機接收報文,單片機則會在該中斷信號下產生一個INT0中斷。
進入中斷程序后,單片機首先判斷其中斷類型是否為接收中斷,其次判斷是否為合法中斷,如果是接收中斷,并且為合法中斷,系統將檢測該報文是否有效,如有效則進行報文接收[4]。系統將接收的報文暫時存儲在單片機的存儲單元中,接收后重新開放中斷。

圖3 SJA1000初始化程序流程圖
本文主要介紹了CAN總線智能節點的軟硬件設計,采用單片機STC89C51作為微控制器,配合SJA1000獨立CAN總線控制器組成下位機實時通信的智能節點,保證了CAN總線網絡工作穩定性和實時性;系統進行了光電隔離,增強了系統的穩定性和可靠性。該系統能夠應用在醫療、汽車、農業、工廠等許多場合,應用范圍廣,推廣價值高。
[1]莫莉,張葉茂.基于CAN總線的嵌入式監控網絡智能節點設計[J].輕工科技,2012(4):82-83.
[2]賈筱瑩,高沁翔.無功與諧波補償裝置CAN總線通信網絡設計[J].電力通信系統,2005,26(9):44-46.
[3]肖林京,張瑞雪,常龍,等.基于CAN總線的礦用新能源電機車通信網絡設計[J].測控技術,2013,32(5):64-66.
[4]祝敏.基于CAN總線的大棚溫濕度監控系統的設計[J].自動化與儀器儀表,2010(1):57-60.