詳解CAN通信的位定時與同步


來源 |  汽車ECU開發
知圈  進“電子電氣群”請加微13636581676,備注架構

在依照瑞薩公司的《CAN入門書》的組織思路來學習CAN通信的相關知識,并結合網上相關資料以及學習過程中的領悟整理成筆記。好記性不如爛筆頭,加油!

1.位定時

1.1 比特率和波特率

1) 位速率:又叫做比特率(bit rata)、信息傳輸率,表示的是單位時間內,總線上傳輸的信息量,即每秒能夠傳輸的二進制位的數量,單位是bit per second。

2)波特率:又叫做傳碼率、信號傳輸率,表示的是單位時間內傳輸的碼元的數量,當兩相調制時,一個碼元用一個二進制位表示,此時波特率在數值上和比特率是一樣的,CAN總線正是兩項調制這種情況。

Tips: 比特率和波特率并不是一回事兒,這一定一定要牢記。

1.2 位時間


1.2.1 位時間的概念


位時間:表示的是一個二進制位在總線上傳輸時所需要的時間。
所以:
位速率=1/位時間

首先了解一下CAN總線系統中的兩個時鐘:晶振時鐘周期和 CAN時鐘周期。

晶振時鐘周期: 是由單片機振蕩器的晶振頻率決定的,指的是振蕩器每震蕩一次所消耗的時間長度,也是整個系統中最小的時間單位。
CAN時鐘周期: CAN時鐘是由系統時鐘分頻而來的一個時間長度值,實際上就是一個時間份額Tq??梢园凑障旅娴墓接嬎悖?/span>
CAN時鐘周期=2×晶振時鐘周期×BRP, 其中BRP叫做波特率預分頻值(baudrate prescaler)。

詳解CAN通信的位定時與同步的圖1


1.2.2 位時間的分段


如上文所述,在CAN的位定時中,一個CAN時鐘周期稱為一個時間量子 — Tq。
如下圖所示:位時間分為四個段:同步段、傳播段、相位緩沖段1、相位緩沖段2,總共8~25個時間量子(Tq)。

詳解CAN通信的位定時與同步的圖2
1)同步段(Synchronization Segment):
  • 長度固定,1個時間量子Tq;
  • 一個位的傳輸從同步段開始;
  • 同步段用于同步總線上的各個節點,一個位的跳邊沿在此時間段內。

2)傳播段(Propagation Segment):
  • 傳播段用于補償報文在總線和節點上傳輸時所產生的時間延遲;
  • 傳播段時長 ≥ 2 × 報文在總線和節點上傳輸時產生的時間延遲 ;
  • 傳播段時長可編程(1~8個時間量子Tq)。

3)相位緩沖段1(Phase Buffer Segment1):
  • 用于補償節點間的晶振誤差;
  • 允許通過重同步對該段加長;
  • 在這個時間段的末端進行總線狀態的采樣;
  • 長度可編程(1~8個時間量子Tq)

4)相位緩沖段2(Phase Buffer Segment2):
  • 用于補償節點間的晶振誤差;
  • 允許通過重同步對該段縮短;
  • 長度可編程(1~8個時間量子Tq)

于是:
tBit=tSS+tPS+tPBS1+tPBS2
tBit=tSS+tPS+tPBS1+tPBS2
tBit:位時間;tSS:同步段時間;tPS:傳播段時間;tPBS1:時間段1;tPBS2:時間段2。

2.CAN的同步機制

在CAN通信中,有兩種同步機制:硬同步與重同步。

2.1 、同步的規則
☆ 一個位時間內只允許一種同步方式,要么硬同步要么重同步;
☆ 任何一個從“隱性”到“顯性”的下降沿 都可以用于同步;
☆ 硬同步發生在報文的SOF位,所有接收節點調整各自當前位的同步段,使其位于發送的SOF位內;
☆ 重同步發生在一個報文SOF位之外的其它段,當下降沿落在了同步段之外時發生重同步;
☆ 在SOF到仲裁場發送的時間段內,如果有多個節點同時發送報文,那么這些發送節點對跳變沿不進行重同步

2.2 硬同步
硬同步發生在SOF位,所有接收節點調整各自當前位的同步段,調整寬度不限。

詳解CAN通信的位定時與同步的圖3
(1)發送節點Node_A在發送SOF位時,SOF位的下降沿在SS段;
(2)這個時候接收節點Node_B發現自己當前位的SS段和發送節點SOF位的SS段不同步。也就是說當Node_A產生SOF位SS段時,Node_B的當前位的SS段已經在5個Tq之前產生了;
(3)于是接收節點Node_B強行將自己當前位的SS段拉到與SOF位的SS段同步。

