《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 基于SJA1000的CAN總線智能節點實現

基于SJA1000的CAN總線智能節點實現

2008-05-14
作者:張紹忠,王 輝

  摘 要: 一種采用獨立總線控制器SJA1000和8位單片機89C51" title="89C51">89C51組成的CAN總線智能節點" title="智能節點">智能節點的實現方法,詳細介紹了智能節點的硬件電路" title="硬件電路">硬件電路組成及抗干擾設計,給出的初始化程序以及接收和發送程序流程適用于89C51和其他8位或16位計算機。
  關鍵詞: SJA1000 CAN總線 智能節點 89C51 單片機


  控制器局域網絡CAN(Controller Area Network)是一種具有國際標準" title="國際標準">國際標準、性價比較高的現場總線。CAN是1986年由Bosch公司領先推出的一種最初應用于現代汽車微控制器通信的多主機局部網,實現車載各類電子控制裝置之間的信息交換。由于其獨特靈活的設計、高的位速率、高抗電磁干擾性、極高的可靠性和低廉的價格等卓越的性能,現已在工業控制、智能大廈、小區安防、交通工具、醫療儀器、環境監控等眾多領域推廣應用。國際標準組織ISO為其制訂了規范CAN總線的國際標準,CAN已被公認為幾種最有前途的現場總線之一。它在當今自動控制領域的發展中將發揮出越來越重要的作用。
  CAN協議建立在國際標準組織ISO的開放系統互連參考模型OSI基礎上,主要工作在物理層、數據鏈路層和應用層。用戶可在其基礎上開發適合實際系統需要的應用層通信協議。信號的傳輸一般采用雙絞線、同軸電纜或光纖。CAN總線系統通信距離遠,通信速率高,最高通信速率可達1Mbps;當信號傳輸距離達到10km時,仍可提供高達5kbps的數據傳輸速率。CAN總線的這一特點,使其更利于構成大系統。
  CAN系統由CAN網絡節點、轉發器節點和上位機構成。節點是網絡上信息的接收和發送站,CAN總線上的網絡節點可多達110個。所謂智能節點是由微控制器與可編程的CAN控制器組成,目前市面上有兩類CAN總線器件可供選擇:一類是兼有微控制器和CAN功能的器件,如P8XC591/2、87C196CA/CB、MC68376、PowerPC555等,使用這種集成器件電路更緊湊,方便用戶制作印制板;另一類是獨立的CAN控制器,如Philips公司的SJA1000、Intel公司82526以及MCP2510等。使用獨立的CAN控制器便于系統開發人員根據需要選擇合適的單片機,構成更靈活、更理想的系統設計方案。本文介紹采用CAN通信控制芯片SJA1000與單片機接口構成的CAN總線系統智能節點。
1 CAN總線系統智能節點硬件組成
  CAN總線上的節點一方面擔負著與總線上其他智能設備的通信聯絡,同時還要完成連接到本節點上儀器設備的數據采集與控制,所以該節點應是帶有微處理器的智能節點。CAN總線智能節點的硬件組成如圖1所示。圖中,虛線框內的部分是智能節點硬件結構,點劃線以左部分是節點為擔負監控任務而設的接口。本文只討論圖1虛線框內點劃線以右部分,即由微處理器、CAN通信控制器" title="通信控制器">通信控制器、光電隔離器以及總線收發器等組成的智能節點的通信部分。


1.1 SJA1000功能簡介
  SJA1000是Philips公司推出的獨立CAN通信控制器,主要由CAN核心模塊、接口管理邏輯、發送緩沖區、接收FIFO、驗收濾波器等幾部分組成。其硬件結構框圖如圖2所示。
  SJA1000的CAN核心模塊負責CAN信息幀的收發和CAN協議的實現;接口管理邏輯負責與微處理器的接口,該單元中的每個寄存器都可由微處理器通過SJA1000 的地址/數據總線訪問;發送緩沖區可存儲一個長度為13B的信息幀。微處理器可將待發送的標識符和數據直接送入發送緩沖區,然后通過對命令寄存器CMR中的發送請求位TR置位,啟動CAN核心模塊自行將發送緩沖區中的數據讀出,并按CAN協議裝配成完整的CAN信息幀,通過收發器發往總線。由總線接收的信息經驗收濾波器過濾,無差錯的信息幀被送入接收FIFO緩沖區。同時將狀態標志SR.0置位,表明接收緩沖區中已有成功接收的信息幀。微處理器可依據SR.0的狀態,判斷是否將FIFO中的數據讀入微處理器進行相應處理。

?


