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