2.3 重同步
重同步發生在一個報文SOF位之外的其它位場內,當接收節點Node_B當前位的下降沿落在了發送節點Node_A當前位的同步段之外時發生重同步。
重同步會導致相位緩沖段1的延長或者相位緩沖段2的縮短,從而保證采樣點的準確。

2.3.1 PBS1延長

發的晚(慢),收的早(快),導致PBS1延長。

詳解CAN通信的位定時與同步的圖4

如上圖所示:
(1)發送節點Node_A比接收節點Node_B的時間慢了,也就是說Node_A當前位的ss段產生的時候,Node_B 當前位的ss段已經在2個Tq之前產生了;
(2)所以這個時候接收節點Node_B就將PBS1延長2個Tq的時間;
(3)于是這個時候Node_A當前位的采樣點就和Node_B的采樣點同步了。
2.3.2 PBS2縮短
發的早(快),收的晚(慢),導致PBS2縮短。

詳解CAN通信的位定時與同步的圖5

如上圖所示:
(1)發送節點Node_A當前位的SS段誕生2Tq時長之后,接收節點Node_B的當前位才產生SS段;
(2)于是,接收節點Node_B當前位的PBS2段縮短,
(3)這樣就會導致接收節點Node_B的下一位能夠提前2個Tq,從而Node_B的下一位采樣點和Node_A下一位的采樣點能夠同步。

2.3.3 同步跳轉寬度
在重同步時,有個同步跳轉寬度(SJW,Synchro Jump Width)的概念,表示的是PBS1和PBS2重同步時允許跳轉的最大寬度。
同步跳轉寬度必須滿足以下幾個條件:
SJW必須小于PBS1和PBS2的最小值;
SJW最大值不能超過4;

3.位定時參數的確定

位定時的參數主要涉及以下幾個:
(1)位速率:單位為bps、Kbps、Mbps
1Mbps=1000Kbps=1000000bps
1Mbps=1000Kbps=1000000bps
(2)位時間:tBit,單位一般為納秒(ns)
tBit = 1/位速率
(3)時間量子(Tq):
Tq=1/NBT
NBT 表示的是一個位時間tBit內包含Tq的個數。
(4) 傳輸延遲時間tPTS
CAN報文在CAN總線上的傳輸時,物理延遲包含兩個部分:
  • 在CAN-BUS上傳輸造成的延遲;


  • 在節點上傳輸造成延遲;


詳解CAN通信的位定時與同步的圖6

按照CAN通信協議的規定,補償給傳播延遲的時間長度要至少等于實際實際傳播延遲時長的2倍,即:
詳解CAN通信的位定時與同步的圖7

需要注意的是:
Tips: 在CAN總線通信系統中是以時間量子Tq來度量時間的,所以如果延遲補償時間tPTS = 3.1Tq,那么這個時候要?。簍PTS = 4Tq。

(5)相位緩沖段
相位緩沖段的時間長度分為兩種情況:
if (NBT-1-tPTS_Tq)/2==偶數
    PBS1_Tq = PBS2_Tq = (NBT-1-tPTS_Tq)/2
else
    PBS1_Tq = (NBT-1-tPTS_Tq)/2
    PBS2_Tq = PBS1_Tq + 1

(6) 同步跳轉寬度
SJW=min(PBS1_Tq,4)
(7) 驗證晶振誤差Df
CAN總線的晶振誤差必須同時滿足下面三個條件:
詳解CAN通信的位定時與同步的圖8

4.例子

以下面的例子來講述位定時參數的確定方法:
MCU晶振16MHz,位速率1Mbps,總線長度20m,單位總線延遲5ns/m,物理接口的發送接收延遲150ns
(1)晶振時鐘周期:T=1s/16MHz = 62.5ns
(2)位時間 :tBit = 1/1Mbps = 1000ns
(3)BPR和NBT:考慮到 T = 125ns,tBit = 1000ns,所以BPR只能取值為1,才能滿足NBT∈[8,25],于是預分頻數BPR=1;
(4)CAN時鐘周期Tq = 2 × 62.5 × 1 = 125ns
(5)NBT = 8
(6)傳輸延遲時間tPTS
tPTS=2×(20×5+150)=500ns
所以
tPTS_Tq=tPTS/Tq=500/125=4
于是NBT=8個Tq的長度中需要有4個Tq用于補償傳播延遲,于是還剩下4個Tq,
SS同步段長度固定占據1個Tq,還剩3個Tq,于是PBS1分配一個Tq,PBS2分配2個Tq。
(7)同步跳轉寬度
SJW=min{PBS1,4}=1
(8)晶振誤差
詳解CAN通信的位定時與同步的圖9

版權聲明:本文為CSDN博主「weixin_40528417」的原創文章,遵循CC 4.0 BY-SA版權協議,獲得作者的轉載權限。 閱讀原文,關注作者CSDN

詳解CAN通信的位定時與同步的圖10

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP