基于SJA1000的CAN總線智能節(jié)點實現(xiàn)_第1頁
基于SJA1000的CAN總線智能節(jié)點實現(xiàn)_第2頁
基于SJA1000的CAN總線智能節(jié)點實現(xiàn)_第3頁
基于SJA1000的CAN總線智能節(jié)點實現(xiàn)_第4頁
基于SJA1000的CAN總線智能節(jié)點實現(xiàn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、    基于SJA1000的CAN總線智能節(jié)點實現(xiàn)        張紹忠,王 輝 時間:2008年05月14日     字 體: 大 中 小        關(guān)鍵詞:<"cblue" " target='_blank'>智能節(jié)點<"cblue" " target=&#

2、39;_blank'>89C51<"cblue" " target='_blank'>通信控制器<"cblue" " target='_blank'>國際標準<"cblue" " target='_blank'>硬件電路            摘要: 一種采用獨立總線控制器SJA1000和8

3、位單片機<"cblue" " title="89C51">89C51組成的CAN總線<"cblue" " title="智能節(jié)點">智能節(jié)點的實現(xiàn)方法,詳細介紹了智能節(jié)點的<"cblue" " title="硬件電路">硬件電路組成及抗干擾設(shè)計,給出的初始化程序以及接收和發(fā)送程序流程適用于89C51和其他8位或16位計算機。關(guān)鍵詞: SJA1000 CAN總線 智能節(jié)點 89C51 單片機控制器局域網(wǎng)絡(luò)CAN(

4、Controller Area Network)是一種具有<"cblue" " title="國際標準">國際標準、性價比較高的現(xiàn)場總線。CAN是1986年由Bosch公司領(lǐng)先推出的一種最初應(yīng)用于現(xiàn)代汽車微控制器通信的多主機局部網(wǎng),實現(xiàn)車載各類電子控制裝置之間的信息交換。由于其獨特靈活的設(shè)計、高的位速率、高抗電磁干擾性、極高的可靠性和低廉的價格等卓越的性能,現(xiàn)已在工業(yè)控制、智能大廈、小區(qū)安防、交通工具、醫(yī)療儀器、環(huán)境監(jiān)控等眾多領(lǐng)域推廣應(yīng)用。國際標準組織ISO為其制訂了規(guī)范CAN總線的國際標準,CAN已被公認為幾種最有前途的現(xiàn)場總線之

5、一。它在當今自動控制領(lǐng)域的發(fā)展中將發(fā)揮出越來越重要的作用。CAN協(xié)議建立在國際標準組織ISO的開放系統(tǒng)互連參考模型OSI基礎(chǔ)上,主要工作在物理層、數(shù)據(jù)鏈路層和應(yīng)用層。用戶可在其基礎(chǔ)上開發(fā)適合實際系統(tǒng)需要的應(yīng)用層通信協(xié)議。信號的傳輸一般采用雙絞線、同軸電纜或光纖。CAN總線系統(tǒng)通信距離遠,通信速率高,最高通信速率可達1Mbps;當信號傳輸距離達到10km時,仍可提供高達5kbps的數(shù)據(jù)傳輸速率。CAN總線的這一特點,使其更利于構(gòu)成大系統(tǒng)。CAN系統(tǒng)由CAN網(wǎng)絡(luò)節(jié)點、轉(zhuǎn)發(fā)器節(jié)點和上位機構(gòu)成。節(jié)點是網(wǎng)絡(luò)上信息的接收和發(fā)送站,CAN總線上的網(wǎng)絡(luò)節(jié)點可多達110個。所謂智能節(jié)點是由微控制器與可編程的CA

