前言
CAN 總線對于汽車相當于人的神經(jīng)系統(tǒng)孵延,其重要性不言而喻吕漂。所以懂一些CAN總線相關(guān)的知識對于汽車人來說是必不可少的,今天開始研究CAN總線隙袁。這個系列算是讀書筆記痰娱,只記錄最干的干貨,有些知識點我記的時候也不是很懂菩收,只能先記下來梨睁,等以后弄懂了再說。所以以后有很大概率會對此進行更新娜饵。
因為我也是個初學者坡贺,先踩踩坑,以后如果有能力的話會考慮寫一個系統(tǒng)一點的。
入門材料傳送門
介紹
CAN總線是廣播類型的總線遍坟。這意味著所有節(jié)點都可以偵聽到所有傳輸?shù)膱笪娜冢瑹o法將報文單獨發(fā)送給指定節(jié)點。但是CAN硬件能夠提供本地過濾功能愿伴,讓每個節(jié)點對報文有選擇性地做出響應(yīng)肺魁。
總線使用不歸零位填充。模塊以線與邏輯連接到總線:如果只有一個節(jié)點向總線傳輸邏輯0隔节,那么不管有多少個節(jié)點向總線傳輸邏輯1鹅经,整個總線都處于邏輯0狀態(tài)。
CAN標準定義四種不同的報文類型怎诫。報文使用逐位仲裁智能方案來控制對總線的訪問瘾晃,每條報文都帶有優(yōu)先級標記。
CAN報文
CAN使用短報文 ——最大實用負載是94位幻妓。報文中沒有任何明確的地址蹦误;相反,可以認為報文是通過內(nèi)容尋址肉津,也就是說强胰,報文的內(nèi)容隱式地確定其地址。
報文類型
CAN總線上有四種不同的報文類型(或“幀”):
- 數(shù)據(jù)幀
- 遠程幀
- 錯誤幀
- 過載幀
1. 數(shù)據(jù)幀
數(shù)據(jù)幀是最常見的報文類型阀圾,由下列主要部分組成:
-
仲裁字段: 當兩個或多個節(jié)點競爭總線時哪廓,確定報文的優(yōu)先級狗唉。
? ? ? ? 仲裁字段包含:
? ? ? ? a. 對于CAN 2.0A初烘,一個11位的標識符和一個支配數(shù)據(jù)幀的RTR位。
? ? ? ? b. 對于CAN 2.0B分俯,一個29位的標識符(其中還包含兩個隱性位:SRR和IDE)和RTR位肾筐。 - 數(shù)據(jù)字段:包含0到8字節(jié)數(shù)據(jù)。
- CRC字段:包含一個基于報文大部分數(shù)據(jù)計算得到的15位校驗和缸剪。校驗和用于錯誤檢測吗铐。
校驗和checksum:用于校驗目的地一組數(shù)據(jù)項的和,在云居里通信中保證數(shù)據(jù)的完整性和準確性杏节。
用法:當傳輸結(jié)束時唬渗,接收者可以根據(jù)這個數(shù)值判斷是否接到了所有的數(shù)據(jù)。如果數(shù)值匹配奋渔,那么說明傳送已經(jīng)完成镊逝。
- 應(yīng)答時隙:任何能夠正確接收報文的CAN控制器都會在每條報文的末尾發(fā)送一個應(yīng)答位。傳送節(jié)點檢查應(yīng)答位是否存在嫉鲸,如果沒有檢測到應(yīng)答位撑蒜,會重新發(fā)送報文。
未完待續(xù)