关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
根據(jù) CAN 規(guī)范的要求,總線上的所有器件都必須使用相同的比特率才能完成通信。然而,并非所有器件都要求具有相同的主振蕩器時(shí)鐘頻率。所以,CAN 總線能夠在一定的范圍內(nèi)容忍總線上 CAN 節(jié)點(diǎn)的通信波特率的偏差,這種機(jī)能使得 CAN 總線有很強(qiáng)的容錯性,同時(shí)也降低了對每個節(jié)點(diǎn)的振蕩器精度。所以,實(shí)際上,CAN 總線的波特率是一個范圍。舉個例子,假設(shè)定義的波特率是 250KB/s,但是實(shí)際上根據(jù)對寄存器的設(shè)置,實(shí)際的波特率可能為 200-300KB/s(具體值取決于寄存器的設(shè)置)。
首先了解一下 CAN 總線系統(tǒng)中的兩個時(shí)鐘:晶振時(shí)鐘周期和CAN時(shí)鐘周期:
- 晶振時(shí)鐘周期:是由單片機(jī)振蕩器的晶振頻率決定的,指的是振蕩器每震蕩一次所消耗的時(shí)間長度,也是整個系統(tǒng)中最小的時(shí)間單位;
- CAN時(shí)鐘周期:CAN時(shí)鐘是由系統(tǒng)時(shí)鐘分頻而來的一個時(shí)間長度值,實(shí)際上就是一個時(shí)間份額TQ。計(jì)算公式:CAN時(shí)鐘周期 = 2 × 晶振時(shí)鐘周期 × BRP,其中BRP叫做波特率預(yù)分頻值(baudrate prescaler);
如上圖所述,根據(jù)CAN規(guī)范,每一個CAN位時(shí)間 (Nominal Bit Time,NBT)被分成4個時(shí)間段:同步段(Sync_Seg)、傳播時(shí)間段(Prop_Seg)、相位緩沖段1(Phase_Seg1)和相位緩沖段2(Phase_Seg2),如下圖所示:
而采樣點(diǎn)則設(shè)計(jì)在相位緩沖段1和相位緩沖段2之間。如下圖所示:
如果用公式來表示,就是:
上述每個段又由若干個時(shí)間份額(time quanta,TQ)組成,時(shí)間份額 TQ 是位時(shí)間的基本時(shí)間單元,下面詳細(xì)解釋一下:
1、同步段(Synchronization Segment)
同步段(SyncSeg)為 NBT 中的首段,用于同步CAN總線上的各個節(jié)點(diǎn)。輸入信號的跳變沿就發(fā)生在同步段,該段持續(xù)時(shí)間為 1 TQ。同步段用于同步總線上的各個節(jié)點(diǎn),一個位的跳邊沿在此時(shí)間段內(nèi)。
2、傳播段(Propagation Segment)
傳播段(PropSeg)用于補(bǔ)償各節(jié)點(diǎn)之間的物理傳輸延遲時(shí)間。傳輸延遲時(shí)間為信號在總線上傳播時(shí)間的兩倍,包括總線驅(qū)動器延遲時(shí)間。傳播段的長度一般有一個取值范圍,不同的控制器不完全一致,典型值為 1 – 8 TQ。
3、相位緩沖段(Phase Buffer Segment1)
相位緩沖段用于補(bǔ)償節(jié)點(diǎn)間的晶振誤差,又分為相位緩沖段1(PS1)和相位緩沖段2(PS2),在這個時(shí)間段的末端進(jìn)行總線狀態(tài)的采樣。兩個相位緩沖段PS1和PS2用于補(bǔ)償總線上的邊沿相位誤差。通過再同步,可以延長 PS1(或縮短PS2)。
同理,不同的控制器,PS1/PS2 的取值范圍不完全一致,一般 PS1 為 1 – 8 TQ,PS2 為 2 – 8 TQ。
4、采樣點(diǎn)
采樣點(diǎn)是位時(shí)間內(nèi)的一個時(shí)間點(diǎn)。在該時(shí)間點(diǎn),讀取總線電平并進(jìn)行分析。采樣點(diǎn)位于相位緩沖段 PS1 的終點(diǎn)。但當(dāng)采樣模式設(shè)置為每位采樣 3 次時(shí)例外。這種情況下,在 PS1 的終點(diǎn)仍然對某一位進(jìn)行采樣時(shí),前兩次的采樣時(shí)間間隔為 TQ / 2,而該位的值將根據(jù)三個采樣值中至少兩次采樣的相同值決定。
5、同步跳轉(zhuǎn)寬度
同步跳轉(zhuǎn)寬度(SJW)可通過編程設(shè)定為 1 – 4 TQ,它可對位時(shí)鐘進(jìn)行必要的調(diào)整來保持與發(fā)送報(bào)文同步。
例如,假設(shè) FOSC = 20 MHz 時(shí)欲實(shí)現(xiàn) 125 kHz 的 CAN波特率:
TOSC = 50 ns,選擇 BRP<5:0> = 04h,則 TQ = 500 ns。
欲達(dá)到 125 kHz,位時(shí)間應(yīng)為 16 TQ。
位的采樣時(shí)刻取決于系統(tǒng)參數(shù),通常應(yīng)發(fā)生在位時(shí)間的 60-70% 處。同時(shí), TDELAY 典型值為 1-2 TQ。
同步段 = 1 TQ,傳播段 = 2 TQ,這種情況下設(shè)置相位緩沖段 PS1 = 7 TQ,將會在跳變之后的 10 TQ 時(shí)進(jìn)行采樣。此時(shí)相位緩沖段 PS2 長度為 6 TQ。
由于相位緩沖段 PS2 長度為 6 TQ,根據(jù)規(guī)則, SJW 最大值為 4 TQ。然而通常狀況下,只有當(dāng)不同節(jié)點(diǎn)的時(shí)鐘發(fā)生不夠精確或不穩(wěn)定(如采用陶瓷諧振器)時(shí),才需要較大的 SJW。一般情況下,SJW 取值 1 TQ 即可滿足要求。
總結(jié)
以上是生活随笔為你收集整理的关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五分钟免费获得自己的永久域名,免费!永久
- 下一篇: 十分钟看懂什么是VoLTE【包学包会,否