6、N控制器組成,目前市面上有兩類CAN總線器件可供選擇:一類是兼有微控制器和CAN功能的器件,如P8XC591/2、87C196CA/CB、MC68376、PowerPC555等,使用這種集成器件電路更緊湊,方便用戶制作印制板;另一類是獨立的CAN控制器,如Philips公司的SJA1000、Intel公司82526以及MCP2510等。使用獨立的CAN控制器便于系統(tǒng)開發(fā)人員根據(jù)需要選擇合適的單片機,構(gòu)成更靈活、更理想的系統(tǒng)設(shè)計方案。本文介紹采用CAN通信控制芯片SJA1000與單片機接口構(gòu)成的CAN總線系統(tǒng)智能節(jié)點。1 CAN總線系統(tǒng)智能節(jié)點硬件組成CAN總線上的節(jié)點一方面擔(dān)負著與總線上其他智

7、能設(shè)備的通信聯(lián)絡(luò),同時還要完成連接到本節(jié)點上儀器設(shè)備的數(shù)據(jù)采集與控制,所以該節(jié)點應(yīng)是帶有微處理器的智能節(jié)點。CAN總線智能節(jié)點的硬件組成如圖1所示。圖中,虛線框內(nèi)的部分是智能節(jié)點硬件結(jié)構(gòu),點劃線以左部分是節(jié)點為擔(dān)負監(jiān)控任務(wù)而設(shè)的接口。本文只討論圖1虛線框內(nèi)點劃線以右部分,即由微處理器、CAN<"cblue" " title="通信控制器">通信控制器、光電隔離器以及總線收發(fā)器等組成的智能節(jié)點的通信部分。1.1 SJA1000功能簡介SJA1000是Philips公司推出的獨立CAN通信控制器,主要由CAN核心模塊、接口管理邏輯、發(fā)送

8、緩沖區(qū)、接收FIFO、驗收濾波器等幾部分組成。其硬件結(jié)構(gòu)框圖如圖2所示。SJA1000的CAN核心模塊負責(zé)CAN信息幀的收發(fā)和CAN協(xié)議的實現(xiàn);接口管理邏輯負責(zé)與微處理器的接口,該單元中的每個寄存器都可由微處理器通過SJA1000 的地址/數(shù)據(jù)總線訪問;發(fā)送緩沖區(qū)可存儲一個長度為13B的信息幀。微處理器可將待發(fā)送的標識符和數(shù)據(jù)直接送入發(fā)送緩沖區(qū),然后通過對命令寄存器CMR中的發(fā)送請求位TR置位,啟動CAN核心模塊自行將發(fā)送緩沖區(qū)中的數(shù)據(jù)讀出,并按CAN協(xié)議裝配成完整的CAN信息幀,通過收發(fā)器發(fā)往總線。由總線接收的信息經(jīng)驗收濾波器過濾,無差錯的信息幀被送入接收FIFO緩沖區(qū)。同時將狀態(tài)標志SR.

9、0置位,表明接收緩沖區(qū)中已有成功接收的信息幀。微處理器可依據(jù)SR.0的狀態(tài),判斷是否將FIFO中的數(shù)據(jù)讀入微處理器進行相應(yīng)處理。?1.2 CAN總線智能節(jié)點硬件電路及工作原理本文介紹的智能節(jié)點由微處理器89C51、CAN通信控制器SJA1000、高速光電耦合器TLP113、CAN總線收發(fā)器82C251以及監(jiān)控接口電路等部分組成。硬件電路如圖3所示(不含與監(jiān)控有關(guān)的接口電路)。由于SJA1000只需8位數(shù)據(jù)/地址線,所以若節(jié)點的監(jiān)控部分無特殊要求,則系統(tǒng)可采用8位微處理器。本設(shè)計采用89C51作為智能節(jié)點的微處理器,負責(zé)CAN通信控制器SJA1000的初始化、通信數(shù)據(jù)處理以及其他監(jiān)控任務(wù)的執(zhí)行。

