● 8 Byte Data TX
2017年1月12日 星期四
CAN bus (Controller Area Network) - Bit Encoding
● CAN bus Non-Return-to-Zero-Coding
● CAN bus Bit-Stuffing Rule
● CAN bus Bit-Timing
● CAN bus Sub-Bit Segments
每一個 Bit Timing Segment 是由整數個單位時間所組成, 稱為 Time Quanta (TQ)
TQ 設定為 2*(BRP + 1 )*(Tosc) -> (Tosc = 1/Fosc)
更改Baud Rate的預除器(BRP) 將變更TQ 的時間 (Min = 1:1, Max = 1:64)
● CAN bus Bit-Stuffing Rule
● CAN bus Bit-Timing
● CAN bus Sub-Bit Segments
每一個 Bit Timing Segment 是由整數個單位時間所組成, 稱為 Time Quanta (TQ)
TQ 設定為 2*(BRP + 1 )*(Tosc) -> (Tosc = 1/Fosc)
更改Baud Rate的預除器(BRP) 將變更TQ 的時間 (Min = 1:1, Max = 1:64)
● CAN bus Practical Bus Length
● CAN bus Resynchronization (1)
● CAN bus Resynchronization (2)
CAN bus (Controller Area Network) - Error Handling(2)
● CAN bus Error Handling - Error States of CAN Node
每一個 CAN node 都有各自獨立的 傳送以及接收錯誤計數器 :
TEC ( Transmit Error Counter )
REC ( Receive Error Counter )
CAN 協定根據Error Counter 的內容將錯誤狀態分為三種 :
Error Active、Error Passive、Bus-Off
根據 Node 的狀態不同, 控制 CAN Bus 的能力也跟著調整 ( Active > Passive > Bus-Off )
如果到達了 Bus-Off 的狀態條件 (TEC>255), CAN node將自身設定為完全離線狀態
進入Bus-Off狀態的Node ; CAN 定義了Recovery的程序以便使其重回到Active狀態
● Error-Active :
CAN node可以主動地傳送或接收訊息(messages)和Error-Frames(一般正常的工作模式)
偵測到錯誤時,CAN Node 將送出正常 Error Frame( 6 個 Dominate 位元的 Active Error Flag)
的方式將正傳送中的 message 中斷掉
這樣的做法違反了Bit-Stuffing的原則,所以其他的CAN Node也將產生它們自己的Error Frames(稱為錯誤回應旗標 -> Error Echo Flags)。
每當偵測到有錯誤發生, 適當的錯誤計數器,一旦Error Frame 完成後,bus 的活動又回到正常狀態,Message 將會被重新傳送
● Error-Passive :
當TEC或REC計數器超過了127,CAN Node變進入Error-Passive的狀態
Passive Error Flags的Error Frames將不會影響傳送中的 Message
當Error Frame完成後,處於Error-Passive的Node會等到以下條件符合才會被致能傳送
在Dominate位元之後有3個Recessive位元(Intermission)加上8個Recessive位元的時間長(Suspend Transmission)
● CAN bus Error Handling - Passive Error Frame
● CAN bus Error Handling - Suspend Passive Transmission
● CAN bus Error Handling - Receive Error Counter
每一個 CAN node 都有各自獨立的 傳送以及接收錯誤計數器 :
TEC ( Transmit Error Counter )
REC ( Receive Error Counter )
CAN 協定根據Error Counter 的內容將錯誤狀態分為三種 :
Error Active、Error Passive、Bus-Off
根據 Node 的狀態不同, 控制 CAN Bus 的能力也跟著調整 ( Active > Passive > Bus-Off )
如果到達了 Bus-Off 的狀態條件 (TEC>255), CAN node將自身設定為完全離線狀態
進入Bus-Off狀態的Node ; CAN 定義了Recovery的程序以便使其重回到Active狀態
● Error-Active :
CAN node可以主動地傳送或接收訊息(messages)和Error-Frames(一般正常的工作模式)
偵測到錯誤時,CAN Node 將送出正常 Error Frame( 6 個 Dominate 位元的 Active Error Flag)
的方式將正傳送中的 message 中斷掉
這樣的做法違反了Bit-Stuffing的原則,所以其他的CAN Node也將產生它們自己的Error Frames(稱為錯誤回應旗標 -> Error Echo Flags)。
每當偵測到有錯誤發生, 適當的錯誤計數器,一旦Error Frame 完成後,bus 的活動又回到正常狀態,Message 將會被重新傳送
● Error-Passive :
當TEC或REC計數器超過了127,CAN Node變進入Error-Passive的狀態
Passive Error Flags的Error Frames將不會影響傳送中的 Message
當Error Frame完成後,處於Error-Passive的Node會等到以下條件符合才會被致能傳送
在Dominate位元之後有3個Recessive位元(Intermission)加上8個Recessive位元的時間長(Suspend Transmission)
● CAN bus Error Handling - Passive Error Frame
● CAN bus Error Handling - Suspend Passive Transmission
● Bus-Off :
當TEC計數器值超過 255,控制器將進入Bus-Off狀態
CAN Node將無法傳送或接收任何的Message或錯誤狀態
經過以下的程序,CAN Node可再度回到Error Active的狀態
接收到正確的Bus Recovery程序(11個連續的Recessive位元發生128次)
經由硬體或軟體的重置動作。
將控制器設定成Configuration Mode
● CAN bus Error Handling - Transmit Error Counter
● CAN bus Error Handling - Receive Error Counter
● 錯誤偵測的的重點整理
CAN Nodes可依錯誤的嚴重程度來自動地減少它們對Bus的控制能力
不同Error-States間的差異在於錯誤的Node該如何被限制行為
CAN對錯誤時的能力限制(Fault Confinement)可防止有缺陷的Node使得整個網路當掉
● CAN bus Overload Frame
當一個Node需要較多的時間來處理所接收的資料時,便送出Overload Frame
當間隔位元少於規定值時(最少要 3 個 recessive bits)也會發生
間隔位元(Intermission)使CAN Node有時間做內部資料處理
● Interframe Space
幀間空間包括Intermission、Bus idel
如果是"Error-Passive"的Node要發送報文時,Interframe Space除了Intermission、Bus idel,
還包括Suspend Transmission
不是“錯誤被動”的Node,Interframe Space如下 :
是“錯誤被動”的Node,Interframe Space如下 :
CAN bus (Controller Area Network) - Error Handling(1)
● CAN bus Error Handling - Globalization of Local Errors
● CAN bus Error Handling - Active Error Frame
Active error flag : 6 個連續的“顯性”位元組成
Passive error flag : 6 個連續的“隱性”位元組成
● CAN bus Error Handling - Active Error Frame
Active error flag : 6 個連續的“顯性”位元組成
Passive error flag : 6 個連續的“隱性”位元組成
● CAN bus Error Handling - Bit-Stuffing Error
CAN 的協定明確的定義不可以有超過 5 個狀態相同的 bit連續發生,若有則須要於 5 個相同的 bit 後補一個反相的 bit,在接收的過濾器中這個額外的Bit會被排除如果有 6 相同的 bit 在 SOF 以及 CRC Delimiter 間連續發生, 則被視為違反了位元填充 ( bit Stuffing ) 的原則,將產生Error Frame 來回應偵測到的錯誤,原先的 message 將在 Error Frame 結束後重送
● CAN bus Error Handling - Bit Error
送出隱性訊號被顯性訊號覆蓋,標示符與應答段例外
當傳送端發現它送出的信號與實際出現在CAN Bus 上的不同, 則判斷有Bit Error 發生
● CAN bus Error Handling - CRC Error
15-bit 的CRC 會自動的被加入被傳送中的Message 之CRC 欄位中所有node 皆接收Message, 並計算CRC 後與接收到的CRC 資料相比對若兩者CRC 不相等則視為發生CRC 錯誤並且產生一個Error Frame原先的 message 將在 Error Frame 結束後重送
● CAN bus Error Handling - Acknowledgement Error
傳送中的 Node 在Ack Slot 時檢查Ack位元,此時它送出一個Recessive位元並檢查是否有收到Dominant位元,如果偵測到dominant 位元發生,表示至少有一個node 已正確地收到Message
否則,將視為有Ack 錯誤發生,將產生一個“示誤封包(Error Message)”並重新傳送此次的資料
CAN bus (Controller Area Network) - Remote Frame
● CAN bus Remote Frame
與 Data Frame 一樣 , 有兩種型式的 Remote Frame,依據不同版本的 CAN 協定規範而有差異,但新版本可相容於舊的版本
RTR=1,表向遠端要求資料的遠程格式Remote Transmit Request Frame
DLC3 ~ DLC0為所需回傳資料的Data bytes。且此格式無資料段Data Filed
與 Data Frame 一樣 , 有兩種型式的 Remote Frame,依據不同版本的 CAN 協定規範而有差異,但新版本可相容於舊的版本
RTR=1,表向遠端要求資料的遠程格式Remote Transmit Request Frame
DLC3 ~ DLC0為所需回傳資料的Data bytes。且此格式無資料段Data Filed
CAN bus (Controller Area Network) - Data Frame
● CAN bus Data Frame - 兩種型式
● Standard Data Frame
● Extended Data Frame
◎ CAN bus Data Frame - SOF (Start of Frame)
起始位元Start of Frame(SOF)一定是 "0",表示節點要開始傳送報文出去
◎ CAN bus Data Frame - Arbitration Field
Arbitration Field的功用為優先權的判斷與資料接收與否的識
RTR為傳送或遠程要求的判斷位元,當RTR= 0 表示傳 Data 出去,RTR=1 表示要求遠方傳資料回來
◎ CAN bus Data Frame - Control Field
IDE/RB1和RB0是保留位元,一定是 "0"
Data Length Code (DLC) ,4bit只能是0-8,用來表示後續Data段將傳送幾個bytes的資料
◎ CAN bus Data Frame - Data Field
先傳MSB,只能傳 0 ~ 8 bytes的Data
◎ CAN bus Data Frame - CRC Field
CRC驗證碼,最後Del為界定符,固定為1
◎ CAN bus Data Frame - Acknowledge Field
接收端的回傳訊息,兩個位元,最後Del為界定符,固定為1
接收成功Ack Solt就回傳 0,則傳送端就知道接收端已接收到資料
◎ CAN bus Data Frame - End of Frame (EOF)
七個隱性表結束‘1111111’
● Standard Data Frame
● Extended Data Frame
◎ CAN bus Data Frame - SOF (Start of Frame)
起始位元Start of Frame(SOF)一定是 "0",表示節點要開始傳送報文出去
◎ CAN bus Data Frame - Arbitration Field
Arbitration Field的功用為優先權的判斷與資料接收與否的識
RTR為傳送或遠程要求的判斷位元,當RTR= 0 表示傳 Data 出去,RTR=1 表示要求遠方傳資料回來
◎ CAN bus Data Frame - Control Field
IDE/RB1和RB0是保留位元,一定是 "0"
Data Length Code (DLC) ,4bit只能是0-8,用來表示後續Data段將傳送幾個bytes的資料
◎ CAN bus Data Frame - Data Field
先傳MSB,只能傳 0 ~ 8 bytes的Data
◎ CAN bus Data Frame - CRC Field
CRC驗證碼,最後Del為界定符,固定為1
◎ CAN bus Data Frame - Acknowledge Field
接收端的回傳訊息,兩個位元,最後Del為界定符,固定為1
接收成功Ack Solt就回傳 0,則傳送端就知道接收端已接收到資料
◎ CAN bus Data Frame - End of Frame (EOF)
七個隱性表結束‘1111111’
CAN bus (Controller Area Network) - CAN Message Type
● CAN 的分類
標準格式(Basic can)與擴展格式(Peli can),差異如下:
速度: 標準格式(Basic can) 250k
擴展格式(Peli can) 1m
辨識欄位 (IDENTIFIER):
標準格式(Basic can) 11bit
擴展格式(Peli can) 11bit+18bit=29bit
擴展格式(Peli can)可以相容標準格式(Basic can)
● CANBUS Message :
1. Data Frame (傳送資料的資料格式)
最為普遍的類型
資料被從一個節點傳送到所有的節點
2. Remote Transmit Request Frame (向遠端要求資料的遠程格式)
與 Data Frame 極為相似 (只有 RTR bit 被設為 1)
用來向其它的 CAN node 主動要求資料之用
3. Error Frame (向節點報告出錯的出錯格式)
用來表示在 CAN bus 上有錯誤狀況被偵測到
4. Overload Frame (節點電路尚未準備好會要求延遲傳送的過載格式)
用來告知其他的 CAN nodes, 必須有更多的時間來處理收到的資料
主要的功能是延遲下一個封包被傳送的時間
5. Interframe Space (報文間的空隙)
標準格式(Basic can)與擴展格式(Peli can),差異如下:
速度: 標準格式(Basic can) 250k
擴展格式(Peli can) 1m
辨識欄位 (IDENTIFIER):
標準格式(Basic can) 11bit
擴展格式(Peli can) 11bit+18bit=29bit
擴展格式(Peli can)可以相容標準格式(Basic can)
● CANBUS Message :
1. Data Frame (傳送資料的資料格式)
最為普遍的類型
資料被從一個節點傳送到所有的節點
2. Remote Transmit Request Frame (向遠端要求資料的遠程格式)
與 Data Frame 極為相似 (只有 RTR bit 被設為 1)
用來向其它的 CAN node 主動要求資料之用
3. Error Frame (向節點報告出錯的出錯格式)
用來表示在 CAN bus 上有錯誤狀況被偵測到
4. Overload Frame (節點電路尚未準備好會要求延遲傳送的過載格式)
用來告知其他的 CAN nodes, 必須有更多的時間來處理收到的資料
主要的功能是延遲下一個封包被傳送的時間
5. Interframe Space (報文間的空隙)
CAN bus (Controller Area Network) - CAN bus Network(2)
● CAN bus Broadcast Communication
● CAN bus Remote Request
● CAN bus Multiple Bus Access
CSMA/CD:
允許多個節點在同一BUS,當偵測到第一個"0"時,其它節點會自動轉到監聽的模式,直到那筆報文送完,才可以發送其他報文。
BUS上"0"可以覆蓋"1",所以"0"的優先權大於"1"。
● CAN Bus Arbitration Method
● CAN bus Remote Request
● CAN bus Multiple Bus Access
CSMA/CD:
允許多個節點在同一BUS,當偵測到第一個"0"時,其它節點會自動轉到監聽的模式,直到那筆報文送完,才可以發送其他報文。
BUS上"0"可以覆蓋"1",所以"0"的優先權大於"1"。
● CAN Bus Arbitration Method
訂閱:
文章 (Atom)


















































