一、接收方數據采樣
- CAN總線沒有時鐘線,總線上的所有設備通過約定波特率的方式確定每一個數據位的時長
- 發送方以約定的位時長每隔固定時間輸出一個數據位
- 接收方以約定的位時長每隔固定時間采樣總線的電平,輸入一個數據位
- 理想狀態下,接收方能依次采樣到發送方發出的每個數據位,且采樣點位于數據位中心附近
二、位時序
為了靈活調整每個采樣點的位置,使采樣點對齊數據位中心附近,CAN總線對每一個數據位的時長進行了更細的劃分,分為同步段(SS)、傳播時間段(PTS)、相位緩沖段1(PBS1)和相位緩沖段2(PBS2),每個段又由若干個最小時間單位(Tq)構成
若是數據跳變沿正好出現在SS段(同步段),那就說明當前設備與波形達成同步。
PTS(傳播時間段):用于吸收網絡上的物理延時(發送單元的輸出延時,總線上信號的傳播延遲、接收單元的輸入延遲)
PBS1、PBS2(相位緩沖段):確定采樣點的位置,采樣點會在這兩個之間,通過調節這兩個的長度(還有PTS),就可以調節采樣點的位置。
三、硬同步
- 每個設備都有一個位時序計時周期,當某個設備(發送方)率先發送報文,其他所有設備(接收方)收到SOF的下降沿時,接收方會將自己的位時序計時周期撥到SS段的位置,與發送方的位時序計時周期保持同步
- 硬同步只在幀的第一個下降沿(SOF下降沿)有效
- 經過硬同步后,若發送方和接收方的時鐘沒有誤差,則后續所有數據位的采樣點必然都會對齊數據位中心附近
四、再同步?
- 若發送方或接收方的時鐘有誤差,隨著誤差積累,數據位邊沿逐漸偏離SS段,則此時接收方根據再同步補償寬度值(SJW)通過加長PBS1段,或縮短PBS2段,以調整同步
- 再同步可以發生在第一個下降沿之后的每個數據位跳變邊沿
注:SJW = 1~4Tq,SJW是補償的最大限值,例如有2TQ的延遲,此時給SJW為3,則只會補償給時序段兩個,而不是SJW的3個。但是有3Tq的延遲,此時SJW為2,則只補償2Tq
五、波特率的計算
六、資源分配原則
- CAN總線只有一對差分信號線,同一時間只能有一個設備操作總線發送數據,若多個設備同時有發送需求,該如何分配總線資源?
- 解決問題的思路:制定資源分配規則,依次滿足多個設備的發送需求,確保同一時間只有一個設備操作總線
(1)資源分配規則1 - 先占先得
(2)資源分配規則2 - 非破壞性仲裁
注:回讀機制,就是為了檢測自己是否與?仲裁段的ID和RTR相同,仲裁失利后就等到下一次再發送。
(3)數據幀和遙控幀的優先級
當A設備想使用遙控幀請求C設備的數據,同時B設備想用數據幀對C傳輸數據時。
數據幀和遙控幀ID號一樣時,數據幀的優先級高于遙控幀
(4)標準格式和擴展格式的優先級
標準格式11位ID號和擴展格式29位ID號的高11位一樣時,標準格式的優先級高于擴展格式(SRR必須始終為1,以保證此要求)
七、錯誤處理
錯誤共有5種: 位錯誤、填充錯誤、CRC錯誤、格式錯誤、應答錯誤
位錯誤:六-(2)講到的回讀機制,但是在仲裁段的回讀錯誤視為仲裁失利,而不是一個錯誤
(一)錯誤狀態
在此之前先復習一下先前的 五-(三)?錯誤幀:CAN簡介及幀格式
- 主動錯誤狀態的設備正常參與通信并在檢測到錯誤時發出主動錯誤幀,可以破壞別設備的數據,權力較大,若是頻繁發出錯誤,則會轉到下面的被動錯誤狀態。主動錯誤狀態是設備的初始狀態,是比較可靠的狀態
- 被動錯誤狀態的設備正常參與通信但檢測到錯誤時只能發出被動錯誤幀,不可以破壞別設備的通信,若是還是頻繁,則轉到下面總線關閉狀態
- 總線關閉狀態的設備不能參與通信
- 每個設備內部管理一個TEC和REC,根據TEC和REC的值確定自己處于上面三個當中的哪個狀態
TEC:發送錯誤計數器,每發現一個錯誤,則增加一次,正常發送一次,則減小一次
REC:接收錯誤計數器,每接收一個錯誤,則增加一次,正常接收一次,則減小一次