兩種采用CAN總線進行通信的系統比較
1 引言
can總線是一種有效支持分布式控制或實時控制的串行通信網絡,它可實現全分布式多機系統,且無主、從之分;具有傳輸速度快、自動解決總線競爭、實時性好、可靠性高、糾錯能力強等特點,目前已成為一種國際總線標準。
由于can總線具有諸多優點,它的應用范圍遍及從高速網絡到低成本的多線路網絡。在自動化電子領域的汽車發動機控制部件、傳感器、抗滑系統、工業自動化、建筑物環境控制、機床、電梯控制、醫療設備等領域得到了較為廣泛的應用。
sja1000是一種獨立的can控制器,主要用于移動目標和一般工業環境中的區域網絡控制。它是philips半導體公司pca82c200can控制器(basiccan)的替代產品,而且它增加了一種新的操作模式——pelican,這種模式支持具有很多新特性的can2.0b協議。sja1000的基本特性以及電氣參數均與pca82c200獨立can控制器兼容,具有pca82c200模式(即默認的basiccan模式),有擴展的接收緩沖器64字節,先進先出(fifo),支持can2.0a和can2.0b協議,支持11位和29位標識碼,通信位速率可達1mbps。
獨立的can控制器芯片需要外接一個處理器,接受外部cpu的控制才能運行。如果處理器內帶有can控制器,那么無疑會大大簡化應用系統的硬件設計,系統的可靠性也會有很大的提高。所以出現了很多帶有can控制器的處理器,philips公司的p8xc591單片機就是其中的一種,它完全履行can2.0b規范,并提供一個直接從sja1000獨立can控制器的軟件移植路徑。
2 兩種通信方式介紹
2.1 獨立的can控制器sja1000通信方式
sja1000是一種獨立的can控制器,主要用于移動目標和一般工業環境中的區域網絡控制。它是philips公司pca82c200can控制器(basiccan)的替代產品,它在完全兼容pca82c200的基礎上,增加了一種新的工作模式pelican,sja1000完全支持具有很多新特性的can2.0b協議。sja1000的工作模式通過其內部的時鐘分頻寄存器(cdr)中的can模式位來選擇,硬件復位時默認模式是basiccan工作模式[1]。
sja1000可以支持多種微處理器的時序特性,如intel模式或motorola模式。sja1000與微處理器的接口非常簡單,微處理器以訪問外部存儲器的方式來訪問sja1000,在設計接口電路時,sja1000的片選地址應與其他外部存儲器的片選地址在邏輯上無沖突。
sja1000有2種模式可以供微處理器訪問其內部寄存器,2種模式下的訪問是有區別的,這2種模式分別是復位模式和工作模式,當硬件復位、控制器掉線、置位請求位時,sja1000進入復位模式。當清楚其內部控制寄存器(cr)中的復位請求位時,sja1000進入工作模式,有些內部的寄存器只能在復位模式下訪問,有些寄存器只能在工作模式下訪問,而有些寄存器在這2種模式下都可以訪問。
2.2 philips單片機p8xc591的通信方式
philips半導體公司的p8xc591是一個用先進的coms工藝制造的高性能8位單片機,具有片內can控制器。它從mcs-51微控制器家族派生而來,采用了強大的80c51指令集,并成功的包括了philips半導體sja1000,can控制器的pelican功能,提供了專用的硬件,其方框圖如圖1所示。全靜態內核提供了擴展的節電方式。振蕩器可停止和恢復而不會丟失數據。改進的1:1內部時鐘分頻器在12mhz外部時鐘速率時實現500ns指令周期[1]。
圖1 p8xc591的方框圖
p8xc591是一個高性能的微控制器,其專注的硬件結構及增強型的philips“rx+內核”使得其可以廣泛用于工業控制和汽車領域。片上自帶的can控制器為can的應用提供許多專用的硬件功能。p8xc591完全履行can2.0b規范并提供一個直接從sja1000獨立can控制器的軟件移植路徑。p8xc591具有can的擴充特性,其中包括增強型接收濾波器、支持系統維護、診斷、系統優化以及接收fifo特性等,使得p8xc591具有非常廣泛的應用領域。
p8xc591包含的嵌入式can控制器具有下列功能模塊:can內核模塊,根據can2.0b規范控制can幀的發送和接收;can接口模塊,包含了5個實現cpu與can控制器連接的特殊功能寄存器,對重要can寄存器的訪問通過快速自動增加的尋址特性和對特殊功能寄存器的位尋址來實現;can控制器的發送緩沖區模塊,能夠保存一個完整的can信息擴展或標準幀格式,只要通過cpu啟動發送信息,字節就從發送緩沖區傳輸到can內核模塊,當接收一個信息時,can內核模塊將串行位流轉換成并行數據輸入到接收濾波器,通過該可編程濾波器,p8xc591確定實際接收到的信息,所有由接收濾波器接收的數據都保存在接收fifo(64字節)中,取決于操作模式和數據長度的不同該接收緩沖區最多可保存21個can信息。這使用戶在指定系統的中斷服務和中斷優先級時有更多的靈活性,因為數據溢出的可能性大大降低。
除了普通的can特性以外,p8xc-591還提供增強型pelican。pelican具有4個獨立可配置的接收濾波器組,每個組都有4個可選的接收濾波器配置;每個接收濾波器都有32位區分符、32位代碼和32位屏蔽;所有濾波器配置都可在運行中改變;支持更高層協議的接收濾波器;接收fifo特性;只聽模式及自檢測模式;只有達到fifo接收中斷級才能產生接收中斷;在接收到高優先級數據幀時立即產生接收中斷;支持系統維護、診斷和優化等特性[2]。
3 兩種通信方式比較
當獨立的can控制器進行數據的接收和發送時,在設計微處理器與sja1000的接口電路時,首先要選擇微處理器和sja1000的接口模式,其次要注意sja1000的片選地址應與其他的外部存儲器無沖突,還應注意sja1000的復位電路應為低電平有效等一些問題,其硬件電路的設計相對來說是非常復雜的。如果有一點問題沒有注意到,就有可能造成數據無法發送和接收。
sja1000內部寄存器分布于0~31連續的地址空間中,包括控制段和信息緩沖區??刂贫卧诔跏蓟d入時可被編程來配置通訊參數(例如:波特率、位時序等)。微控制器也是通過這個段來控制can總線上的通訊狀態。信息緩沖區分為發送緩沖區和接收緩沖區。微處理器將要發送的信息寫入發送緩沖區,然后啟動發送命令后,可進行報文的發送。符合接收條件的接收到的信息放入接收緩沖區,微處理器可以讀出這些信息,并進行處理。
硬件電路的設計如果采用了philips公司的自帶can控制器的單片機p8xc591,就不會存在以上的問題。由于p8xc591含有片上的can控制器,透過txdc、rxdc兩個管腳,p8xc591就可以直接和外部的can節點交換數據。p8xc591自帶的can控制器在軟件上是向上兼容sja1000的。p8xc591所連接的can節點電路所需要的外部元件僅僅是一個晶振加兩個電容驅動片內振蕩器、一個連接到復位腳的電阻、電容。使用片內上電復位電路以及一個收發器pca82c250用于將p8xc591連接到can總線。所以我們能夠很方便的使用,而且不必考慮很多外部電路的連接,使我們能夠避免很多容易出現的錯誤。
p8xc591通過對can的特殊功能寄存器如地址寄存器(canadr)、數據寄存器(candat)、模式寄存器(canmod)、控制寄存器(cancon)、狀態寄存器(cansta)、總線定時寄存器(btr0,btr1)等的設置以及對收發緩沖區的讀寫,從而完成和其它can節點的數據交換。
4 結束語
通過本文的介紹,我們對獨立can控制器sja1000和philips公司的p8xc591單片機有了進一步的了解,通過后者,我們可以把硬件電路連接兩個處理器所完成的任務,簡化為只用一個微控制器就可以完成。這樣大大簡化了電路的硬件連接,而且也提高了系統的可靠性。
文章版權歸西部工控xbgk所有,未經許可不得轉載。