CAN總線技術(shù)及其應用
引言
本文引用地址:http://2s4d.com/article/201612/332320.htm1986年德國最大的工業(yè)企業(yè)之一Rober Bosch公司首次提出了應用于汽車內(nèi)各種傳感器和執(zhí)行器之間相互通信的CAN總線(Controller AreaNetwork)技術(shù)以來,以其可靠性、實時性和靈活性強的特點,得到了諸多汽車開發(fā)商的青睞。本文介紹了CAN總線的通信協(xié)議,分析了CAN總線控制器SJA1000和驅(qū)動器PCA82C250的內(nèi)部結(jié)構(gòu)和工作原理,主要闡述了CAN總線技術(shù)在智能小區(qū)門禁控制系統(tǒng)中的應用。
1 CAN總線的特點
1.1 CAN總線的位數(shù)值表示與通信距離
CAN總線協(xié)議是建立在國際標準組織的開放系統(tǒng)OSI 7層互連參考模型基礎之上的。其模型結(jié)構(gòu)只有3層,即只取OSI底層的物理層、數(shù)據(jù)鏈層和應用層,保證了節(jié)點間無差錯的數(shù)據(jù)傳輸。
CAN總線上用“顯性”(Dominant)和“隱性”(Recessive)兩個互補的邏輯值表示“0”和“1”。如圖1所示,VCNA-H和VCAN-L為CAN總線收發(fā)器與總線之間的兩接口引腳,信號是以兩線之間的“差分”電壓形式出現(xiàn)。在隱性狀態(tài),VCNA—H和VCAN—L被固定在平均電壓電平附近,Vdiff近似于0。顯性位以大于最小閥值的差分電壓表示。CAN總線的通信距離最遠可達10Km(位速率為5 kbps),通信速率最快可達1Mbps(此時最長通信距離為40m)。
圖1 CAN總線的位數(shù)值傳輸方式
1.2報文傳輸
CAN技術(shù)的報文傳輸為多主方式工作,網(wǎng)絡上任意節(jié)點均可在任意時刻主動地向網(wǎng)絡上其它節(jié)點發(fā)送信息,而不分主從。CAN節(jié)點只需通過對報文的標示符濾波即可實現(xiàn)點對點、一點對多點及全局廣播等幾種方式發(fā)送、接收數(shù)據(jù)。
CAN總線的數(shù)據(jù)傳輸(報文傳輸)采用幀格式。按幀格式的不同,分為含有11位標識符的標準幀和含有29位標識符的擴展幀。CAN總線的幀類型分為數(shù)據(jù)幀、遠程幀、錯誤幀和過載幀。
1.3仲裁(Arbitration)
只要總線空閑,任何單元都可以開始發(fā)送報文。如果兩個或兩個以上節(jié)點同時開始傳送報文,那么就會有總線訪問沖突。通過使用標識符的逐位仲裁可以解決這個沖突。仲裁的機制確保了報文和時間均不損失。當具有相同標識符的數(shù)據(jù)幀和遠程幀同時發(fā)送時,數(shù)據(jù)幀優(yōu)先于遠程幀。在仲裁期間,每一個發(fā)送器都對總線進行監(jiān)測,如果發(fā)送和接收電平相同,則該節(jié)點可以繼續(xù)發(fā)送報文。比如發(fā)送的是一“隱性”電平,而監(jiān)視到的是一“顯性”電平,那么這個節(jié)點就失去了仲裁,必須退出發(fā)送狀態(tài)。
2 CAN總線控制器和驅(qū)動器
2.1 CAN總線控制器SJA1000的內(nèi)部結(jié)構(gòu)
CAN總線控制器主要保證數(shù)據(jù)鏈路層和物理層的通信質(zhì)量。SJA1000是一種獨立的CAN總線控制器。SJA1000的內(nèi)部結(jié)構(gòu)如圖2所示。
圖2 SJA1000內(nèi)部結(jié)構(gòu)圖
各功能模塊的作用如下:
接口管理邏輯(IML)負責解釋來自CPU的命令,控制CAN寄存器的尋址,向主控制器(CPU)提供中斷信息和狀態(tài)信息。發(fā)送緩沖器(TXB)是CPU和位流處理器(BSP)之間的接口,負責存儲發(fā)送到CAN總線上的一條完整的報文。發(fā)送緩沖器的長度為13個字節(jié),由CPU寫入、位流處理器讀出。
評論