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