stm32之CAN總線基礎(chǔ)
can總線協(xié)議概述:
CAN是Controller Area Network的縮寫,由德國博世公司開發(fā);CAN通過ISO11891以及ISO11519進行了標(biāo)準(zhǔn)化;
本文引用地址:http://butianyuan.cn/article/201611/315718.htm
CAN總線的特點:
1、多主控制
在總線空閑時,所有單元都可以開始發(fā)送消息(多主控制);
最先訪問總線的單元獲得發(fā)送權(quán)(辨別方式:“CSMA/CA方式”);
多個單元同時開始發(fā)送時,發(fā)送高優(yōu)先級ID消息的單元可獲得發(fā)送權(quán);
2、消息的發(fā)送
在can協(xié)議中,所有消息都是以固定格式發(fā)送。總線空閑時,所有與總線相連的單元都可以開始發(fā)送新消息。兩個以上的單元同時開始發(fā)送消息時,根據(jù)標(biāo)識符(ID)決定優(yōu)先級。ID并不是表示發(fā)送消息的目的地址,而是表示訪問總線的消息優(yōu)先級。兩個以上的單元同時開始發(fā)送消息時,對各消息ID的每個位進行逐個仲裁比較,仲裁獲勝(優(yōu)先級最高)的單元繼續(xù)發(fā)送消息,仲裁失利的單元則立刻停止發(fā)送而進行接收工作;
3、系統(tǒng)的柔軟性
與總線相連的單元沒有類似于“地址”的信息,因此在總線上增加單元時,連接在總線上的其他單元的軟硬件及應(yīng)用層都不需要改變;
4、通信速度
根據(jù)整個網(wǎng)絡(luò)的規(guī)模,可設(shè)定適合的通信速度。最高1Mbps;
在同一網(wǎng)絡(luò)中,所有單元必須設(shè)定成統(tǒng)一通信速度,即使有一個單元的的通信速度與其他的不一樣,此單元也會輸出錯誤信號,妨礙整個網(wǎng)絡(luò)的通信,不同網(wǎng)絡(luò)間則可以有不同的通信速度;
5、遠(yuǎn)程數(shù)據(jù)請求
可通過發(fā)送“遙控幀”,請求其他單元發(fā)送數(shù)據(jù);
6、錯誤檢測功能(錯誤通知功能、錯誤恢復(fù)功能)
所有的單元都可以檢測錯誤(錯誤檢測功能)
檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能)
正在發(fā)生消息的單元一旦檢測出錯誤,會強制結(jié)束當(dāng)前的發(fā)送。強制結(jié)束發(fā)送的單元會不斷反復(fù)地重新發(fā)送此消息直到成功發(fā)送(錯誤恢復(fù)功能);
7、故障封閉
CAN可以判斷出錯誤的類型是總線上暫時的數(shù)據(jù)錯誤(如外部噪聲)還是持續(xù)數(shù)據(jù)錯誤(如單元內(nèi)部故障、驅(qū)動器錯誤)。由此功能,當(dāng)總線上發(fā)送持續(xù)錯誤時,可能引起此故障的單元從總線上隔離出去;
8、連接
CAN總線是可同時連接多個單元的總線。可連接的單元總數(shù)理論上是沒有限制的。但實際上可連接的單元數(shù)受總線上的時間延遲及電氣負(fù)載的限制。降低通信速度,可連接的單元數(shù)增加,提高通信速度,則可連接的單元數(shù)減少;
CAN總線協(xié)議:
CAN總線涵蓋了OSI規(guī)定的傳輸層、數(shù)據(jù)鏈路層、物理層;
物理層:
決定了位編碼方式(NRZ編碼,6個位插入填充位),位時序(位時序、位的采樣)、同步方式(根據(jù)同步段ss實現(xiàn)同步,并具有再同步功能);但具體的說:信號電平,通信速度,采樣點,驅(qū)動器和總線的電氣特點,連接器的形態(tài)都沒有定義,需要用戶自行確定;
傳輸層:
定義了再發(fā)送控制;
數(shù)據(jù)鏈路層:
數(shù)據(jù)鏈路層分LLC(邏輯鏈路控制 Logic Link control)子層 和MAC(媒介訪問控制Media access control)子層;
LLC子層,執(zhí)行接收消息選擇(點到點、廣播、組播)、過載通知(通知接收準(zhǔn)備尚為完成)、錯誤恢復(fù)功能(再次發(fā)送);
MAC層: 進行數(shù)據(jù)幀化(4種幀類型),連接方式控制(競爭方式),消息仲裁(ID仲裁),故障擴散抑制(自動識別暫時錯誤和持續(xù)錯誤,排除故障節(jié)點),錯誤通知(CRC錯誤、填充位錯誤、位錯誤、ACK錯誤、格式錯誤),錯誤檢測,應(yīng)答方式(ACK, NACK),通信方式(半雙工)等設(shè)置;
MAC子層是CAN協(xié)議的核心,數(shù)據(jù)鏈路層的功能是將物理層的信號組成有意義的消息,并提供傳送錯誤控制等傳輸控制的流程。數(shù)據(jù)鏈路層的功能通常是在CAN控制器的硬件中執(zhí)行;
幀的概念:
數(shù)據(jù)幀:用于發(fā)送單元想接收單元傳送數(shù)據(jù)的幀;
遙控幀(請求幀): 用于接收單元向具有相同ID的發(fā)送單元請求數(shù)據(jù)的幀;
錯誤幀:用于當(dāng)檢測出錯誤時向其它單元通知錯誤的幀;
過載幀:用于接收單元通知 其尚未做好接收準(zhǔn)備的幀;
幀間隔:用于將數(shù)據(jù)幀及遙控幀與前面的幀分離開來的幀;沒有實際意義
數(shù)據(jù)幀和遙控幀 都有標(biāo)準(zhǔn)格式和擴展格式兩種格式。標(biāo)準(zhǔn)格式有11個位的標(biāo)識符Identifier,以后稱ID),擴展格式有29個位的ID;
數(shù)據(jù)幀:
?。?)、幀起始(標(biāo)準(zhǔn)、擴展格式相同)
表示幀開始的段,1個位的顯性位;
(2)、總線上的電平有顯性和隱性電平兩種;
總線上執(zhí)行邏輯上的線“與”時,顯性電平的邏輯值為“0”, 隱性電平為“1”;
”顯性“具有“優(yōu)先”的意味,只要有一個單元輸出顯性電平,總線上即為顯性電平。并且,“隱性”具有“包容”的意味,只有所有的單元都輸出隱性電平,總線上才為隱性電平;
?。?)、仲裁段
表示數(shù)據(jù)的優(yōu)先級的段
標(biāo)準(zhǔn)格式和擴展格式在此的構(gòu)成有所不同;
ID:
標(biāo)準(zhǔn)格式的ID有11個位,從ID28到ID18被依次發(fā)送,禁止高7位都為隱性;
擴展格式有29個位;基本ID從ID28到ID18,擴展ID由ID17到ID0;
遙控幀:
遙控幀沒有數(shù)據(jù)段;沒有數(shù)據(jù)段的數(shù)據(jù)幀與遙控幀的區(qū)別:RTR位;
評論