CAN波特率計算

Can控制器器只需要進行少量的設置就可以進行通信,就可以像RS232/48那樣使用。
其中較難設置的部分就是通信波特率的計算。CAN總線能夠在一定的範圍內容忍總線上CAN節點的通信波特率的偏差,這種機能使得CAN總線有很強的容錯性,同時也降低了對每個節點的振盪器精度。


實際上,CAN總線的波特率是一個範圍。假設定義的波特率是250KB/S,但是實際上根據對寄存器的設置,實際的波特率可能爲200~300KB/S(具體值取決於寄存器的設置)。

簡單介紹一個波特率的計算,在CAN的底層協議裏將CAN數據的每一位時間(TBit)分爲許多的時間段(Tscl),這些時間段包括:

A. 位同步時間(Tsync)
B. 時間段1(Tseg1)
C. 時間段2(Tseg2)
其中位同步時間佔用1個Tscl;時間段1佔用(Tseg1+1)個Tscl;時間段2佔用(Tseg2+1)個Tscl,所以CAN控制器的位時間 (TBit)就是:

TBit=Tseg1+Tseg2+Tsync=(TSEG1+TSEG2+3)*Tscl,那麼CAN的波特率(CANbps)就是1/TBit。


但是這樣計算出的值是一個理論值。在實際的網絡通信中由於存在傳輸的延時、不同節點的晶體的誤差等因素,使得網絡CAN的波特率的計算變得複雜起來。CAN在技術上便引入了重同步的概念,以更好的解決這些問題。

這樣重同步帶來的結果就是要麼時間段1(Tseg1)增加TSJW(同步跳轉寬度SJW+1),要麼時間段減少TSJW,因此CAN的波特率實際上有一個範圍:
1/(Tbit+Tsjw)  ≤ CANbps ≤ 1/(Tbit-Tsjw)


CAN波特率的值四以下幾個元素決定:
A. 最小時間段Tscl;
B. 時間段1 TSEG1;
C. 時間段2 TSEG2;
D. 同步跳轉寬度 SJW


那麼Tscl又是怎麼計算的呢?
這是總總線時序寄存器中的預分頻寄存器BRP派上了用場,Tscl=(BRP+1)/FVBP。
FVBP爲微處理器的外設時鐘。


而TSEG1與TSEG2又是怎麼劃分的呢?

TSEG1與TSEG2的長度決定了CAN數據的採樣點,這種方式允許寬範圍的數據傳輸延遲和晶體的誤差。其中TSEG1用來調整數據傳輸延遲時間造成的誤差,而TSEG2則用來調整不同點節點晶體頻率的誤差。

但是他們由於過於靈活,而使初次接觸CAN的人有點無所適從。TSEG1與TSEG2的是分大體遵循以下規則: Tseg2≥Tscl2,Tseg2≥2TSJW,Tseg1≥Tseg2

總的來說,對於CAN的波特率計算問題,把握一個大的方向就行了,其計算公式可了規結爲: BitRate = Fpclk/( (BRP+1) * ((Tseg1+1)+(Tseg2+1)+1)

此外,CAN協議還允許用戶指定位採樣模式SAM,分別是單次採樣和三次採樣模式(在3個採樣結果中選出1個)。在單次採樣模式中,採樣點是在TESG1段的末端,而三次採樣模式比單次採樣多取兩個採樣點,它們在TSEG1段的末端的前面,之間相差一個TQ。

縮寫的含義如下:
NBT: 位定時
BRP: 波特率預設值
SAM: 採樣模式
SJW: 同步跳轉寬度
SYNC—SEG: 同步段,固定值是1
TSEG1: 位定時段1
TSEG2: 位定時段2

採樣點計算
採樣點在位定時中的位置完全由TSEG2決定,如果用位定時的百分數來表示採樣點的位置可以用下面的方程定義:
T_sample_point = (NBT-TSEG2)/NBT *100%

這些參數是用來做什麼的?
在總線同步方式中的重同步中使用。
注:
CAN總線規範中定義的同步保證了報文可以不管節點間積累的相位誤差正確地譯碼,振盪器漂移、空間地分佈在網絡的節點間的傳播延遲或者噪聲干擾都會產生相位誤差,CAN規範定義了兩種類型的同步:硬同步和重同步。
      
硬同步只在報文貞的開始執行,在空閒週期後,網路中每個CAN控制器會用接收到的SYNC_SEG第一個隱性到顯性跳變沿初始化它當前的位週期定時。

重 同步是在隨後的報文剩餘部分每接收到一個隱性到顯性的跳變沿就執行一次。如果這個邊沿在TSEG1中接收到,即在SYNC_SEG後但在接收器的採樣點 前,接收器就會把它解釋成是一個慢速的發送器發送的滯後邊沿,因此接收器會將TSEG1段延長到最匹配發送器的時間。相反,若果邊沿在採樣點之後接收器的 SYNC_SEG前收到,即在TSEG2中,接收器會將它解釋成一個快的發送器發送的下一個位週期的提前邊沿,這種情況下,接收器會將TSEG2段縮短到 最匹配發送器的時間。

重同步的位間隔可以被增長或者縮短的最大TQ數量由SJW的值指定。由於CAN位週期的所有段都被量化,即由整數個TQ組成,重同步只在絕對的相位誤差大於1個TQ時產生,因此,甚至在有相同振盪器基準頻率的兩個網絡節點間,也不能確定有一個TQ同步。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章