CAN(Controller Area Network)即控制器局域網絡。由于其具有較強的抗干擾能力、通訊中沒有地址的概念及節點數不受限制等優點,已經被廣泛應用于汽車、數控機床、儀器儀表、現場總線控制等領域。在CAN總線的節點設計中,目前應用較多的是通過單片機的控制來實現。有的單片機已經嵌入了CAN控制器的功能,比如Philips的P8XC592,Motorola的68HC05X4等,但這類單片機的應用并不普及,而且價格相對較高。對于目前應用最為普及、價格也很便宜的MCS-51系列單片機,本身并不嵌有CAN控制器的功能。下面就給出一種基于MCS-51單片機和SJA1000的CAN總線節點設計方法。
1、 CAN總線簡介
CAN 總線是現場總線的一種,它是德國Bosch 公司在1986 年為解決現代汽車中眾多的控制與測試儀器之間的數據交換而開發的一種串行數據通訊總線。它與其它總線最大的區別是兩個節點之間傳送信息時報文中沒有地址信息,而是對不同性質的數據加以標識。在通訊時,以全網廣播為基礎,各接收節點根據報文中反映數據性質的標識符過濾報文,該收的收下,不該收的棄而不用。雖然CAN總線最初是為在汽車行業應用而開發的,但由于其具有很強的糾錯能力,支持差分收發,因而適合高噪聲環境,而且傳輸距離比較遠。另外,象Philips,Motorola,Intel等半導體制造商相繼開發出了支持CAN協議的集成芯片,更是推動了CAN總線的應用。目前,CAN總線在數控機床、醫療設備、工業控制等領域也取得了廣泛的應用。1993年,國際標準化組織正式頒布了CAN總線的國際標準ISO11898。其具體特性如下:
(1)CAN網絡上的節點信息可以分成不同的優先級,用來滿足不同的實時要求。
(2)CAN為多主工作方式,網絡上任一節點均可在任意時刻主動地向網絡上的其他節點發送信息,而不分主從。
(3)當多個節點同時向總線發送信息時,CAN采用非破壞性總線仲裁技術,低優先級的節點會依此退出發送,而最高優先級的節點正常發送,不會受到任何影響,極大地節省了總線沖突仲裁時間。
(4)發送期間若丟失仲裁或由于出錯而遭破壞的幀可自動重發送。
(5)CAN的直接通訊距離最遠可達到10km(速率5kbps以下),通訊速率最高可以達到1Mbps(此時通訊距離最長為40m)。
(6)CAN的每幀信息都有CRC校驗及其它檢錯措施,保證了出錯率很低。
(7)CAN節點在錯誤嚴重的情況下具有自動關閉,退出總線的功能,從而使總線上的其它接點不受影響。SOC開發平臺360元 單片機開發系統498元 單片機學習板138 無線nRF-9E5模塊100元 51單片機試驗開發板238元 Genius NSP通用編程器260元 Mini ARM Debugger330元 LABTOOL-48UXP2800元 S3C2410 ARM9開發板800
2、 SJA1000的介紹
SJA1000是Philips生產的獨立CAN總線控制器,它是早期的PCA82C200的替代產品。它與PCA82C200在管腳、電氣特性上完全兼容,不僅有和PCA82C200一樣的基本CAN(BasicCAN)工作模式,而且新增加了增強CAN(PeliCAN)工作模式,這種模式支持具有很多新特性的CAN2.0B協議。經過簡單連接和正確設置的SJA1000,能自動完成CAN總線物理層和數據鏈路層的所有功能,對于單片機來說,只要把它看成一個基本的I/O設備即可,使用非常簡單、方便。SJA1000的主要特性如下:
(1)擴展的接受緩沖器(64字節,先進先出FIFO)。
(2)和CAN2.0B協議兼容。
(3)同時支持11位和29位識別碼。
(4)位速率最高可達1Mbits/s。
(6)增強的溫度適應性。
3、 節點硬件電路設計說明
目前廣泛流行的CAN器件分兩大類,一類是獨立的CAN控制器,如PCA82C200、SJA1000等,另一類就是帶有CAN功能的微控制器,如Philips的P8XC592,Motorola的68HC05X4等。考慮芯片的市場普及程度、開發工具及成本等因素,在這次設計中選用單片機AT89C51為核心,SJA1000為CAN控制器,同時還使用了PCA82C250,它是CAN控制器的接口芯片。從功能上來分,SJA1000主要完成CAN的通訊協議,實現報文的裝配和拆分、接收信息的過濾和校驗等。PCA82C250則是實現CAN控制器和通訊線路的物理連接,提高CAN總線的驅動能力和可靠性。具體電路如下圖所示,雖然整個電路比較簡單,但結合本人設計、現場調試的體會,給出下面幾點說明。
(1)SJA1000并沒有和單片機共用復位電路,而是通過單片機的一I/O口來控制,這樣,SJA1000的復位就可以方便地由單片機通過軟件來控制。
(2)SJA1000的地址/數據端和單片機的P0口相連時,不需要再加鎖存器,因為它內部已經有地址鎖存功能。
(3)SJA1000 的TX1 腳懸空, RX1 引腳的電位必須維持在約0.5VCC上, 否則將不能形成CAN 協議所要求的邏輯電平。
(4)總線上電阻R3、R4一定不能省略,它們對匹配總線阻抗起著相當重要的作用,如果去掉它們,系統通訊的可靠性和抗干擾能力就會大大降低,甚至不能正常工作。
4 、 軟件設計
和硬件電路相比,軟件的設計相對來說要復雜的多。而且,其中還涉及到有關通訊協議的問題,對于不同的控制系統、不同的功能要求,CAN總線通訊軟件的差別很大,在此不可能一一列出。但是,對于基于SJA1000的CAN總線系統,它們開始時都必須對SJA1000進行初始化,而這種初始化的流程是基本一致的。下面給出用匯編語言編制的SJA1000的初始化程序,假設SJA1000的首地址為0100H,其中設置波特率的有關參數是針對晶振為12M,波特率為500Kbit/s計算出來的。另外,在整個CAN總線系統中,所有節點設置的波特率必須一致,否則,系統就不能正常工作。
MODE EQU 0100H
BTR0 EQU MODE+6
BTR1 EQU MODE+7
ACR0 EQU MODE+16
AMR0 EQU MODE+20
OCR EQU MODE+8
RBSA EQU MODE+30
CDR EQU MODE+31
MOV A,#01H
MOV DPTR,#MODE
MOVX @DPTR,A
MOV A,#0C0H
MOV DPTR,# CDR
MOVX @DPTR,A
MOV A,#1AH
MOV DPTR,# OCR
MOVX @DPTR,A
MOV A,#85H
MOV DPTR,# BTR0
MOVX @DPTR,A
MOV A,#0B4H
MOV DPTR,# BTR1
MOVX @DPTR,A
MOV A,#00H
MOV DPTR,# RBSA
MOVX @DPTR,A
MOV A,#0FFH
MOV DPTR,# AMR0
MOV R0,#04H
BEGIN10:MOVX @DPTR,A
INC DPTR
DJNZ R0,BEGIN10
MOV A,#00H
MOV DPTR,#MODE
MOVX @DPTR,A
5、 結束語
CAN 具有較強的糾錯能力,適用于高噪聲環境, 并具有較遠的傳輸距離, 現已廣泛應用于許多領域,該設計作為CAN總線節點的一個模塊,能夠和儀器儀表等設備相結合,使其具有網絡通訊的能力,有著廣闊的應用前景。
責任編輯:gt
-
單片機
+關注
關注
6040文章
44594瀏覽量
636948 -
控制器
+關注
關注
112文章
16418瀏覽量
178790 -
CAN總線
+關注
關注
145文章
1954瀏覽量
130923
發布評論請先 登錄
相關推薦
評論