點擊上方藍字談思實驗室
獲取更多汽車網絡安全資訊

01
位同步
1.接收方的數據采樣
CAN總線沒有時鐘線,總線上的所有設備通過約定波特率的方式確定每一個數據位的時長
發送方以約定的位時長每隔固定時間輸出一個數據位
接收方以約定的位時長每隔固定時間采樣總線的電平,輸入一個數據位
理想狀態下,接收方能依次采樣到發送方發出的每個數據位,且采樣點位于數據位中心附近

2.接收方數據采樣遇到的問題
第一個問題: 接收方以約定的位時長進行采樣,但是采樣點沒有對齊數據位中心附近

第二個問題:接收方剛開始采樣正確,但是時鐘有誤差,隨著誤差積累,采樣點逐漸偏離

那對于上面這些問題怎么去解決呢,怎么樣才能實現理想狀態下的采樣?我們接著往下看。
3.位時序
為了靈活調整每個采樣點的位置,使采樣點對齊數據位中心附近, CAN 總線對每一個數據位的時長進行了更細的劃分,分為同步段( SS )、傳播時間段( PTS )、相位緩沖段 1 ( PBS1 )和相位緩沖段 2 ( PBS2 ),每個段又由若干個最小時間單位( Tq )構成

上面說了我們把采樣的每一個位分為若干段,然后在若干段中找到合適的位置來采樣,首先跳變沿是在同步段執行的,然后采樣是在PBS1和PBS2之間的位置來去采樣的。既然分了段之后那就可以開始去解決上面采樣的問題了,接著往下看。
4.硬同步和再同步
硬同步
每個設備都有一個位時序計時周期,當某個設備(發送方)率先發送報文,其他所有設備(接收方)收到SOF的下降沿時,接收方會將自己的位時序計時周期撥到SS段的位置,與發送方的位時序計時周期保持同步
硬同步只在幀的第一個下降沿(SOF下降沿)有效
經過硬同步后,若發送方和接收方的時鐘沒有誤差,則后續所有數據位的采樣點必然都會對齊數據位中心附近
直接說吧,也就是我們給發送方和接收方各自設置一個定時器,當發送方上一個位發送完成之后在EOF狀態時,發送方和接收方的定時器都回歸到SS的位置 ,這種是對于第一個下降沿有效的,然后就是如果發送方和接收方的“定時器”沒問題的話那么后繼的采樣就不會出錯了,會實現一直保持采樣的數據位的中心附近。硬同步這里就很好的解決了第一個問題,但是如果出現了第二個問題也就是第一個下降沿對齊好了,但是發送方和接收方的“定時器”對不上,那就要用后面一個再同步的方法來解決了。

再同步
若發送方或接收方的時鐘有誤差,隨著誤差積累,數據位邊沿逐漸偏離SS段,則此時接收方根據再同步補償寬度值(SJW)通過加長PBS1段,或縮短PBS2段,以調整同步
再同步可以發生在第一個下降沿之后的每個數據位跳變邊沿
再同步就是如果出現了第一個下降沿雖然對齊了,但是由于發送方和接受方的時鐘出現了誤差,那就要去

5.波特率的計算

02
仲裁
1.多設備同時發生遇到的問題
CAN總線只有一對差分信號線,同一時間只能有一個設備操作總線發送數據,若多個設備同時有發送需求,該如何分配總線資源?
解決問題的思路:制定資源分配規則,依次滿足多個設備的發送需求,確保同一時間只有一個設備操作總線
下面就是波形發送過程中可能遇到的問題,其中當一個波形正在發送的時候,另外一個設備也想發送波形,這就會出現沖突,那怎么去解決這個沖突呢,這里就需要用到仲裁的相關方法了。

