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