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