王 渙,劉鐘宇
(中國電子科技集團公司第四十七研究所,沈陽 110032)
一個由CAN 總線構成的單一網(wǎng)絡中,理論上可以掛接無數(shù)個節(jié)點[1]。一個CAN 節(jié)點要完成相應的測控功能,需要以下部分:CAN 收發(fā)器直接與CAN的物理總線相連,控制CAN 控制器與總線物理層之間的邏輯電平信號;CAN 控制器內部集成了完整的CAN 通信協(xié)議,用以完成CAN的各項功能,并實現(xiàn)與模塊控制器的接口;模塊控制器既要控制各執(zhí)行元件完成特定測控任務,又要處理一定的人機接口功能,還要控制CAN 控制器實現(xiàn)與其他節(jié)點的數(shù)據(jù)通信[2]。
從圖1 中可以看出,微處理器AT89S52 負責SJA1000的初始化,通過控制SJA1000 實現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務。SJA1000的AD0~AD7 連接到AT89S52的P0 口。連接到AT89S52的P2.7,P2.7為0的CPU 片 外 存 儲 器 地 址 可 對SJA1000 執(zhí)行相應的讀寫操作。SJA1000的、、ALE 分別與AT89S52的對應引腳相連,接AT89S52的。AT89S52 可以通過中斷方式訪問SJA1000??刂破鱏JA1000 通過串行數(shù)據(jù)輸出線TX和串行數(shù)據(jù)輸入線RX 連接到收發(fā)器PCA82C250。收發(fā)器通過有差動發(fā)送和接收功能的兩個總線終端CANH 和CANL 連接到總線電纜。輸入Rs 用于模式控制,參考電壓VREF的輸出電壓是額定VCC的0.5 倍,其中收發(fā)器的額定電源電壓是5V。R3 和R4是120Ω,稱為終端電阻,起增大負載、減少回波反射作用,是一種阻抗匹配的補償措施。它對于匹配總線阻抗起著相當重要的作用,否則數(shù)據(jù)通信的抗干擾性及可靠性會大大降低,甚至無法通信。
CAN 總線節(jié)點的軟件設計主要包括三大部分:SJA1000 初始化、報文發(fā)送和報文接收。
AT89S52 上電或復位后,調用復位程序給SJA1000的復位端RST 提供復位信號,使SJA1000進入復位模式,SJA1000的初始化只有在復位模式下才可以進行[3]。初始化程序框圖如圖2 所示。
初始化程序主要包括以下寄存器的設置:①時鐘分頻寄存器定義:BasicCAN 模式還是PeliCAN模式;是否使能CLKOUT 及輸出時鐘頻率;是否旁路CAN 輸入比較器;TX1 輸出是否用專門的接收中斷輸出。②通過驗收碼寄存器和驗收屏蔽寄存器定義接收報文的驗收碼和對報文和驗收碼進行比較的相關位定義驗收屏蔽碼。③通過總線定時寄存器定義總線的位速率、位周期內的采樣點和一個位周期內的采樣數(shù)量。④通過輸出寄存器定義CAN 總線輸出管腳TX0、TX1的輸出模式和輸出配置。⑤最后,清除SJA1000的復位請求標志進入工作模式,SJA1000 方可進行報文的發(fā)送和接收。
圖1 CAN 總線節(jié)點電路圖
圖2 初始化程序框圖
單片機將要發(fā)送的報文送到SJA1000的發(fā)送緩沖器中,然后將SJA1000 命令寄存器的發(fā)送請求標志位(TR)置位,發(fā)送過程由SJA1000 獨立完成。在新報文寫入發(fā)送緩沖器之前,必須先檢查狀態(tài)寄存器的發(fā)送緩沖器狀態(tài)標志(TBS),若為“1”,發(fā)送緩沖器被釋放,可將新的報文寫入緩沖器,否則,發(fā)送緩沖器將被鎖定,新報文不能被寫入。發(fā)送程序框圖如圖3 所示。
圖3 發(fā)送程序框圖
報文的接收也是由SJA1000 獨立完成的。收到的報文通過接收濾波放在FIFO 隊列中,第一條報文進入接收緩沖器,由狀態(tài)寄存器的接收緩沖器狀態(tài)標志位(RBS)和接收中斷標志位(RI)標出。單片機從接收緩沖器取走一條報文后可通過置位SJA1000 中命令寄存器的釋放接收緩沖器的標志位(RRB)來釋放接收緩沖器。接收程序的設計采用中斷方式,這時在主程序中必須使用SJA1000的中斷使能寄存器(PeliCAN 模式)或控制寄存器(BasicCAN 模式)的中斷接收使能位(RIE)置“1”。若FIFO 滿,但還有報文接收,導致數(shù)據(jù)超載時,進行相應處理。接收程序框圖如圖4 所示。
圖4 接收程序框圖
通過硬件、軟件兩方面,介紹了一種CAN 總線網(wǎng)絡節(jié)點電路的設計。如果要將CAN 總線應用于通信任務比較復雜的系統(tǒng)中,那么在軟件設計上還需要加入CAN 總線錯誤處理、總線脫離處理、接收濾波處理、波特率參數(shù)設置和自動檢測等程序,以及CAN 總線通信距離和節(jié)點數(shù)的計算等方面的內容。
[1]鄔寬明.CAN 總線原理和應用系統(tǒng)設計[M].北京:北京航空航天大學出版社,2002.
[2]甘永梅,李慶豐,劉小娟.現(xiàn)場總線技術及其應用[M].北京:機械工業(yè)出版社,2004.
[3]李全利,仲偉峰,徐軍.單片機原理及應用[M].北京:清華大學出版社,2006.