10、89C51采用外部時鐘方式,將SJA1000的CLKOUT端與89C51的XTAL1端相連,利用SJA1000的時鐘輸出作為89C51的時鐘信號,使二者在同一時鐘控制下工作。 系統(tǒng)共用一個復(fù)位電路,由于89C51是高電平復(fù)位,而SJA1000是低電平復(fù)位,單片機的復(fù)位信號經(jīng)反相后才可滿足SJA1000復(fù)位信號的要求。SJA1000的選通采用線選方式,當89C51的P2.7為“0”時選通該控制器,配合ALE和讀寫信號便可實現(xiàn)MPU對SJA1000的訪問。為對其他節(jié)點傳來的數(shù)據(jù)及時作出響應(yīng),智能節(jié)點工作在中斷方式下,當通信控制器接收到其他節(jié)點傳來的數(shù)據(jù)時,SJA1000的中斷輸出就會被激活,在引腳

11、上出現(xiàn)一個由高到低的電平躍變,從而引發(fā)微處理器89C51產(chǎn)生中斷,通過中斷服務(wù)程序接收一幀信息并進行分析處理,以及進行CAN總線錯誤中斷類型判斷和誤碼糾正。本電路采用高性能的PCA82C251 CAN總線收發(fā)器作為SJA1000和物理傳輸線路之間的接口,PCA82C251可以工作在額定電壓是24V的CAN總線系統(tǒng)中,對總線提供差動發(fā)送能力,對CAN控制器提供差動接收能力。該器件符合ISO11898標準,可以用高達1Mbps的位速率在一對總線電纜上以差動方式傳輸數(shù)據(jù)。82C251第8腳與地之間應(yīng)接一個斜率電阻RS,其大小由總線通信速率決定。當RS=0,即把該引腳直接與地相連,系統(tǒng)將處于高速工作方

12、式。在這種方式下,為避免射頻干擾,建議使用屏蔽電纜作總線。與高速方式相對應(yīng)的另一種工作方式是斜率控制方式。斜率控制方式適用于波特率較低、總線較短的情況,傳送信號上升和下降的斜率取決于RS的阻值。通常RS的取值范圍在16k200k,電阻大小可根據(jù)需要調(diào)整。在斜率控制方式下,總線可以使用平行線或雙絞線。1.3 智能節(jié)點的抗干擾措施為增強CAN總線節(jié)點的抗干擾能力,SJA1000的TX0和RX0并不直接與82C251的TXD和RXD相連,而是通過高速光耦TLP113與82C251相連,這樣就很好地實現(xiàn)了收發(fā)器與控制器之間的電氣隔離,保護智能節(jié)點核心電路安全工作,并實現(xiàn)了總線上各CAN節(jié)點間的電氣隔離

13、。需要強調(diào)的是,為實現(xiàn)這種電氣隔離,光耦器件兩側(cè)的直流電源VCC和VDD必須是兩個無直接電氣聯(lián)系、相互隔離的直流電源,否則就失去了采用光耦的意義。這可采用多5V隔離輸出的DC-DC變換隔離電源實現(xiàn)。同理,為保證這一目的的實現(xiàn),在智能節(jié)點的監(jiān)控部分也要采取同樣的隔離措施。為進一步加強智能節(jié)點的安全性和抗干擾能力,可在總線收發(fā)器82C51與CAN總線的聯(lián)接之間串入阻值為510的2個小電阻R8、R9,以起到一定的限流作用,避免82C250受過流沖擊。此外,也可在總線入口處并接雙向穩(wěn)壓管,限制線路上可能出現(xiàn)的短時尖峰過電壓。同時,在CANH和CANL與地之間并聯(lián)了2個30pF的小電容C4和C5,可以起

14、到濾除總線上的高頻干擾,并具備一定的防電磁輻射能力。此外,通信信號在線路上傳輸時,信號傳輸?shù)綄?dǎo)線的端點時會發(fā)生反射,反射信號會干擾正常信號的傳輸。為消除這種影響,可在CAN總線兩端并接2個120的電阻R10、R11,起到匹配總線阻抗和消除反射的雙重作用。若忽略這些措施,會使數(shù)據(jù)通信的抗干擾性和可靠性大大降低,甚至無法通信。此外,為防止干擾出現(xiàn)死機現(xiàn)象,還可采用看門狗電路等監(jiān)控措施,增加系統(tǒng)的可靠性。2 CAN總線智能節(jié)點軟件設(shè)計CAN總線智能節(jié)點的軟件設(shè)計主要包括:節(jié)點初始化、報文發(fā)送和報文接收三部分。2.1 CAN總線節(jié)點初始化程序節(jié)點的初始化主要是指系統(tǒng)上電后對微處理器89C51和CAN控

