CAN總線位定時和同步機制的分析
CAN總線位定時和同步機制的分析
The Analysis of Bit Timing and Synchronization Mechanism of CAN Bus
天津大學自動化學院 李芳,劉魯源,呂偉杰
摘要:CAN總線位定時參數(shù)可以由用戶來編程設置,合理的設置位定時能夠有效保證位流的同步,提高CAN總線的通訊性能。本文詳細分析了CAN總線的位定時和同步機制,并給出了重同步時重同步跳轉(zhuǎn)寬度與相位差補償?shù)年P(guān)系。
關(guān)鍵詞:CAN總線;位定時;同步
引言
CAN(Controller Area Network)是有效支持分布式實時控制的串行通訊網(wǎng)絡。從位定時的同步方式考慮,它實質(zhì)上屬于異步通訊協(xié)議,每傳輸一幀,以幀起始位開始,而以幀結(jié)束及隨后的間歇場結(jié)束。這就要求收/發(fā)雙方從幀起始位開始必須保持幀內(nèi)信息代碼中的每一位嚴格的同步。從位定時編碼考慮,它采用的是非歸零編碼方式,位流傳輸不像差分碼那樣可以直接用電平的變化來代表同步信號,因此為保證同步質(zhì)量,CAN協(xié)議定義了自己的位同步方式:硬同步和重同步。
目前相關(guān)文獻均缺乏對CAN總線位定時與同步機制的詳細分析。本文深入分析了CAN總線位周期的結(jié)構(gòu)以及CAN的兩種位同步方式 (硬同步和重同步),并明確給出了重同步時重同步跳轉(zhuǎn)寬度和相位差補償?shù)年P(guān)系,對于指導位定時參數(shù)的設置有較好的參考價值。
位周期結(jié)構(gòu)
網(wǎng)絡的標準位速率,其中就是額定位時間(也稱標準位周期)。如圖1所示,CAN總線的額定位時間是由4部分組成的:同步段(SYNC_SEG),傳播段(PROP_SEG),相位緩沖段1(PSEG1)和相位緩沖段2(PSEG2)。所以額定的為時間
,位周期中的這些段都是可以編程設置的,且都可以用整數(shù)個基本時間單位(時間份額)來表示。這個基本時間單位由振蕩器分頻而得的 ,(BRP為波特率預分頻因子,也可以編程設置)。
圖1 CAN總線額定位時間的結(jié)構(gòu)
同步段是CAN總線位周期中每一位的起始部分。不管是發(fā)送節(jié)點發(fā)送一位還是接收節(jié)點接收一位都是從同步段開始的。但是由于發(fā)送節(jié)點和接收節(jié)點之間存在網(wǎng)絡傳輸延遲以及物理接口延遲,發(fā)送節(jié)點發(fā)送一位之后,接收節(jié)點延遲一段時間才能接收到,因此,發(fā)送節(jié)點和接收節(jié)點對應同一位的同步段起始時刻就有一定的時延,記為。
傳播延時段的設置就是要補償該段時延()的。CAN總線協(xié)議中的非破壞性仲裁機制以及幀內(nèi)應答機制,都要求那些正在發(fā)送位流的發(fā)送節(jié)點能夠同時接收來自其他發(fā)送節(jié)點的“顯性位”(邏輯0),否則就會使得仲裁無效或者應答錯誤。傳播延遲段推遲那些可能較早采樣總線位流的節(jié)點的采樣點,保證由各個發(fā)送節(jié)點發(fā)送的位流到達總線上的所有節(jié)點之后才開始采樣。
重同步跳轉(zhuǎn)寬度SJW并不是位周期里的一段,卻是位定時計算時的一個重要的指標,它定義了重同步時為補償相位誤差位時間中相位緩沖段1或者相位緩沖段2被增長或縮短的最大基本時間單元數(shù)。
同步機制
CAN總線的位同步只有在節(jié)點檢測到“隱性位”(邏輯1)到“顯性位”(邏輯0)的跳變時才會產(chǎn)生,當跳變沿不位于位周期的同步段之內(nèi)時將會產(chǎn)生相位誤差。該相位誤差就是跳變沿與同步段結(jié)束位置之間的距離。如果跳變沿發(fā)生在同步段之后采樣點之前為正的相位誤差;如果跳變沿位于同步段之前采樣點之后為負的相位誤差。相位誤差源于節(jié)點的振蕩器漂移,網(wǎng)絡節(jié)點之間的傳播延遲以及噪聲干擾等。CAN協(xié)議規(guī)定了兩種類型的同步:硬同步和重同步。
硬同步
硬同步只在總線空閑時通過一個下降沿(幀起始)來完成,此時不管有沒有相位誤差,所有節(jié)點的位時間重新開始。強迫引起硬同步的跳變沿位于重新開始的位時間的同步段之內(nèi)。
重同步
在消息幀的隨后位中,每當有從“隱性位”
到“顯性位”的跳變,并且該跳變落在了同步段之外,就會引起一次重同步。重同步機制可以根據(jù)跳變沿增長或者縮短位時間以調(diào)整采樣點的位置,
圖2 正相位誤差時的重同步
圖3 負相位誤差時的重同步
保證正確采樣。
如圖2,跳變沿落在了同步段之后采樣點之前,為正的相位誤差,接收器會認為這是一個慢速發(fā)送器發(fā)送的滯后邊沿。此時節(jié)點為了匹配發(fā)送器的時間,會增長自己的相位緩沖段1(陰影部分)。增長的時間為相位差的絕對值,但是上限是重同步跳轉(zhuǎn)寬度SJW。
如圖3,跳變沿落在了采樣點之后同步段之前,為負的相位誤差,接收器把它解釋為一個快速發(fā)送器發(fā)送的下一個位周期的提前邊沿。同樣節(jié)點為了匹配發(fā)送器的時間,會縮短自己的相位緩沖段2(陰影部分),下一個位時間立即開始??s短的時間也為相位差的絕對值,上限是重同步跳轉(zhuǎn)寬度SJW。
相位緩沖段只在當前位周期內(nèi)被增長或者縮短,接下來的位周期,只要沒有重同步,各段將恢復為位時間的編程預設值。
當相位差的絕對值小于或者等于重同步跳轉(zhuǎn)寬度SJW時,重同步和硬同步的效果是相同的,能實現(xiàn)相位差的補償;但是如果相位差的絕對值比重同步跳轉(zhuǎn)寬度大,由于補償?shù)淖畲笾凳侵赝教D(zhuǎn)寬度,致使重同步不能完全補償相位差。
CAN協(xié)議的位填充機制除實現(xiàn)仲裁場、控制場、數(shù)據(jù)場和CRC序列的數(shù)據(jù)的透明性外,還增加了從“隱性位”到“顯性位”跳變的機會,也就是增多重同步的數(shù)量,提高同步質(zhì)量。在沒有出錯影響的情況下,位填充原則保證了兩次重同步跳轉(zhuǎn)邊沿之間不會多于10個位周期(即5個顯性位,5個隱性位),而實際的系統(tǒng)會有錯誤發(fā)生,使得實際的兩次重同步跳轉(zhuǎn)邊沿之間的間隔可能為17到23個位時間(活動錯誤標志及其疊加6到12個位時間,錯誤界定符8個位時間,間歇場3個位時間)。
結(jié)語
在實際的系統(tǒng)設計中,用戶可以根據(jù)振蕩器時鐘頻率,總線波特率以及總線的最大傳輸距離等因素,對CAN控制器的位定時參數(shù)進行優(yōu)化設置【4,5】,協(xié)調(diào)影響位定時設置的兩個主要因素:振蕩器容差和最大總線長度,合理安排位周期中采樣點的位置和采樣次數(shù),保證總線上位流的有效同步的同時,優(yōu)化系統(tǒng)的通訊性能,進一步推進CAN總線的廣泛應用。
參考文獻:
1.Wolfhard Lawrenz,CAN System Enginnering From Theory To Practical Application,Spring-Verlag,New York,1997.
2. Stuart Robb, CAN Bit Timing Requirements, Motorola Semiconductor Application Note, 1999.
評論