CAN報文
CAN總線是廣播類型的總線。這意味着所有節點都可以偵聽到所有傳輸的報文。無法將報文單獨發送給指定節點;所有節點都將始終捕獲所有報文。但是CAN硬件能夠提供本地過濾功能,讓每個節點對報文有選擇性地做出響應。
CAN報文
CAN使用短報文 – 最大實用負載是94位。報文中沒有任何明確的地址;相反,可以認爲報文是通過內容尋址,也就是說,報文的內容隱式地確定其地址。
報文類型
CAN總線上有四種不同的報文類型(或“幀”):
- 數據幀
- 遠程幀
- 錯誤幀
- 過載幀
1. 數據幀
數據幀是最常見的報文類型。由下列主要部分組成(出於簡潔性目的,忽略了一些細節):
- 仲裁字段。當兩個或多個節點競爭總線時,確定報文的優先級。仲裁字段包含:
- 對於CAN 2.0A,一個11位的標識符和一個支配數據幀的RTR位。
- 對於CAN 2.0B,一個29位的標識符(其中還包含兩個隱性位:SRR和IDE)和RTR位。
- 數據字段。包含0到8字節數據。
- CRC字段。包含一個基於報文大部分數據計算得到的15位校驗和。校驗和用於錯誤檢測。
- 應答時隙。任何能夠正確接收報文的CAN控制器都會在每條報文的末尾發送一個應答位。傳送節點檢查應答位是否存在,如果沒有檢測到應答位,會重新發送報文。
注1:請注意,總線上存在應答位不表示任何目標地址已經收到報文。唯一表示的是,總線上的一個或多個節點已經正確收到報文。
注2:仲裁字段中的標識符不一定標識報文的內容,儘管其名字會讓人如此認爲。
CAN 2.0A(“標準CAN”)數據幀CAN 2.0B(“擴展CAN”)數據幀