CAN標準中的時(shí)鐘容差修正建議
CAN是事件觸發(fā)的通信協(xié)議,它用標識符(ID)的無(wú)損仲裁方法調度不同消息的傳送。仲裁依靠的是位值,因此位值采樣準確性很重要。為在所有節點(diǎn)得到相同的準確的采樣,位時(shí)間的同步就是關(guān)鍵。正常傳送中也要克服節點(diǎn)間時(shí)鐘差造成的采樣點(diǎn)變動(dòng),減少讀出時(shí)的錯誤。但是位時(shí)間能否實(shí)現同步,取決于時(shí)鐘的偏差。為此CAN標準規定了時(shí)鐘容差的計算方法?,F在發(fā)現,標準規定的計算公式不夠用,它會(huì )影響應用的可靠性。特別是汽車(chē)工業(yè)常用的標準兒939是基于CAN 2.0B的,時(shí)鐘容差對CAN 2.OB的影響較大,因此對此加以修正非常重要。對于標準的完整理解不僅與應用有直接關(guān)系,對進(jìn)一步提高CAN性能也會(huì )有新的啟示。
本文引用地址:http://dyxdggzs.com/article/103911.htm1 ISO 1 1898-1:2003關(guān)于時(shí)鐘容差的規定
ISO 11898-1:2003第12.4.1.2款規定位時(shí)間單位為T(mén)q,它是可組態(tài)的參數。1位共有NTQ(8~25)個(gè)Tq,Tq由振蕩器分頻而得,受硬件的振蕩器與分頻器資源所限,其選擇有限。每1位分成4段:同步段S(Tq)、傳輸段Pr(Tq~8Tq)、緩沖1段P1(Tq~8Tq)和緩沖2段P2(Tq~8 Tq),它們都是可組態(tài)的參數。位值的采樣在P1與P2的分界處。CAN將同步分為2種:硬同步和重同步??偩€(xiàn)空閑時(shí)開(kāi)始新幀SOF的隱位到顯位的跳變沿(R/D跳變沿)引起硬同步,立即復位本地位時(shí)間到S段。在幀傳送中的R/D跳變沿引起重同步,跳變沿落在上一位采樣后的P2段時(shí)將該P2縮短,跳變沿落在S后時(shí)加長(cháng)本位P1的長(cháng)度,此時(shí)本地位時(shí)間修正的最大絕對量不超過(guò)SJW(重同步跳轉寬度)的值。SJW是1個(gè)組態(tài)參數,在Tq~4 Tq之間。關(guān)于CAN位時(shí)間與同步的一些較為深入的探討可參見(jiàn)參考文獻。
在CAN標準中,采用振蕩器容差這一術(shù)語(yǔ)來(lái)代表時(shí)鐘容差。實(shí)際實(shí)現時(shí),有的實(shí)現方案用振蕩器加鎖相環(huán)構成時(shí)鐘,此時(shí)CAN的時(shí)鐘偏差就由2部分構成。為了與標準文字一致,本文不把時(shí)鐘容差與振蕩器容差嚴格區分。將振蕩器的頻率相對誤差表示為△,時(shí),按ISO11898-1的12.4.2.5款規定,它的約束有2條。
?、僬魉蜁r(shí)由于CAN填充位規則,重同步的距離最多為10位。為同步正確,有:
(2×△f)×10×NBTSJW (1)
其中,NBT為標稱(chēng)位時(shí)間。
?、诔鲥e時(shí),有錯的節點(diǎn)要發(fā)報錯幀。為了區分是本地錯還是全局錯,要考察發(fā)出主動(dòng)報錯標志后的第7位是否還是顯位。由于出錯前可能有6位顯位,所以2個(gè)同步段S相隔13位。容許的差小于緩沖段長(cháng):
(2×△f)×(13×NBT-P2)MIN(P1,P2) (2)
在2個(gè)不等式中選最小者為本應用的時(shí)鐘容差。例如Tbit=1 000 ns,總線(xiàn)長(cháng)20 m,收發(fā)器的延遲為150 ns時(shí),整個(gè)傳輸延遲為T(mén)prop=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ā)送器時(shí)鐘同步中產(chǎn)生的問(wèn)題
CAN總線(xiàn)具有顯位優(yōu)先于隱位的特性,即當總線(xiàn)上有多個(gè)節點(diǎn)同時(shí)發(fā)送時(shí),只要有1個(gè)節點(diǎn)發(fā)的是顯位,總線(xiàn)上最終的結果就是顯位。所以當2個(gè)相距有一定距離的節點(diǎn)同時(shí)發(fā)送顯位時(shí),由于傳輸需要時(shí)間,在一個(gè)節點(diǎn)處看不到另一個(gè)節點(diǎn)的R/D跳變沿(如圖1所示,e為同步的相位差),因為總線(xiàn)的電平早已被該節點(diǎn)置為顯位。

在這種情況下,節點(diǎn)A、B即使時(shí)鐘有差別,也無(wú)法建立同步。設A比B快,僅當節點(diǎn)A的同步段S比節點(diǎn)B的同步段S越來(lái)越超前,且其超前量大于傳輸時(shí)間時(shí),節點(diǎn)B才能看見(jiàn)A的R/D跳變沿,B才會(huì )開(kāi)始進(jìn)行同步。
現在分析2個(gè)發(fā)送器在仲裁區的同步問(wèn)題。假定它們看到總線(xiàn)空閑并同時(shí)開(kāi)始發(fā)送,它們的ID只是最后1位不同。有文獻介紹發(fā)送節點(diǎn)同步過(guò)程時(shí),假定總線(xiàn)空閑時(shí)有1個(gè)發(fā)送器領(lǐng)先于其他發(fā)送器,且超過(guò)Pr/2段發(fā)送的情況。由于事件發(fā)生的隨機性,這只是特例。對于定時(shí)消息,它們由本節點(diǎn)的時(shí)鐘觸發(fā)。但本地時(shí)鐘問(wèn)并無(wú)同步,它們之間又存在頻率差異,所以定時(shí)消息規定應發(fā)出的時(shí)間的相位差會(huì )周期性地變化。1個(gè)發(fā)送器領(lǐng)先所有其他發(fā)送器的情況也只是特例。在本文假設下,由于在ID前各位出現的R/D跳變沿均未被對方看見(jiàn),它們之間沒(méi)有同步關(guān)系。到最后1位,假定時(shí)鐘慢的節點(diǎn)有顯位而時(shí)鐘快的節點(diǎn)有隱位,并假定ID前1位是隱位,那么慢節點(diǎn)的R/D跳變沿將可能被快的節點(diǎn)看到。但是,它將有很大的相位差,可能已經(jīng)超過(guò)了重同步跳轉寬度SJW,從而無(wú)法使該快節點(diǎn)正確同步,便會(huì )導致采樣在慢節點(diǎn)送來(lái)的電平尚未穩定的地方產(chǎn)生位值讀錯。
在CAN 2.0B的29位ID的最后1位,即仲裁域的第31位,由于可能還有7個(gè)填充位,即已有37位未進(jìn)行同步。為了采樣正確,未同步時(shí)快慢發(fā)送節點(diǎn)同步段的差應小于重同步跳轉寬度SJW:
(2×△f)×37×NBT≤SJW (3)
以前述例子的數據,NBT=8,SJW=1,得△f≤0.001 68,減小了很多。
評論