关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
根據 CAN 規范的要求,總線上的所有器件都必須使用相同的比特率才能完成通信。然而,并非所有器件都要求具有相同的主振蕩器時鐘頻率。所以,CAN 總線能夠在一定的范圍內容忍總線上 CAN 節點的通信波特率的偏差,這種機能使得 CAN 總線有很強的容錯性,同時也降低了對每個節點的振蕩器精度。所以,實際上,CAN 總線的波特率是一個范圍。舉個例子,假設定義的波特率是 250KB/s,但是實際上根據對寄存器的設置,實際的波特率可能為 200-300KB/s(具體值取決于寄存器的設置)。
首先了解一下 CAN 總線系統中的兩個時鐘:晶振時鐘周期和CAN時鐘周期:
- 晶振時鐘周期:是由單片機振蕩器的晶振頻率決定的,指的是振蕩器每震蕩一次所消耗的時間長度,也是整個系統中最小的時間單位;
- CAN時鐘周期:CAN時鐘是由系統時鐘分頻而來的一個時間長度值,實際上就是一個時間份額TQ。計算公式:CAN時鐘周期 = 2 × 晶振時鐘周期 × BRP,其中BRP叫做波特率預分頻值(baudrate prescaler);
如上圖所述,根據CAN規范,每一個CAN位時間 (Nominal Bit Time,NBT)被分成4個時間段:同步段(Sync_Seg)、傳播時間段(Prop_Seg)、相位緩沖段1(Phase_Seg1)和相位緩沖段2(Phase_Seg2),如下圖所示:
而采樣點則設計在相位緩沖段1和相位緩沖段2之間。如下圖所示:
如果用公式來表示,就是:
上述每個段又由若干個時間份額(time quanta,TQ)組成,時間份額 TQ 是位時間的基本時間單元,下面詳細解釋一下:
1、同步段(Synchronization Segment)
同步段(SyncSeg)為 NBT 中的首段,用于同步CAN總線上的各個節點。輸入信號的跳變沿就發生在同步段,該段持續時間為 1 TQ。同步段用于同步總線上的各個節點,一個位的跳邊沿在此時間段內。
2、傳播段(Propagation Segment)
傳播段(PropSeg)用于補償各節點之間的物理傳輸延遲時間。傳輸延遲時間為信號在總線上傳播時間的兩倍,包括總線驅動器延遲時間。傳播段的長度一般有一個取值范圍,不同的控制器不完全一致,典型值為 1 – 8 TQ。
3、相位緩沖段(Phase Buffer Segment1)
相位緩沖段用于補償節點間的晶振誤差,又分為相位緩沖段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 即可滿足要求。
總結
以上是生活随笔為你收集整理的关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五分钟免费获得自己的永久域名,免费!永久
- 下一篇: 微软第一台电脑_世界上第一位皇帝是谁(正