CAN總線接□模塊工作原理
1.CAN模塊簡介
控制器局域網(wǎng)(CAN)模塊是用于與其他外圍設(shè)備或單片機進行通信的模塊,這種接口協(xié)議能在較大的噪聲 環(huán)境中進行通信,具有良好的擾干擾性能。
CAN模塊是一個通信控制器,執(zhí)行的是Bosch公司的CAN2.0A/B協(xié)議。它能支持CAN1.2、CAN 2.0A、CAN 2.OB 協(xié)議的舊版本和CAN2.OB現(xiàn)行版本,此控制器模塊包含完整的CAN系統(tǒng)。
CAN模塊由協(xié)議驅(qū)動和信息緩沖及控制組成,CAN協(xié)議驅(qū)動CAN總線上接收和發(fā)送信息的所有功能。信息裝載 到某個相應(yīng)的數(shù)據(jù)寄存器后再發(fā)送,通過讀相應(yīng)的寄存器可檢查狀態(tài)與錯誤信息。在CAN總線上檢測到的任 何信息都要進行錯誤檢查,然后與過濾器進行比較,判斷是否被接收和存儲到兩個接收寄存器之一。
2.CAN模塊支持的幀類型
CAN模塊支持以下幀類型:標(biāo)準(zhǔn)數(shù)據(jù)幀、擴展數(shù)據(jù)幀、遠(yuǎn)程幀、出錯幀、過載幀和空閑幀。
(1)數(shù)據(jù)幀。
用于各節(jié)點之間傳送數(shù)據(jù)消息,由7個不同的位場組成:幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC場、應(yīng)答 場和幀結(jié)束。數(shù)據(jù)幀結(jié)構(gòu)如圖1所示。
圖1 數(shù)據(jù)幀組成
(2)遠(yuǎn)程幀。
當(dāng)CAN網(wǎng)絡(luò)上一個節(jié)點需要其他節(jié)點所擁有的數(shù)據(jù)信息時,可以通過發(fā)送遠(yuǎn)程幀來請求另一節(jié)點發(fā)送。該 遠(yuǎn)程幀的標(biāo)識符標(biāo)識了所需數(shù)據(jù)的類型,因此,被送回的數(shù)據(jù)信息的標(biāo)識符和遠(yuǎn)程幀的標(biāo)識符完全一致。數(shù) 據(jù)源節(jié)點在接收到遠(yuǎn)程幀后,根據(jù)遠(yuǎn)程幀的標(biāo)識符判斷所需數(shù)據(jù)信`患類型,并在總線空閑時將相應(yīng)數(shù)據(jù)送 出。遠(yuǎn)程幀由6個位場組成:幀起始、仲裁場、控制場、CRC場、應(yīng)答場和幀結(jié)束。除了沒有數(shù)據(jù)場和RTR為 隱性外,遠(yuǎn)程幀結(jié)構(gòu)和數(shù)據(jù)幀完全相同,遠(yuǎn)程幀結(jié)構(gòu)如圖2所示。
圖2 遠(yuǎn)程幀結(jié)構(gòu)
(3)錯誤幀。
為進行錯誤界定,每個CAN控制器均設(shè)有兩個錯誤計數(shù)器:發(fā)送錯誤計數(shù)器(TEC)和接收錯誤計數(shù)器 (REC)。CAN總線上的所有節(jié)點按其錯誤計數(shù)器數(shù)值情況可分為3個狀態(tài):錯誤活動狀態(tài)、錯誤認(rèn)可狀態(tài)和 總線關(guān)閉狀態(tài)。節(jié)點狀態(tài)轉(zhuǎn)換如圖3所示。
圖3 節(jié)點狀態(tài)轉(zhuǎn)換
上電復(fù)位后,兩個錯誤計數(shù)器的數(shù)值都為0,節(jié)點處于錯誤活動狀態(tài),可正常參與總線通信,檢測到錯誤時 ,發(fā)送活動錯誤標(biāo)志。當(dāng)錯誤計數(shù)器任一數(shù)值超過127時,節(jié)點進入錯誤認(rèn)可狀態(tài)。處于錯誤狀態(tài)的節(jié)點可 參與總線通信,但出錯后,發(fā)送認(rèn)可錯誤標(biāo)志,并在開始進一步發(fā)送數(shù)據(jù)之前等待一段附加時間(暫停發(fā)送 場)。
當(dāng)發(fā)送錯誤計數(shù)器和接收計數(shù)器均小于或等于127時,節(jié)點從錯誤認(rèn)可狀態(tài)再次變?yōu)殄e誤活動狀態(tài)。若發(fā)送 錯誤計數(shù)器數(shù)值超過255后,節(jié)點進入總線關(guān)閉狀態(tài),既不能向總線發(fā)送數(shù)據(jù),也不能從總線接收數(shù)據(jù)。當(dāng) 軟件執(zhí)行操作模式請求命令,并等待128次總線釋放(BusˉFree)序列(11位連續(xù)隱性位)后,節(jié)點從總線 脫離狀態(tài)重新回到錯誤活動狀態(tài)。
錯誤幀由兩個不同的位場組成,第一個場由來自不同的節(jié)點的錯誤標(biāo)志疊加而成,第二個場為錯誤界定符 ,錯誤幀結(jié)構(gòu)如圖4所示。
圖4 錯誤幀結(jié)構(gòu)
(4)過載幀。
超載幀由超載標(biāo)志和超載界定符組成。超載標(biāo)志由6個顯性位組成,其格式與活動錯誤標(biāo)志相同。超載界 定符由8個隱性位組成,其格式與錯誤界定符相同。導(dǎo)致發(fā)送超載幀的兩個條件為:
①一個接收節(jié)點內(nèi)部接收條件未準(zhǔn)備好,要求延遲下一個數(shù)據(jù)幀或遠(yuǎn)程幀發(fā)送;
②在間歇場(3位)檢測到顯性位。
當(dāng)超載標(biāo)志發(fā)出后,每個節(jié)點監(jiān)視總線狀態(tài),直至檢測到從顯性至隱性位的跳變,此時,所有的節(jié)點均己 完成了超載標(biāo)志的發(fā)送,隨后所有節(jié)點開始發(fā)送8個隱性位組成的超載界定符,超載幀結(jié)構(gòu)如圖5所示。
圖5 超載幀結(jié)構(gòu)
(5)空閑幀。
數(shù)據(jù)幀及遠(yuǎn)程幀與前幀消息之間的間隔被稱為幀間空間的場隔開,如圖6所示,幀間
圖6 不包含暫停發(fā)送場的幀間空間
空間由間歇場和總線空閑場組成,前面已經(jīng)發(fā)送過報文的錯誤節(jié)點還包括暫停發(fā)送場。間歇場由3個隱性位 組成,在此期間,CAN節(jié)點不進行幀發(fā)送。間歇場的存在使CAN控制器在下次消息發(fā)送前有時間進行內(nèi)部處理 操作。
總線空閑場可以為任意長度,此時總線處于空閑狀態(tài),允許任何節(jié)點開始報文發(fā)送。等待報文發(fā)送的節(jié)點 緊隨間歇場后啟動報文發(fā)送,即在空閑場第一位期間就啟動報文發(fā)送。
如圖7所示,錯誤認(rèn)可節(jié)點完成一個報文發(fā)送后,在開始另一次報文發(fā)送或進入總線空閑狀態(tài)之前,緊隨間 歇場發(fā)送8個隱性位的暫停發(fā)送場。發(fā)送暫停發(fā)送場期間,若其他節(jié)點開始發(fā)送報文,則本節(jié)點停止送出暫 停發(fā)送場,并變?yōu)閳笪慕邮掌鳌? 圖7 包含暫停發(fā)送場的幀間空間 (6)標(biāo)準(zhǔn)數(shù)據(jù)幀。
標(biāo)準(zhǔn)數(shù)據(jù)幀的結(jié)構(gòu)如圖8所示。
圖8 標(biāo)準(zhǔn)幀格式
(7)擴展幀。
擴展幀的結(jié)構(gòu)如圖9所示。
圖9 擴展幀格式
3.傳輸過程中的可靠性和同步問題
(1)可靠性。
CAN網(wǎng)絡(luò)通信要求信息可靠傳送,但由于外界干擾不可避免地會對通信線路造成影響,誤碼總是客觀存在 的,所以網(wǎng)絡(luò)通信中必須采取某些差錯控制措施。
當(dāng)出現(xiàn)錯誤時,及時發(fā)現(xiàn)錯誤并及時加以糾正。為提高抗干擾能力和數(shù)據(jù)的可靠性,CAN采用了多種錯誤 檢測手段:發(fā)送監(jiān)視、位填充錯誤檢測、CRC校驗、格式錯誤檢測以及應(yīng)答錯誤檢測。
為保證CAN網(wǎng)絡(luò)中節(jié)點間的正常通信,必須對報文的位定時作出規(guī)定。接收同步、網(wǎng)絡(luò)傳輸延遲補償及采 樣點定位均由CAN協(xié)議集成電路的可編程位定時邏輯確定。CAN中正常位速率被定義為:在不需要重同步的情 況下,每秒傳送的位數(shù)。正常位定時被定義為一位的持續(xù)時間,實際上就是正常位速率的倒數(shù)。
(2)同步問題。
位時間可劃分為4個互不重疊的時間段:同步段(SYNC ̄SEG:SynchronizationSegment)、傳播段(PROPˉSEG:Propagation Segment)、相位緩沖段1(PHASEˉSEG:Phase Bufer Segment1)及相位緩沖段2(PHASE-SEG2:Phase Bufer Segment2)。
同步段用于總線上各節(jié)點消息傳輸同步,長度為一個時間份額,此段內(nèi)需要一個跳變沿。傳播段用于補償網(wǎng)絡(luò)內(nèi)的物理延遲時間,它是信號在總線上傳播時間、輸入比較器延遲和輸出驅(qū)動器延遲之和的兩倍,長度可被編程為1~8個時間份額。實際上,在CAN協(xié)議集成器件中并沒有定義此段。
相位緩沖段用于補償上升沿或下降沿的相位誤差,通過重同步,這兩個時間段可被用戶延長或縮短。相位緩沖段1長度可編程為1~8個時間份額,相位緩沖段2長度取值為相位緩沖段1最大值和消息處理時間之和,消息處理時間個于等于兩個時間份額(這一點在CAN協(xié)議集成器件中并未嚴(yán)格遵守,實際應(yīng)用中相位緩沖段1比相位緩沖段2長)。
由采樣點開始,保留用于計算后續(xù)位電平的時間段被定義為消息處理時間,其長度小于或等于2個時間份額。總線電平在采樣點被讀取,所以此點代表該位的數(shù)值大小。采樣點位于相位緩沖段1的末尾處。
時間份額是由振蕩器時鐘分頻得出的一個固定時間單元,在CAN協(xié)議集成器件中被稱為系統(tǒng)時鐘周期,可由一個預(yù)分頻器設(shè)定大小,時間份額由下式計算:
時間份額=m×最小時間份額
其中m為預(yù)分頻器系數(shù),最小時間份額在CAN集成器件中被稱為振蕩器時鐘周期。一個位時間中時間份額總數(shù)必須被編程在8~25之間。
網(wǎng)絡(luò)常采用的同步方式有兩種:準(zhǔn)同步和標(biāo)準(zhǔn)同步。準(zhǔn)同步又稱獨立同步,各節(jié)點均擁有時間獨立的高穩(wěn)定度振蕩時鐘,它們的頻率并不一定完全相等,但必須時間相近。準(zhǔn)同步的優(yōu)點是同步體系簡單,容易實現(xiàn),缺點是工作可靠性較差。
標(biāo)準(zhǔn)同步又分為主從同步法和相互同步法兩種,主從同步方法中,各網(wǎng)絡(luò)節(jié)點的時鐘以在網(wǎng)絡(luò)中處于重要位置的節(jié)點時鐘為基準(zhǔn)。其優(yōu)點是結(jié)構(gòu)相對簡單,網(wǎng)絡(luò)穩(wěn)定性好,缺點是網(wǎng)絡(luò)過分依賴于主時鐘,有全網(wǎng)癱瘓的危險。
和其他計算機網(wǎng)絡(luò)相比,CAN網(wǎng)絡(luò)結(jié)構(gòu)相對簡單,所以采用準(zhǔn)同步方式,每個節(jié)點都擁有自己獨立的振蕩時鐘。CAN網(wǎng)絡(luò)中,同步方式又分硬同步和重同步兩種形式,同步過程由器件自身完成。
CAN模塊使用RB3/CANRX和RB2/CANTX/INT2引腳與CAN總線驅(qū)動器接口。要配置CANRX和CANTX為CAN接口,需要將TRISB〈3>位置1,TRISB(2)位清0。
分頻器相關(guān)文章:分頻器原理 塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
評論