CAN 幀
15.2.1 CAN的基本概念
(1)報文(Messages)
總線上傳輸?shù)男畔⒓礊閳笪?,它們以若干個不同的固定格式發(fā)送,,但長度受限,。當總線空閑時,總線上任何單元均可發(fā)送新報文。
(2)信息路由(Information Routing)
在CAN系統(tǒng)中,,CAN不對單元分配站地址,報文的尋址內(nèi)容由報文的標識符指定,。標識符不指出報文的目的地,,但是這個數(shù)據(jù)的特定含義使得總線上所有單元可以通過報文濾波來判斷該數(shù)據(jù)是否與它們相符合。
?。?)位速率(Bit Rate)
即總線的傳輸速率,。在一個給定的CAN系統(tǒng)中,位速率是唯一的,,也是固定的,。
(4)優(yōu)先權(quán)(Priorities)
在總線訪問期間,,標識符定義一個靜態(tài)的報文優(yōu)先權(quán),。
5)遠程數(shù)據(jù)請求(Remote Data Request)
當總線上某單元需要請求另一單元發(fā)送數(shù)據(jù)時,可通過發(fā)送遠程幀實現(xiàn)遠程數(shù)據(jù)請求,。
?。?)多主機(Multimaster)
總線空閑時,,總線上任何單元都可以開始向總線上傳送報文,,但只有最高優(yōu)先權(quán)報文的單元可獲得總線訪問權(quán)。
?。?)仲裁(Arbitration)
總線空閑時,,若同時有兩個或兩個以上單元開始發(fā)送報文,總線訪問沖突運用逐位仲裁規(guī)則,,借助標識符ID解決,。
(8)錯誤標定和恢復(fù)時間(Error Signaling and Recovery Time)
任何檢測到錯誤的單元會標志出已被損壞的報文,。此報文會失效并將自動重傳,。如果不再出現(xiàn)錯誤,則從檢測到錯誤到下一報文的傳送開始為止,,恢復(fù)時間最多為31位的時間,。
(9)故障界定(Fault Confinement)
CAN單元能夠把永久故障和短暫的干擾區(qū)別開來,。
?。?0)連接(Connection)
CAN通信鏈路是一條可連接多單元的總線,。理論上,總線上單元數(shù)目是無限制的,,實際上,,單元數(shù)受限于延遲時間和總線的電氣負載能力。
?。?1)單通道(Single Channel)
CAN總線由單一通道組成,,借助數(shù)據(jù)重同步實現(xiàn)信息傳輸。(12)總線數(shù)據(jù)表示(Bus Values)
CAN總線上有兩種互補邏輯數(shù)值:顯性(Dominant)電平和隱性(Recessive)電平,。若顯性位與隱性位同時發(fā)送,,總線上數(shù)值將是顯性。
?。?3)應(yīng)答(Acknowledgment)
所有接收器對接收到的報文進行一致性檢查,。對于一致的報文,接收器給予應(yīng)答,;對于不一致的報文,,接收器做出標志。
15.2.2 CAN總線的位數(shù)值表示與通信距離
CAN總線上用顯性(Dominant)和隱性(Recessive)兩個互補的邏輯值表示0和1,。當在總線上出現(xiàn)同時發(fā)送顯性位和隱性位時,,總線上數(shù)值將出現(xiàn)顯性。
15.2.3 報文傳輸和幀結(jié)構(gòu)
報文傳輸由以下4個不同的幀類型表示和控制:
數(shù)據(jù)幀:數(shù)據(jù)幀將數(shù)據(jù)從發(fā)送器傳輸?shù)浇邮掌鳌?br/> 遠程幀:總線單元發(fā)出遠程幀,,請求發(fā)送具有同一標識符的數(shù)據(jù)幀,。
錯誤幀:任何單元檢測到總線錯誤就發(fā)出錯誤幀。
過載幀:過載幀用于在先行和后續(xù)數(shù)據(jù)幀(或遠程幀)之間提供一附加的延時,。
數(shù)據(jù)幀和遠程幀可以使用標準幀及擴展幀兩種格式,。它們用一個幀間空間與前面的幀分隔。
?。?)數(shù)據(jù)幀
數(shù)據(jù)幀由7個不同的位場組成:幀起始,、仲裁場、控制場,、數(shù)據(jù)場,、CRC 場、應(yīng)答場,、幀結(jié)尾,。數(shù)據(jù)幀組成如下圖。
?。?)遠程幀
遠程幀也有標準格式和擴展格式,,而且都由6 個不同的位場組成:幀起始、仲裁場、控制場,、CRC 場,、應(yīng)答場、幀結(jié)尾,。遠程幀的組成如下圖,。
(3)出錯幀
錯誤幀由兩個不同的場組成,。第一個場是由不同站提供的錯誤標志(ERROR FLAG)的疊加,;第二個場是錯誤界定符。出錯幀的組成如下圖,。
?。?)過載幀
過載幀包括兩個位場:過載標志和過載界定符。過載幀的組成如下圖,。
15.2.4 錯誤處理
1)錯誤檢測( 5種不同的錯誤類型)
位錯誤:單元在發(fā)送位的同時也對總線進行監(jiān)視,。如果所發(fā)送的位值與所監(jiān)視的位值不相同,則在位時間里檢測到一個位錯誤,。
填充錯誤:如果在使用位填充法進行編碼的信息中,,出現(xiàn)了6個連續(xù)相同的電平時,將檢測到一個填充錯誤,。
CRC錯誤:CRC序列包括發(fā)送器的CRC計算結(jié)果,。如果計算結(jié)果與接收到的CRC序列的結(jié)果不相符,則檢測到一個CRC錯誤,。
形式錯誤:當一個固定的位場含有1個或多個非法位,,則檢測到一個形式錯誤。
應(yīng)答錯誤:只要在應(yīng)答間隙期間所監(jiān)視的位不為顯性,,則發(fā)送器會檢測到一個應(yīng)答錯誤,。
2)錯誤標定
檢測到錯誤條件的站通過發(fā)送錯誤標志指示錯誤。對于“錯誤主動”的節(jié)點,,錯誤信息為“主動錯誤標志”,,對于“錯誤被動”的節(jié)點,,錯誤信息為“被動錯誤標志”,。
15.2.5 故障界定
至于故障界定,單元的狀態(tài)可能為下列三種之一:錯誤主動,、錯誤被動,、總線關(guān)閉。
錯誤主動的單元可以正常地參與總線通信并在檢測到錯誤時發(fā)出主動錯誤標志,。
錯誤被動的單元不允許發(fā)送主動錯誤標志,。錯誤被動的單元參與總線通信,在錯誤被檢測到時只發(fā)送被動錯誤標志。而且,,發(fā)送以后,,錯誤被動單元將在初始化下一個發(fā)送之前處于等待狀態(tài)。
總線關(guān)閉的單元不允許在總線上有任何的影響,。
15.2.6 位定時與同步
位定時與同步定義CAN總線的通信速率,,相關(guān)名詞有:
標稱位速率(Nominal Bit Rate):一理想的發(fā)送器在沒有重新同步的情況下每秒發(fā)送的位數(shù)量。
標稱位時間(Nominal Bit Time):1/標稱位速率,。標稱位時間可分成幾個不重疊的片段,,分別是:同步段(SYNC_SEG)、傳播段(PROG_SEG),、相位
緩沖段1(PHASE_SEG1),、相位緩沖段2(PHASE_SEG2)。
同步段(SYNC_SEG):用于同步總線上不同的節(jié)點,,這一段內(nèi)要有一個跳變沿,。
傳播段(PROG_SEG):用于補償網(wǎng)絡(luò)內(nèi)的物理延時時間。它是總線上輸入比較器延時和輸出驅(qū)動器延時總和的2倍,。
相位緩沖段1(PHASE_SEG1),、相位緩沖段2(PHASE_SEG2):用于補償邊沿階段的誤差。這兩個段可以通過重新同步加長或縮短,。
采樣點(Sample Point):讀總線電平并解釋各位的值的一個時間點,。采樣點位于相位緩沖段1之后。
信息處理時間(Information Processing Time):信息處理時間是以一個采樣點作為起始的時間段,。采樣點用于計算后續(xù)位的位電平,。
時間份額(Time Quanta):時間份額是派生于振蕩器周期的固定時間單元。存在一個可編程的預(yù)比例因子,,將整體數(shù)值范圍為1-32的整數(shù),,以最小時間份額為起點,時間份額的長度為:
時間份額=m * 最小時間份額,,其中,,m為預(yù)比例因子
時間段長度(Length of Segments):同步段為1個時間份額,傳播段的長度可設(shè)置成1,、2…8個時間份額,,相位緩沖段1的長度可設(shè)置成1、2…8個時間份額,,相位緩沖段2的長度為相位緩沖段1和信息處理時間之間的最大值,,信息處理時間少于或等于2個時間份額。
一個位時間總的時間份額值可以設(shè)置在8~25的范圍,。