2.資源分配1——先占先得
若當前已經有設備正在操作總線發送數據幀/遙控幀,則其他任何設備不能再同時發送數據幀/遙控幀(可以發送錯誤幀/過載幀破壞當前數據)
任何設備檢測到連續11個隱性電平,即認為總線空閑,只有在總線空閑時,設備才能發送數據幀/遙控幀(所以前面規定位填充規則是有原因的)
一旦有設備正在發送數據幀/遙控幀,總線就會變為活躍狀態,必然不會出現連續11個隱性電平,其他設備自然也不會破壞當前發送
若總線活躍狀態其他設備有發送需求,則需要等待總線變為空閑,才能執行發送需求
看完了上面這些說明,其實說白了就是跟排隊一樣的,先到先得,當有信號在處于發送的過程中,另外一個信號想拿到CAN總線發送就必須等前面那個信號發送完成才可以去發送自己的。這也是很好處理了上面那個圖所展示的問題,但還有一個問題就是,如果有多個信號同時發生的話,那該怎么去仲裁呢?往下看。
3.資源分配2——非破壞性仲裁
若多個設備的發送需求同時到來或因等待而同時到來,則CAN總線協議會根據ID號(仲裁段)進行非破壞性仲裁,ID號小的(優先級高)取到總線控制權,ID號大的(優先級低)仲裁失利后將轉入接收狀態,等待下一次總線空閑時再嘗試發送
實現非破壞性仲裁需要兩個要求:
線與特性:總線上任何一個設備發送顯性電平0時,總線就會呈現顯性電平0狀態,只有當所有設備都發送隱性電平1時,總線才呈現隱性電平1狀態,即:0 & X & X = 0,1 & 1 & 1 = 1 (雖然還有一個線或特性,不過很多設備基本上都是使用線與特性,電平0是強于電平1的)
回讀機制:每個設備發出一個數據位后,都會讀回總線當前的電平狀態,以確認自己發出的電平是否被真實地發送出去了,根據線與特性,發出0讀回必然是0,發出1讀回不一定是1
過程如下:
數據位從前到后依次比較,出現差異且數據位為1的設備仲裁失利,比如下面單元1和單元2發送的過程中,在單元1出現紅色的之前,兩個單元發送的和回讀的結果都是一樣的,所以二者認為自己發送的都是沒問題的,會選擇繼續發送,但是當單元1發送隱性1時(紅色部分),而單元2發送先性0的時候,就出現沖突了,然后根據線與規則,0是優先于1的,所以單元1就會仲裁失敗,而停止發送,單元2則是繼續發送直到結束。

4.數據幀和遙控幀的優先級
數據幀和遙控幀 ID 號一樣時,數據幀的優先級高于遙控幀,因為數據幀的RTR是顯性0的,而遙控幀的是隱性1的,故根據仲裁數據幀優先。

5.標準格式和擴展格式的優先級
標準格式 11 位 ID 號和擴展格式 29 位 ID 號的高 11 位一樣時,標準格式的優先級高于擴展格式( SRR 必須始終為 1 ,以保證此要求)
同樣的,對于ID相同的擴展數據幀和標準數據幀,標準數據幀的RTR為0的時候,擴展數據幀的SRR(代替RTR)為隱性1,故標準數據幀優先。

看完上面仲裁的過程方式,這里可能就會有人問了,如果有位填充插入的話會不會影響到仲裁結果呢?我可以很肯定的告訴你,不會。因為,比如信號A和信號B在進行對比仲裁的時候,按照原來沒有位填充的結果時候,A是優先于B的。但如果A和B都進行了相關位填充之后,我們可以這樣子想,在原來的形式A和B出現區分的那個位之前(也就是標紅的位),前面的位是一致的,那也就說明就是說有位填充,那填充之后區分位的前面依然是一個月,沖裁到的區分位還是那個位,后面就不需要去管了,都已經仲裁出結果了,后面管他怎么插入填充都無所謂了的。
03
錯誤處理
1.錯誤類型
錯誤共有 5 種: 位錯誤、填充錯誤、 CRC 錯誤、格式錯誤、應答錯誤

2.錯誤狀態
錯誤幀:總線上所有設備都會監督總線的數據,一旦發現“位錯誤”或“填充錯誤”或“ CRC 錯誤”或“格式錯誤”或“應答錯誤” ,這些設備便會發出錯誤幀來破壞數據,同時終止當前的發送設備
主動錯誤狀態的設備正常參與通信并在檢測到錯誤時發出主動錯誤幀
被動錯誤狀態的設備正常參與通信但檢測到錯誤時只能發出被動錯誤幀
總線關閉狀態的設備不能參與通信
每個設備內部管理一個TEC和REC,根據TEC和REC的值確定自己的狀態
錯誤幀如下所示(6位錯誤標志+8位錯誤界定符),對于主動錯誤,當前設備會發送主動錯誤幀,也就是拿到CAN總線,在上面發送連續6個顯性0,這時候就會把其他設備拿到的這個數據給破壞掉;而對于被動錯誤是設備只能發送被動錯誤幀,也就是連續6個隱性1,這時候是不會破壞其他設備的數據的。