1.2 CAN總線智能節點硬件電路及工作原理
  本文介紹的智能節點由微處理器89C51、CAN通信控制器SJA1000、高速光電耦合器TLP113、CAN總線收發器82C251以及監控接口電路等部分組成。硬件電路如圖3所示(不含與監控有關的接口電路)。
  由于SJA1000只需8位數據/地址線,所以若節點的監控部分無特殊要求,則系統可采用8位微處理器。本設計采用89C51作為智能節點的微處理器,負責CAN通信控制器SJA1000的初始化、通信數據處理以及其他監控任務的執行。89C51采用外部時鐘方式,將SJA1000的CLKOUT端與89C51的XTAL1端相連,利用SJA1000的時鐘輸出作為89C51的時鐘信號,使二者在同一時鐘控制下工作。
  系統共用一個復位電路,由于89C51是高電平復位,而SJA1000是低電平復位,單片機的復位信號經反相后才可滿足SJA1000復位信號的要求。SJA1000的選通采用線選方式,當89C51的P2.7為“0”時選通該控制器,配合ALE和讀信號便可實現MPU對SJA1000的訪問。為對其他節點傳來的數據及時作出響應,智能節點工作在中斷方式下,當通信控制器接收到其他節點傳來的數據時,SJA1000的中斷輸出就會被激活,在引腳上出現一個由高到低的電平躍變,從而引發微處理器89C51產生中斷,通過中斷服務程序接收一幀信息并進行分析處理,以及進行CAN總線錯誤中斷類型判斷和誤碼糾正。
  本電路采用高性能的PCA82C251 CAN總線收發器作為SJA1000和物理傳輸線路之間的接口,PCA82C251可以工作在額定電壓是24V的CAN總線系統中,對總線提供差動發送能力,對CAN控制器提供差動接收能力。該器件符合ISO11898標準,可以用高達1Mbps的位速率在一對總線電纜上以差動方式傳輸數據。82C251第8腳與地之間應接一個斜率電阻RS,其大小由總線通信速率決定。當RS=0,即把該引腳直接與地相連,系統將處于高速工作方式。在這種方式下,為避免射頻干擾,建議使用屏蔽電纜作總線。與高速方式相對應的另一種工作方式是斜率控制方式。斜率控制方式適用于波特率較低、總線較短的情況,傳送信號上升和下降的斜率取決于RS的阻值。通常RS的取值范圍在16k~200kΩ,電阻大小可根據需要調整。在斜率控制方式下,總線可以使用平行線或雙絞線。
1.3 智能節點的抗干擾措施
  為增強CAN總線節點的抗干擾能力,SJA1000的TX0和RX0并不直接與82C251的TXD和RXD相連,而是通過高速光耦TLP113與82C251相連,這樣就很好地實現了收發器與控制器之間的電氣隔離,保護智能節點核心電路安全工作,并實現了總線上各CAN節點間的電氣隔離。需要強調的是,為實現這種電氣隔離,光耦器件兩側的直流電源VCC和VDD必須是兩個無直接電氣聯系、相互隔離的直流電源,否則就失去了采用光耦的意義。這可采用多5V隔離輸出的DC-DC變換隔離電源實現。同理,為保證這一目的的實現,在智能節點的監控部分也要采取同樣的隔離措施。
  為進一步加強智能節點的安全性和抗干擾能力,可在總線收發器82C51與CAN總線的聯接之間串入阻值為5~10Ω的2個小電阻R8、R9,以起到一定的限流作用,避免82C250受過流沖擊。此外,也可在總線入口處并接雙向穩壓管,限制線路上可能出現的短時尖峰過電壓。同時,在CANH和CANL與地之間并聯了2個30pF的小電容C4和C5,可以起到濾除總線上的高頻干擾,并具備一定的防電磁輻射能力。此外,通信信號在線路上傳輸時,信號傳輸到導線的端點時會發生反射,反射信號會干擾正常信號的傳輸。為消除這種影響,可在CAN總線兩端并接2個120Ω的電阻R10、R11,起到匹配總線阻抗和消除反射的雙重作用。若忽略這些措施,會使數據通信的抗干擾性和可靠性大大降低,甚至無法通信。此外,為防止干擾出現死機現象,還可采用看門狗電路等監控措施,增加系統的可靠性。
2 CAN總線智能節點軟件設計
  CAN總線智能節點的軟件設計主要包括:節點初始化、報文發送和報文接收三部分。
