資源描述:
《CANBUS協(xié)議培訓(xùn)課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、目錄1:網(wǎng)絡(luò)的組建2:總線節(jié)點(diǎn)的組成3:總線電平(總線上的物理信號(hào))4:抗電磁干擾能力5:通信原理(廣播方式)6:幀的種類7:數(shù)據(jù)幀解析8:數(shù)據(jù)幀仲裁段解析9:數(shù)據(jù)幀控制段解析10:數(shù)據(jù)幀數(shù)據(jù)段解析11:發(fā)送沖突的處理方法(仲裁方法)12:位填充規(guī)則(Bit-StuffingRule)13:錯(cuò)誤的種類14:位時(shí)序以及同步15:錯(cuò)誤計(jì)數(shù)器1:CANbus網(wǎng)絡(luò)的組建所有節(jié)點(diǎn)通過兩條線連接起來。兩條線分別稱為CAN_H和CAN_L。如果要求不高,一般用帶屏蔽的雙絞線就可以了。網(wǎng)絡(luò)的兩端必須有120歐的終端電阻。所以在設(shè)計(jì)線路板的時(shí)候都要有一個(gè)120歐的電
2、阻,一般1/4瓦就夠了。通過跳線或者撥碼開關(guān)選擇是否使用這個(gè)電阻。2:CANbus節(jié)點(diǎn)的組成一個(gè)節(jié)點(diǎn)一般包含3個(gè)部分:微控制器,CAN控制器和CAN收發(fā)器。典型的組合有:51單片機(jī)+SJA1000+PCA82C250(5V)。另外,有的微控制器內(nèi)部已經(jīng)包含了CAN控制器,比如STM32。STM32+SN65HVD230(3.3V)。收發(fā)器一般都是8個(gè)引腳的芯片。集成CAN控制的微控制器將是未來CANBUS應(yīng)用的首選。3:CANbus上的總線電平(總線上的物理信號(hào))CANBUS上的總線電平稱為隱性電平和顯性電平。Recessive:隱性(代表邏輯1)
3、CAN_H=CAN_L=2.5V兩條線上的電壓差:0VDominant:顯性(代表邏輯0)CAN_H=3.5V/CAN_L=1.5V兩條線上的電壓差:2V如果CAN控制器發(fā)送邏輯1時(shí),CAN收發(fā)器使CAN_H和CAN_L都為2.5V,這時(shí),兩條線上的電壓差為0V??偩€上稱為隱性電平。如果CAN控制器發(fā)送邏輯0時(shí),CAN收發(fā)器使CAN_H為3.5V,CAN_L為1.5V,這時(shí),兩條線上的電壓差為2V。總線上稱為顯性電平。多個(gè)節(jié)點(diǎn)同時(shí)開始發(fā)送時(shí),會(huì)涉及到總線仲裁(也就是誰可以繼續(xù)發(fā)送)。顯性電平優(yōu)先級(jí)高于隱性電平,以后會(huì)專門講,這里先提一下。4:CAN
4、bus抗電磁干擾能力如果出現(xiàn)電磁干擾,那么肯定會(huì)同時(shí)干擾到CAN_H和CAN_L兩條線。CAN收發(fā)器始終采集的是這兩條線上的電壓差,而電壓差不會(huì)因?yàn)楦蓴_而改變,這種方式明顯提高了抗干擾能力。這就是為什么采用差分傳輸?shù)脑颉?:CANbus通信原理(廣播方式)每一個(gè)節(jié)點(diǎn)都可以主動(dòng)發(fā)送幀。(幀是CAN協(xié)議規(guī)定的發(fā)送或接收的單位)每一個(gè)節(jié)點(diǎn)都可以接收到來自其他節(jié)點(diǎn)的發(fā)送的幀。但具體要不要接收,由你決定。通常是通過配置CAN控制器的過濾器寄存器來設(shè)置。一旦設(shè)置好,CAN控制器會(huì)根據(jù)你的設(shè)置,自動(dòng)去判斷要不要接收,完全由硬件實(shí)現(xiàn),這個(gè)判斷要不要接收的過程,也
5、叫過濾。6:CANbus幀的種類大家不要被這么多種類的幀嚇壞了,其實(shí)很多都是由硬件自動(dòng)實(shí)現(xiàn)的。通信是通過以上5種類型的幀進(jìn)行的。幀由段組成,段由二進(jìn)制位組成。發(fā)送或者接收只能以幀為單位?。。。?!數(shù)據(jù)幀和遠(yuǎn)程幀有標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種。標(biāo)準(zhǔn)格式有11位標(biāo)識(shí)符(Identifier:簡(jiǎn)稱ID),擴(kuò)展格式有29位標(biāo)識(shí)符。錯(cuò)誤幀,過載幀和幀間隔都是由硬件實(shí)現(xiàn),我們無法用軟件控制。對(duì)于應(yīng)用者來說是透明的,我們完全可以不用管它們。數(shù)據(jù)幀和遠(yuǎn)程幀結(jié)構(gòu)上差不多,最大的區(qū)別就是遠(yuǎn)程幀沒有數(shù)據(jù)段。數(shù)據(jù)幀也是最復(fù)雜的幀,所以我們重點(diǎn)解析數(shù)據(jù)幀。幀幀用途1數(shù)據(jù)幀用于一個(gè)節(jié)
6、點(diǎn)傳送信息到其它任一或所有節(jié)點(diǎn)2遠(yuǎn)程幀用于一個(gè)節(jié)點(diǎn)主動(dòng)要求其它節(jié)點(diǎn)發(fā)送信息3錯(cuò)誤幀如果節(jié)點(diǎn)在接收過程中檢測(cè)到錯(cuò)誤,它就會(huì)發(fā)送一個(gè)錯(cuò)誤幀4過載幀當(dāng)一個(gè)節(jié)點(diǎn)正忙于處理接收的信息,可以通知其它節(jié)點(diǎn)暫緩發(fā)送新報(bào)文5幀間隔幀與幀之間的間隔7:CANbus數(shù)據(jù)幀解析數(shù)據(jù)幀由7個(gè)段構(gòu)成。(1)幀起始(SOF):表示幀開始。(2)仲裁段(ArbitrationField):表示該幀的優(yōu)先級(jí)(主要就是ID)。(3)控制段(ControlField):表明數(shù)據(jù)的字節(jié)數(shù)。(4)數(shù)據(jù)段(DataField):數(shù)據(jù)的具體內(nèi)容,可發(fā)送0~8個(gè)字節(jié)的數(shù)據(jù)。(5)CRC段(CRC
7、Field):用于校驗(yàn)傳輸是否正確。(6)ACK段(ACKField):表示確認(rèn)是否正常接收。(7)幀結(jié)束(EOF):表示此幀結(jié)束。其中幀起始,CRC段,ACK段,幀結(jié)束由硬件實(shí)現(xiàn)。8:CANbus數(shù)據(jù)幀仲裁段解析標(biāo)準(zhǔn)格式的標(biāo)識(shí)符長(zhǎng)度的是11位,緊隨其后的是RTR位,用于表明此幀是數(shù)據(jù)幀還是遠(yuǎn)程幀。IDE位用于表明此幀是標(biāo)準(zhǔn)幀還是擴(kuò)展幀。擴(kuò)展格式的標(biāo)識(shí)符長(zhǎng)度的是29位,緊隨其后的是RTR位,用于表明此幀是數(shù)據(jù)幀還是遠(yuǎn)程幀。IDE位用于表明此幀是標(biāo)準(zhǔn)幀還是擴(kuò)展幀。CAN控制器都有相關(guān)的寄存器與這些位對(duì)應(yīng)。只需要操作寄存器就行了。ID可以根據(jù)自己的需要
8、設(shè)置,比如可以把它當(dāng)做地址。節(jié)點(diǎn)接收數(shù)據(jù)的時(shí)候主要就是過濾這里設(shè)置的ID。這點(diǎn)非常重要,要認(rèn)真體會(huì)?。。。。?!9:CANb