在開始的時候全部設備都是默認為主動錯誤狀態的,對于錯誤狀態之間的切換是要根據當前設備TEC和REC的值來去判斷的,如果這個設備發送出現錯誤的時候那么TEC就會向上增加,如果接收錯誤的時候REC也會向上增加,如果發送數據沒問題或者接收沒問題那么TEC或者REC就減少,當TEC或者REC其中的一個大于臨界值127的時候就會進入到被動錯誤狀態,這說明這個設備問題有點大,那就不能在主動錯誤狀態,不然老是破壞其他設備的數據(說白了就是自己出問題不爽了就去影響別人),如果這個設備在處于被動狀態的話TEC還是一直往上漲(被動錯誤狀態接受REC是不影響的,這里就不需要去考慮),知道突破下一個臨界值255的時候,這時候這個設備的CAN總線就會關閉,不參與通訊了,也就是關小黑屋,當然CAN總線還是給他留條后路的,假如這個設備的相關信息很重要那還是得回來通訊的,也就是如果總線上檢測到128次連續的11位隱性1,那經過這個時間段就可以回歸到主動錯誤狀態繼續通訊。

3.錯誤計數器
下面可以參考一下TEC和REC在不同情況下的錯誤計數值。

4.波形示例
設備處于主動錯誤狀態,發送標準數據幀,正常傳輸

設備處于主動錯誤狀態,發送標準數據幀,檢測到ACK錯誤

設備處于被動錯誤狀態,發送標準數據幀,檢測到ACK錯誤
下面我們可以看出相較于前面的主動錯誤狀態,被動錯誤的時候在3位的幀間隔緊接著還有8位延遲傳送,這里的話,如果一個主動錯誤狀態的設備和一個被動錯誤狀態的設備都想發數據,主動錯誤設備是可以拿到CAN總線,然后就開始發送數據,另外被動錯誤是有一個延遲的,本身來說就是趕不上主動錯誤的腳步,所以這里就不會涉及到跟主動錯誤設備發送仲裁關系,而是等主動錯誤設備發送完后被動設備才能發送的優先排隊關系。

來源:CSDN@Fitz&
https://blog.csdn.net/m0_73633088/article/details/141175701
end

精品活動推薦


AutoSec系列沙龍


專業社群

部分入群專家來自:
新勢力車企:
特斯拉、合眾新能源-哪吒、理想、極氪、小米、賓理汽車、極越、零跑汽車、阿維塔汽車、智己汽車、小鵬、嵐圖汽車、蔚來汽車、吉祥汽車、賽力斯......
外資傳統主流車企代表:
大眾中國、大眾酷翼、奧迪汽車、寶馬、福特、戴姆勒-奔馳、通用、保時捷、沃爾沃、現代汽車、日產汽車、捷豹路虎、斯堪尼亞......
內資傳統主流車企:
吉利汽車、上汽乘用車、長城汽車、上汽大眾、長安汽車、北京汽車、東風汽車、廣汽、比亞迪、一汽集團、一汽解放、東風商用、上汽商用......
全球領先一級供應商:
博世、大陸集團、聯合汽車電子、安波福、采埃孚、科世達、舍弗勒、霍尼韋爾、大疆、日立、哈曼、華為、百度、聯想、聯發科、普瑞均勝、德賽西威、蜂巢轉向、均聯智行、武漢光庭、星紀魅族、中車集團、贏徹科技、濰柴集團、地平線、紫光同芯、字節跳動、......
二級供應商(500+以上):
Upstream、ETAS、Synopsys、NXP、TUV、上海軟件中心、Deloitte、奇安信、為辰信安、云馳未來、信大捷安、信長城、澤鹿安全、紐創信安、復旦微電子、天融信、奇虎360、中汽中心、中國汽研、上海汽檢、軟安科技、浙江大學......
人員占比

公司類型占比

更多文章
關于涉嫌仿冒AutoSec會議品牌的律師聲明
一文帶你了解智能汽車車載網絡通信安全架構
網絡安全:TARA方法、工具與案例
汽車數據安全合規重點分析
淺析汽車芯片信息安全之安全啟動
域集中式架構的汽車車載通信安全方案探究
系統安全架構之車輛網絡安全架構
車聯網中的隱私保護問題
智能網聯汽車網絡安全技術研究
AUTOSAR 信息安全框架和關鍵技術分析
AUTOSAR 信息安全機制有哪些?
信息安全的底層機制
汽車網絡安全
Autosar硬件安全模塊HSM的使用
首發!小米雷軍兩會上就汽車數據安全問題建言:關于構建完善汽車數據安全管理體系的建議