CAN總線(xiàn)協(xié)議的優(yōu)點(diǎn)
? 布線(xiàn)減少,成本低
? 接線(xiàn)簡(jiǎn)單,節省時(shí)間
? 丟失消息的自動(dòng)重傳
? 支持錯誤檢測
? 靈活的數據傳輸速率
CAN 定義
CAN代表控制器局域網(wǎng),專(zhuān)為滿(mǎn)足汽車(chē)行業(yè)的需求而設計。在引入CAN之前,每個(gè)電子設備都使用多條電線(xiàn)連接到其他設備以實(shí)現通信。但是當汽車(chē)系統中的功能增加時(shí),由于布線(xiàn)系統繁瑣,維護起來(lái)很困難。在CAN總線(xiàn)系統的幫助下,只需將每個(gè)ECU連接到公共串行總線(xiàn),即可讓ECU相互通信,而無(wú)需太多復雜性。因此,與汽車(chē)系統中使用的其他協(xié)議(即CAN與LIN)相比,CAN由于復雜性較低而且更加穩健。
CAN協(xié)議可以被定義為在一個(gè)通過(guò)串行總線(xiàn)連接的電子設備網(wǎng)絡(luò )中傳輸和接收信息的一套規則。CAN網(wǎng)絡(luò )中的每個(gè)電子設備被稱(chēng)為一個(gè)節點(diǎn)。每個(gè)節點(diǎn)都必須有硬件和軟件嵌入其中進(jìn)行數據交換。一個(gè)CAN總線(xiàn)系統的每個(gè)節點(diǎn)都有一個(gè)主機微控制器單元、CAN控制器和CAN收發(fā)器。CAN控制器是一個(gè)可以嵌入在主機控制器內或單獨添加的芯片,它需要管理數據并通過(guò)收發(fā)器在串行總線(xiàn)上發(fā)送數據,反之亦然。CAN收發(fā)器芯片用于使信號適應CAN總線(xiàn)水平。
CAN是一個(gè)基于消息的協(xié)議,每個(gè)消息都由一個(gè)預先定義的唯一ID來(lái)識別。傳輸的數據包被CAN總線(xiàn)網(wǎng)絡(luò )中的所有節點(diǎn)接收,但根據ID,CAN節點(diǎn)決定是否接受它。當多個(gè)節點(diǎn)試圖同時(shí)發(fā)送數據時(shí),CAN總線(xiàn)遵循仲裁過(guò)程。
CAN 總線(xiàn)電氣規格
CAN收發(fā)器處理的CAN信號有單端信號和差分信號(CANH和CANL)。CAN_High和CAN_Low線(xiàn)路在理想狀態(tài)下為2.5V。CAN將邏輯“0”定義為顯性位,將邏輯“1”定義為隱性位。傳輸顯性位時(shí),CAN_High變?yōu)?3.5V,CAN_Low變?yōu)?.5V,即顯性位的差分電壓為2V。當發(fā)送隱性位時(shí),CAN_High和 CAN_Low線(xiàn)被驅動(dòng)到2.5V,表示隱性位的差分電壓為0V。CANH和CANL線(xiàn)的物理端應加120歐姆的CAN總線(xiàn)終端電阻,以避免任何信號反射。
圖1. CAN總線(xiàn)差分信號
CAN 的幀類(lèi)型
幀是一種定義的結構或格式,在網(wǎng)絡(luò )中攜帶有意義的數據(字節)。CAN有四種幀類(lèi)型:數據幀、遠程幀、錯誤幀、過(guò)載幀。
數據幀
數據幀包含用于傳輸的節點(diǎn)數據的幀。數據幀由提供信息的附加字段組成,即仲裁字段、控制字段、數據字段、CRC字段、2位確認字段和幀結束。
有兩種類(lèi)型的數據幀:標準幀格式、擴展幀格式
兩種格式的唯一區別是標準幀支持11位標識符,擴展幀支持29位標識符,由11位標識符和擴展18位標識符組成。IDE位在標準幀中是顯性的,在擴展幀中是隱性的。
標準幀格式:
標準幀主要用于發(fā)送數據。
圖2. 標準幀
術(shù)語(yǔ)
? SOF - 幀的開(kāi)始,表示幀傳輸的開(kāi)始。
? Identifier - 11位唯一的ID,也代表信息的優(yōu)先級值越低,優(yōu)先級越高。
? RTR - 遠程傳輸請求,它對數據幀是顯性的,對遠程幀是隱性的。
? IDE - 單一識別擴展,它對標準幀是顯性的,對擴展幀是隱性的。
? R0 - 保留位。
? DLC - 數據長(cháng)度代碼,定義了正在發(fā)送的數據的長(cháng)度,它的大小為4位。
? 數據——要傳輸的數據和長(cháng)度由DLC決定。
? CRC——循環(huán)冗余校驗,它包含前面應用程序數據的校驗和,用于錯誤檢測。
? ACK——確認,它的長(cháng)度為2位,如果接收到準確的消息,則占主導地位。
? EOF——幀的末端,必須是隱性的。
? IFS——幀間空間,它包含控制器將正確接收的幀移動(dòng)到正確位置所需的時(shí)間。
擴展幀:
圖3. 擴展幀
它與標準幀相同,但有一些額外的字段。
SRR替代反向請求。SRR位總是作為隱性位傳輸,以確?;緮祿c擴展數據幀相比具有較高的優(yōu)先權,如果兩個(gè)信息具有相同的11位標識符,它還包含一個(gè)11位標識符以外的18位標識符。
r1- 保留位。
遠程幀
遠程幀與數據幀相似,但有兩點(diǎn)不同。遠程幀是由接收方發(fā)送的,用于請求發(fā)送方提供數據,所以遠程幀和數據幀之間的區別是遠程幀不包含任何數據字段,因為它不用于數據傳輸。第二個(gè)區別是遠程幀的RTR 位為隱性狀態(tài),當總線(xiàn)上具有相同標識符的數據幀和遠程幀同時(shí)發(fā)送時(shí),由于數據幀RTR位是顯性的,數據幀將在仲裁中贏(yíng)得總線(xiàn)控制權。
錯誤幀
錯誤幀是用于接收和發(fā)送消息時(shí)檢測出錯誤時(shí),通知錯誤的幀。錯誤幀由六個(gè)顯性位組成的錯誤標志和由八個(gè)隱性位組成的錯誤界定符構成。
錯誤標志分為:主動(dòng)錯誤標志、被動(dòng)錯誤標志
主動(dòng)錯誤標志:當錯誤主動(dòng)節點(diǎn)檢測到一個(gè)總線(xiàn)錯誤時(shí)輸出的一個(gè)主動(dòng)錯誤標志,來(lái)中斷當前的數據發(fā)送。其中主動(dòng)錯誤標志由6個(gè)連續的顯性位構成。
被動(dòng)錯誤標志:當錯誤被動(dòng)節點(diǎn)檢測到一個(gè)總線(xiàn)錯誤時(shí)輸出的一個(gè)被動(dòng)錯誤標志,并緊接著(zhù)發(fā)送錯誤定界字段。其中錯誤被動(dòng)標志由6個(gè)連續的隱性位構成。
錯誤計數器:如果在總線(xiàn)上檢測到一個(gè)錯誤,那么TEC或REC計數就會(huì )增加。
1. 發(fā)送錯誤計數器(TEC)
2. 接收錯誤計數器(REC)
? 當 TEC 和 REC 小于 128 時(shí),發(fā)送活動(dòng)錯誤幀
? 當 TEC 或 REC 大于 127 且小于 255 時(shí),傳輸被動(dòng)幀
? 當TEC大于255時(shí),節點(diǎn)進(jìn)入總線(xiàn)關(guān)閉狀態(tài),此時(shí)不能發(fā)送幀
圖4. 錯誤轉換狀態(tài)圖
過(guò)載幀
過(guò)載幀是用于接收單元通知發(fā)送單元它尚未完成接收準備的幀。過(guò)載幀中包含兩個(gè)字段,過(guò)載標志和過(guò)載界定符。過(guò)載標志由6個(gè)顯性位和緊隨其后的其他節點(diǎn)產(chǎn)生的過(guò)載標志構成,過(guò)載界定符由8個(gè)隱性位組成,在以下兩種情況下,節點(diǎn)會(huì )發(fā)送過(guò)載幀:
1. 當接收單元需要發(fā)送節點(diǎn)延緩下一幀傳輸
2. 節點(diǎn)在幀間間隔檢測到非法顯性位
仲裁
仲裁是一種解決沖突的機制,當一個(gè)以上的節點(diǎn)同時(shí)準備傳輸信息時(shí)。只要總線(xiàn)是空閑的,任何節點(diǎn)都可以傳輸數據。如果多個(gè)節點(diǎn)同時(shí)準備傳輸數據,對總線(xiàn)的訪(fǎng)問(wèn)就會(huì )發(fā)生沖突,可以通過(guò)使用標識符的仲裁來(lái)解決。在仲裁過(guò)程中,每個(gè)發(fā)射器都會(huì )將傳輸的比特值與總線(xiàn)上的比特值進(jìn)行比較。如果比特值是相同的,節點(diǎn)繼續傳輸比特。如果傳輸的比特值與總線(xiàn)上的比特值不一樣,那么,優(yōu)勢比特就會(huì )覆蓋劣勢比特。
CAN報文的仲裁字段由1位或29位標識符和RTR位組成。具有最低值的標識符具有最高的優(yōu)先權。如果數據幀和遠程幀都有相同的標識符,并準備在同一時(shí)間發(fā)送數據,那么數據幀的優(yōu)先級就高,因為遠程傳輸位(RTR)在數據幀中是主導位,在遠程幀中是隱性位。
消息級CAN總線(xiàn)錯誤控制機制
與其他協(xié)議相比,即CAN與LIN、CAN與MOD總線(xiàn)相比,CAN協(xié)議是穩健的,錯誤檢查使CAN協(xié)議達到穩健。通過(guò)這些機制,如果檢測到錯誤,節點(diǎn)就會(huì )傳送一個(gè)錯誤幀并銷(xiāo)毀傳送的幀。
CRC校驗
循環(huán)冗余校驗值由發(fā)送節點(diǎn)計算并通過(guò)CRC字段發(fā)送,該值被所有節點(diǎn)接收。然后所有接收節點(diǎn)計算CRC值并將該值與發(fā)送值匹配。如果值不同,則生成錯誤幀。
ACK時(shí)隙
當發(fā)送節點(diǎn)發(fā)送消息時(shí),在確認時(shí)隙中發(fā)送一個(gè)隱性位。如果接收到一條消息,則確認槽由顯性位替換,該位將確認至少一個(gè)節點(diǎn)正確接收到該消息。如果該位是隱性的,則沒(méi)有節點(diǎn)正確接收到消息。
形式錯誤
當一個(gè)固定形式的位場(chǎng)含有1個(gè)或多個(gè)非法位,則檢測到一個(gè)形式錯誤,如幀結尾固定為隱性位,卻檢測到了顯性位。
*內容來(lái)源自PathPartner Technology,版權歸原作者所有,如涉及版權問(wèn)題請聯(lián)系溝通
如需銷(xiāo)售咨詢(xún),請聯(lián)系:sales@aisinochip.com