2.1 CAN總線節點初始化程序
  節點的初始化主要是指系統上電后對微處理器89C51和CAN控制器SJA1000進行的初始化,以確定工作主頻、波特率和輸出特性等。對89C51的初始化可結合其監控任務進行,主要是對中斷允許與屏蔽、中斷優先級、定時器的使用與設置等,這與單片機的一般應用相同,這里不作介紹。此處主要介紹SJA1000的初始化。由于SJA1000內部無微處理器,故其初始化仍要通過89C51對其進行編程實現。初始化程序流程如圖4所示。SJA1000的初始化應在復位模式下進行,所以在SJA1000初始化程序中首先要將工作方式置為復位模式,之后要設置驗收濾波方式、驗收屏蔽寄存器(AMR)和驗收代碼寄存器(ACR)、波特率參數和中斷允許寄存器(IER)等。CAN協議物理層中的同步跳轉寬度和通信波特率的大小由定時寄存器BTR0、BTR1的內容決定。需要指出的是:對于一個系統中的所有節點,這兩個寄存器的內容必須相同,否則將無法進行通信。初始化設置完成后,將復位請求位置“0”,SJA1000就可以進入工作狀態,執行正常的通信任務。
2.2 報文發送程序
  發送程序負責節點報文的發送。發送時用戶只需將待發送的數據按特定格式組合成一幀報文,送入SJA1000發送緩存區中,并將SJA1000的命令寄存器發送請求標志位(TR)置位。SJA1000會自動啟動發送過程。但是,在往SJA1000發送緩存區送報文之前,必須先對發送緩沖器是否釋放進行判斷,只有當發送緩沖器標志(TBS)為“1”時,發送緩沖器才被釋放,可將新報文寫入發送緩存,否則,在發送緩沖器被鎖定時,新報文是不能被寫入發送緩沖器的。發送程序分數據幀和發送遠程幀兩種。遠程幀無數據場。發送程序一般編寫成子程序的形式。數據幀發送子程序流程圖如圖5所示。

?

?


2.3 報文接收程序
  SJA1000的報文接收是由其自身獨立完成的,其接收的報文經濾波驗收后,暫存在接收緩沖器FIFO中。當報文進入接收緩沖器后,狀態寄存器SR的接收緩沖器狀態位RBS被置“1”,同時若中斷使能寄存器IER的接收中斷使能位RIE被設為“1”時,中斷寄存器的RI位也被置“1”,SJA1000向CPU提出中斷請求。SJA1000的報文接收可采用中斷接收方式或查詢接收方式。若對通信的實時性要求不是很強則可采用查詢接收方式。兩種接收方式編程的思路基本相同。圖6給出了工作在中斷方式下的報文接收中斷服務程序流程。接收程序較發送程序的設計稍復雜些。一方面,在報文接收過程中,智能節點的微處理器負責將FIFO中的報文讀入CPU的內存并進行處理;另一方面還要在處理接收報文的過程中同時對諸如總線脫離、錯誤報警、接收溢出等情況進行判斷與處理。
  本文介紹了基于SJA1000的CAN總線智能節點硬件電路的組成及與通信相關的程序流程。限于篇幅,略去了具體的程序,讀者可結合SJA1000的結構與功能,根據流程圖寫出適合自己要求的程序。
參考文獻
1 鄔寬明.CAN總線原理和應用系統設計.北京:北京航空航天大學出版社,1996
2 史久根,張培仁,陳真勇.CAN現場總線系統設計技術.北京:國防工業出版社,2004
3 PHILIPS Corporation.SJA1000 stand-alone CAN controller product specification.2000

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 九九国产精品 | 精品一区二区久久久久久久网站 | 天天精品视频 | 日本视频免费播放 | 欧美一区二区免费 | 成人免费视频77777 | 精品中文字幕不卡在线视频 | 婷五月综合| 成人黄色在线 | 色婷五月综激情亚洲综合 | 五月丁五月丁开行停停乱 | 久久久免费视频播放 | 免费永久视频 | 99热这 | 成人在线色视频 | 精品久久中文久久久 | 午夜精品久久久久久久99热浪潮 | 精品中文字幕一区二区三区四区 | 欧美日韩国产在线人 | 国产福利毛片 | 黄色污污视频在线观看 | 六月色播 | 激情五月婷婷久久 | 97中文字幕在线 | 法国《性船》完整版高清在线观看 | 91精品国产91久久久久久最新 | 99这里都是精品 | 欧美在线看片 | 欧美午夜一区 | 精品国产福利久久久 | 国产精品欧美日韩精品 | 99久久精品无码一区二区毛片 | 国产精品人人爽人人做我的可爱 | 久久精品综合一区二区三区 | 久久久高清日本道免费观看 | 久久这里有 | 国产女人成人精品视频 | 免费看av的网址 | 男女精品视频 | 伊人网在线免费视频 | 97在线视频免费观看费观看 |