CAN標準中的時鐘容差修正建議
CAN是事件觸發(fā)的通信協(xié)議,它用標識符(ID)的無損仲裁方法調(diào)度不同消息的傳送。仲裁依靠的是位值,因此位值采樣準確性很重要。為在所有節(jié)點得到相同的準確的采樣,位時間的同步就是關鍵。正常傳送中也要克服節(jié)點間時鐘差造成的采樣點變動,減少讀出時的錯誤。但是位時間能否實現(xiàn)同步,取決于時鐘的偏差。為此CAN標準規(guī)定了時鐘容差的計算方法?,F(xiàn)在發(fā)現(xiàn),標準規(guī)定的計算公式不夠用,它會影響應用的可靠性。特別是汽車工業(yè)常用的標準兒939是基于CAN 2.0B的,時鐘容差對CAN 2.OB的影響較大,因此對此加以修正非常重要。對于標準的完整理解不僅與應用有直接關系,對進一步提高CAN性能也會有新的啟示。
本文引用地址:http://m.butianyuan.cn/article/103911.htm1 ISO 1 1898-1:2003關于時鐘容差的規(guī)定
ISO 11898-1:2003第12.4.1.2款規(guī)定位時間單位為Tq,它是可組態(tài)的參數(shù)。1位共有NTQ(8~25)個Tq,Tq由振蕩器分頻而得,受硬件的振蕩器與分頻器資源所限,其選擇有限。每1位分成4段:同步段S(Tq)、傳輸段Pr(Tq~8Tq)、緩沖1段P1(Tq~8Tq)和緩沖2段P2(Tq~8 Tq),它們都是可組態(tài)的參數(shù)。位值的采樣在P1與P2的分界處。CAN將同步分為2種:硬同步和重同步。總線空閑時開始新幀SOF的隱位到顯位的跳變沿(R/D跳變沿)引起硬同步,立即復位本地位時間到S段。在幀傳送中的R/D跳變沿引起重同步,跳變沿落在上一位采樣后的P2段時將該P2縮短,跳變沿落在S后時加長本位P1的長度,此時本地位時間修正的最大絕對量不超過SJW(重同步跳轉寬度)的值。SJW是1個組態(tài)參數(shù),在Tq~4 Tq之間。關于CAN位時間與同步的一些較為深入的探討可參見參考文獻。
在CAN標準中,采用振蕩器容差這一術語來代表時鐘容差。實際實現(xiàn)時,有的實現(xiàn)方案用振蕩器加鎖相環(huán)構成時鐘,此時CAN的時鐘偏差就由2部分構成。為了與標準文字一致,本文不把時鐘容差與振蕩器容差嚴格區(qū)分。將振蕩器的頻率相對誤差表示為△,時,按ISO11898-1的12.4.2.5款規(guī)定,它的約束有2條。
?、僬魉蜁r由于CAN填充位規(guī)則,重同步的距離最多為10位。為同步正確,有:
(2×△f)×10×NBTSJW (1)
其中,NBT為標稱位時間。
②出錯時,有錯的節(jié)點要發(fā)報錯幀。為了區(qū)分是本地錯還是全局錯,要考察發(fā)出主動報錯標志后的第7位是否還是顯位。由于出錯前可能有6位顯位,所以2個同步段S相隔13位。容許的差小于緩沖段長:
(2×△f)×(13×NBT-P2)MIN(P1,P2) (2)
在2個不等式中選最小者為本應用的時鐘容差。例如Tbit=1 000 ns,總線長20 m,收發(fā)器的延遲為150 ns時,整個傳輸延遲為Tprop=500 ns,取Tq=125 ns,算出Pr=4,P1=1,P2=2,SJW=1,NBT=8。由上述二式算出的△f分別為0.006 25和0.004 90,取其中小者0.004 90,即接近0.5%。
2 發(fā)送器時鐘同步中產(chǎn)生的問題
CAN總線具有顯位優(yōu)先于隱位的特性,即當總線上有多個節(jié)點同時發(fā)送時,只要有1個節(jié)點發(fā)的是顯位,總線上最終的結果就是顯位。所以當2個相距有一定距離的節(jié)點同時發(fā)送顯位時,由于傳輸需要時間,在一個節(jié)點處看不到另一個節(jié)點的R/D跳變沿(如圖1所示,e為同步的相位差),因為總線的電平早已被該節(jié)點置為顯位。
在這種情況下,節(jié)點A、B即使時鐘有差別,也無法建立同步。設A比B快,僅當節(jié)點A的同步段S比節(jié)點B的同步段S越來越超前,且其超前量大于傳輸時間時,節(jié)點B才能看見A的R/D跳變沿,B才會開始進行同步。
現(xiàn)在分析2個發(fā)送器在仲裁區(qū)的同步問題。假定它們看到總線空閑并同時開始發(fā)送,它們的ID只是最后1位不同。有文獻介紹發(fā)送節(jié)點同步過程時,假定總線空閑時有1個發(fā)送器領先于其他發(fā)送器,且超過Pr/2段發(fā)送的情況。由于事件發(fā)生的隨機性,這只是特例。對于定時消息,它們由本節(jié)點的時鐘觸發(fā)。但本地時鐘問并無同步,它們之間又存在頻率差異,所以定時消息規(guī)定應發(fā)出的時間的相位差會周期性地變化。1個發(fā)送器領先所有其他發(fā)送器的情況也只是特例。在本文假設下,由于在ID前各位出現(xiàn)的R/D跳變沿均未被對方看見,它們之間沒有同步關系。到最后1位,假定時鐘慢的節(jié)點有顯位而時鐘快的節(jié)點有隱位,并假定ID前1位是隱位,那么慢節(jié)點的R/D跳變沿將可能被快的節(jié)點看到。但是,它將有很大的相位差,可能已經(jīng)超過了重同步跳轉寬度SJW,從而無法使該快節(jié)點正確同步,便會導致采樣在慢節(jié)點送來的電平尚未穩(wěn)定的地方產(chǎn)生位值讀錯。
在CAN 2.0B的29位ID的最后1位,即仲裁域的第31位,由于可能還有7個填充位,即已有37位未進行同步。為了采樣正確,未同步時快慢發(fā)送節(jié)點同步段的差應小于重同步跳轉寬度SJW:
(2×△f)×37×NBT≤SJW (3)
以前述例子的數(shù)據(jù),NBT=8,SJW=1,得△f≤0.001 68,減小了很多。
評論