• 沒有找到結果。

第四章 網路控制介面與機器人操作

4.2 Controller Area Network-CAN 控制器區域網路

4.2.2 CAN Bus 訊框格式

訊框(Frame)是包含由傳送器送出的完整訊號的資料封包。在 CAN 協定中具有四種訊框,分別為傳送資料的 1)資料格式(Data Frame)、向遠端要求資料的 2) 遠端訊框(Remote Transmit Request Frame)、向節點報告出錯的 3) 誤碼訊框(Error Frame)、節點電路尚未 準備好會要求延遲傳送的 4) 額負載訊框(Overload Frame)。由於 CAN

41

是採差分訊號的形式來傳輸,所以訊號可分 CAN-L 跟 CAN-H,CAN-H 的訊號方向與 CAN-L 相反,下列敘述我們以 CAN-L 作為標準來分析 of Frame)、仲裁域(又包括識別碼和 RTR)、控制域(Control Field)

(又包括 IDE、r0 和資料長度碼)、資料欄(Data Field)、迴圈 冗 餘 碼 檢 驗 ( Cyclic Redundancy Check , CRC ) 域 、 確 認 域

(Acknowledgement Field),以及訊框終點(End of Frame)等。

(1) Start of frame

任何格式起始位元一定為 0,表示要求遠方傳資料回來。

(2) Arbitration Field

Identifier 為 11bits 主要功能是訊號發送時的順序排列,數值

圖 4.3 資料訊框

1

Start of frame ID10 ID0 RTR

Arbitration

42

越小優先權越高,而排列由 ID-10 至 ID-0,而 ID-10 至 ID-4 不可皆為 1。最後 RTR(Remote Transmit Request) 為傳送或遠 程要求的判斷位元,當 RTR=0 表示傳 Data 出去,RTR=1 表 示要求遠方傳資料回來。

(3) Control Field

控制段由 6 個位元組成,包括數據長度代碼和兩個將來作為 擴展格式用的保留位元。所發送的保留位元必需為 0。接收器 接收所有由 0 和 1 組合在一起的位元。如圖 4.4 控制段的 IDE 和 RB0 是保留位元一定是 0,後面的 4bit 只能是 0-8,表示後 續 data 段將傳幾個 bytes 的資料。

(4) Data Field

所需要傳的資料,先傳 MSB,只能傳 0-8 bytes 的 Data。

(5) CRC Field

如圖 4.5 所示,16bit CRC 驗證碼,最後一個 Del 為界定符,

固定為 1。

(6) Ack Field

此為接收端的回傳訊息,有兩個位元,最後一個 Del 為界定 符,固定為 1。若接收成功 Ack 就回傳 0,則傳送端就知道接 收端已接收到資料。

43

(7) END of Frame

1111111 表示結束。

2 擴展格式

如圖 4.6,資料訊框包含 Start of bit(SOB)、Arbitration Field、Control Field、.Data Filed、CRC Filed、ACK Filed、END of Frame 等七小

圖 4.5 CRC 檢驗欄與確認欄

DEL ACK DEL

Ack

IDE RB0 DLC3 DLC0

Reserived Bits

4 bits Data Length

Code

圖 4.4 控制欄與資料欄

44

節。不過 Arbitration Field 的部分多了 18bit,而 SRR 與 IDE 皆為 1。

3 向遠端要求資料的遠程格式(Remote Transmit Request Frame)

如圖 4.7 所示,當 RTR=1,表示向遠端要求資料的遠程格式 Remote Transmit Request Frame,此時的 DLC3..DLC0 為所需回傳資料的 Data bytes。且此格式無 Data Filed。

圖 4.6 擴展格式資料訊框

1 1 0 0 0 1 1

ID28 ID18 SRR IDE ID17 ID0 RTR R1 R0 Del

DLC0

DLC3 ACK Del

32 bits Arbitration Field

6 bits Control Field

0 - 64 bits Data Field

15 bits

Reserived Bits

11 msb Identifier

18 lsb Identifier

Start of frame End of frame (7 bits)

45

Start of frame ID10 ID0 RTR IDE RB0 DLC3 DLC0 Del

Del ACK

Reserived Bits

6 bits

46

5 要求延遲傳送的過載格式(Overload Frame) 有兩個方式會產生過載格式:

(1) 節點的內部條件節點處理資料中,對於下一筆資料需要延 遲。

(2) 起始於第一個間歇期間位元。間歇期間檢測到’0’, 起始於檢 測到間歇期間為’0’的下一個位元。

如圖 4.9,過載標誌會發出六個’0’,此六個’0’會破壞間歇的格式,

使其他節點知道此時有節點發出過載標誌。當發送完過載標誌,

節點會發出 8 個’1’,其他節點也會在完成後發出 7 個’1’。

6 報文間的空隙(Interframe Space)

報文間的空隙分為間歇與 bus 空閒兩種。間歇為 3 個’1’,此期間 不可傳送任何訊息,除了過載格式例外。bus 空閒為各節點都未發 送資料,所以此長度示任意的,任何節點都可在此時發送自己的

圖 4.8 出錯格式

0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Error

Flag

Error Delimiter

8 bits 6 bits

6~12 bits Superposition of

Error Flags

47

資料。當有節點處於錯誤被動,會在間歇後發出 8 個’1’,讓其他 的節點有機會重發自己的資訊。

相關文件