關於CAN總線的位時間/同步段/傳播時間段/相位緩衝段/採樣點

根據 CAN 規範的要求,總線上的所有器件都必須使用相同的比特率才能完成通信。然而,並非所有器件都要求具有相同的主振盪器時鐘頻率。所以,CAN 總線能夠在一定的範圍內容忍總線上 CAN 節點的通信波特率的偏差,這種機能使得 CAN 總線有很強的容錯性,同時也降低了對每個節點的振盪器精度。所以,實際上,CAN 總線的波特率是一個範圍。舉個例子,假設定義的波特率是 250KB/s,但是實際上根據對寄存器的設置,實際的波特率可能爲 200-300KB/s(具體值取決於寄存器的設置)。

具體來說,根據CAN規範,標稱位時間 (Nominal Bit Time,NBT)被分成4個時間段:同步段(Sync_Seg)、傳播時間段(Prop_Seg)、相位緩衝段1(Phase_Seg1)和相位緩衝段2(Phase_Seg2),採樣點設計在相位緩衝段1和相位緩衝段2之間。如下圖所示:
在這裏插入圖片描述
如果用公式來表示,就是:
在這裏插入圖片描述
上述每個段又由若干個時間份額(time quanta,TQ)組成,時間份額 TQ 是位時間的基本時間單元,下面詳細解釋一下:

1、同步段

同步段(SyncSeg)爲 NBT 中的首段,用於同步CAN總線上的各個節點。輸入信號的跳變沿就發生在同步段,該段持續時間爲 1 TQ。

2、傳播段

傳播段(PropSeg)用於補償各節點之間的物理傳輸延遲時間。傳輸延遲時間爲信號在總線上傳播時間的兩倍,包括總線驅動器延遲時間。傳播段的長度一般有一個取值範圍,不同的控制器不完全一致,典型值爲 1 – 8 TQ。

3、相位緩衝段

相位緩衝段又分爲相位緩衝段1(PS1)和相位緩衝段2(PS2)。兩個相位緩衝段PS1和PS2用於補償總線上的邊沿相位誤差。通過再同步,可以延長 PS1(或縮短PS2)。

同理,不同的控制器,PS1/PS2 的取值範圍不完全一致,一般 PS1 爲 1 – 8 TQ,PS2 爲 2 – 8 TQ。

4、採樣點

採樣點是位時間內的一個時間點。在該時間點,讀取總線電平並進行分析。採樣點位於相位緩衝段 PS1 的終點。但當採樣模式設置爲每位採樣 3 次時例外。這種情況下,在 PS1 的終點仍然對某一位進行採樣時,前兩次的採樣時間間隔爲 TQ / 2,而該位的值將根據三個採樣值中至少兩次採樣的相同值決定。

5、同步跳轉寬度

同步跳轉寬度(SJW)可通過編程設定爲 1 – 4 TQ,它可對位時鐘進行必要的調整來保持與發送報文同步。

例如,假設 FOSC = 20 MHz 時欲實現 125 kHz 的 CAN波特率:

TOSC = 50 ns,選擇 BRP<5:0> = 04h,則 TQ = 500 ns。

欲達到 125 kHz,位時間應爲 16 TQ。

位的採樣時刻取決於系統參數,通常應發生在位時間的 60-70% 處。同時, TDELAY 典型值爲 1-2 TQ。

同步段 = 1 TQ,傳播段 = 2 TQ,這種情況下設置相位緩衝段 PS1 = 7 TQ,將會在跳變之後的 10 TQ 時進行採樣。此時相位緩衝段 PS2 長度爲 6 TQ。

由於相位緩衝段 PS2 長度爲 6 TQ,根據規則, SJW 最大值爲 4 TQ。然而通常狀況下,只有當不同節點的時鐘發生不夠精確或不穩定(如採用陶瓷諧振器)時,才需要較大的 SJW。一般情況下,SJW 取值 1 TQ 即可滿足要求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章