15、制器SJA1000進行的初始化,以確定工作主頻、波特率和輸出特性等。對89C51的初始化可結(jié)合其監(jiān)控任務(wù)進行,主要是對中斷允許與屏蔽、中斷優(yōu)先級、定時器的使用與設(shè)置等,這與單片機的一般應(yīng)用相同,這里不作介紹。此處主要介紹SJA1000的初始化。由于SJA1000內(nèi)部無微處理器,故其初始化仍要通過89C51對其進行編程實現(xiàn)。初始化程序流程如圖4所示。SJA1000的初始化應(yīng)在復(fù)位模式下進行,所以在SJA1000初始化程序中首先要將工作方式置為復(fù)位模式,之后要設(shè)置驗收濾波方式、驗收屏蔽寄存器(AMR)和驗收代碼寄存器(ACR)、波特率參數(shù)和中斷允許寄存器(IER)等。CAN協(xié)議物理層中的同步跳轉(zhuǎn)寬

16、度和通信波特率的大小由定時寄存器BTR0、BTR1的內(nèi)容決定。需要指出的是:對于一個系統(tǒng)中的所有節(jié)點,這兩個寄存器的內(nèi)容必須相同,否則將無法進行通信。初始化設(shè)置完成后,將復(fù)位請求位置“0”,SJA1000就可以進入工作狀態(tài),執(zhí)行正常的通信任務(wù)。2.2 報文發(fā)送程序發(fā)送程序負責(zé)節(jié)點報文的發(fā)送。發(fā)送時用戶只需將待發(fā)送的數(shù)據(jù)按特定格式組合成一幀報文,送入SJA1000發(fā)送緩存區(qū)中,并將SJA1000的命令寄存器發(fā)送請求標志位(TR)置位。SJA1000會自動啟動發(fā)送過程。但是,在往SJA1000發(fā)送緩存區(qū)送報文之前,必須先對發(fā)送緩沖器是否釋放進行判斷,只有當發(fā)送緩沖器標志(TBS)為“1”時,發(fā)送緩

17、沖器才被釋放,可將新報文寫入發(fā)送緩存,否則,在發(fā)送緩沖器被鎖定時,新報文是不能被寫入發(fā)送緩沖器的。發(fā)送程序分數(shù)據(jù)幀和發(fā)送遠程幀兩種。遠程幀無數(shù)據(jù)場。發(fā)送程序一般編寫成子程序的形式。數(shù)據(jù)幀發(fā)送子程序流程圖如圖5所示。?2.3 報文接收程序SJA1000的報文接收是由其自身獨立完成的,其接收的報文經(jīng)濾波驗收后,暫存在接收緩沖器FIFO中。當報文進入接收緩沖器后,狀態(tài)寄存器SR的接收緩沖器狀態(tài)位RBS被置“1”,同時若中斷使能寄存器IER的接收中斷使能位RIE被設(shè)為“1”時,中斷寄存器的RI位也被置“1”,SJA1000向CPU提出中斷請求。SJA1000的報文接收可采用中斷接收方式或查詢接收方式。若對通信的實時性要求不是很強則可采用查詢接收方式。兩種接收方式編程的思路基本相同。圖6給出了工作在中斷方式下的報文接收中斷服務(wù)程序流程。接收程序較發(fā)送程序的設(shè)計稍復(fù)雜些。一方面,在報文接收過程中,智能節(jié)點的微處理器負責(zé)將FIFO中的報文讀入CPU的內(nèi)存并進行處理;另一方面還要在處理接收報文的過程中同時對諸如總線脫離、錯誤報警、接收溢出等情況進行判斷與處理。本文介紹了基于SJ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論