單琳娜,徐斌山,陳文平
摘 要:在CAN規范中,位定時和同步機制是既重要又難于理解的環節之一,它不僅關系到對規范其他相關內容的理解,甚至能對節點開發的成功與否產生直接的影響。因此介紹了位時間(周期)的組成與結構,總結并歸納位定時的作用;在此基礎上,給出硬同步和重同步的定義,重點分析硬同步和重同步的機理,并給出它們相應的圖解,形象而又清晰地表明其本質;以獨立CAN控制器為例,詳細說明在一般開發和工程實際中,位定時參數設置和計算的一般方法及步驟。
關鍵詞:位定時;硬同步;重同步;參數
中圖分類號:TP3344文獻標識碼:B
文章編號:1004-373X(2009)12-142-04
Research and Design on CANbus Bit Time and Synchronization
SHAN Linna,XU Binshan,CHEN Wenping
(College of Information and Electronic Technology,Jiamusi University,Jiamusi,154007,China)
Abstract:In the CANbus norm,bit time and synchronous mechanism is one of the link that is important and difficult to understand,it not only relates to norm the comprehension of other related content,even to influence direct the success or a case of crabs of node development.The constitute and structure of the bit time(period) is introduced,the function of bit time is tallied up and induced.The definition of hard and repetition synchronous is presented on the foundation,the mechanism of hard and repetition synchronous is analyzed,the correspondence diagram is presented,the hypostases is indicated vividly and clear.As an example with independent CANbus controller,the general method and step of bit time are elaborated in the general development and the engineering practice.
Keywords:bit time;hard synchronous;repetition synchronous;parameter
0 引 言
控制器局域網CAN是一種用于連接汽車和工業場合中電子控制模塊、傳感器和執行器的串行、多主通信規范[1,2]。由于CAN總線具有很強的糾錯能力、支持差分收發、傳輸距離遠等特點,因此CAN總線用途非常廣泛,現已成為工業數據通信領域的主流技術、基礎技術,目前比較流行的TTCan,DeviceNet,CANOpen,SAE J1939等規范均是以CAN為基礎的,因此對CAN總線的深入研究是十分必要的。在CAN規范中,位定時和同步機制是既重要又難于理解的環節之一,它不僅關系到對波特率、總線長度等相關內容的理解,甚至對節點開發的成功與否產生直接的影響。然而,目前相關文獻均缺乏針對CAN總線位定時和同步機制的詳細分析和探討。在此以CAN技術規范為基礎,深入分析CAN總線的位定時和同步機制,給出硬同步和重同步的定義,并給出相應的圖解解釋方式,對位時間的組成與結構、同步的發生時刻、同步是如何進行的等關鍵內容給出了明確而又具體的分析。這里的工作對理解位定時和同步機制的本質、指導位時間參數的設置均具有較高的參考價值[3,4]。
1 位定時
1.1 位時間的組成
位時間(位周期)tB即1位的持續時間。正常位時間tNBT是正常位速率fNBT(在非重同步的情況下,借助理想發送器每秒發送的位數)的倒數,即tNBT =1/fNBT。正常位時間可劃分為幾個互不重疊的時間段,這些時間段包括:同步段(SYNC-SEG)、傳播時間段(PROP-SEG)、相位緩沖器段1(PHASE-SEG1)、相位緩沖器段2(PHASE-SEG2)。每個時間段由整數個被稱為時間份額tQ的基本時間單位組成。tQ是由振蕩器周期tCLK派生出的一個固定時間單元。一個時間份額的持續時間通常便是CAN的一個系統時鐘周期tSCL。tSCL可通過可編程的預引比例因子進行調整。每個位時間必須由8~25個時間份額組成。位時間的組成如圖1所示。
圖1 位時間組成
位時間的各個時間段均有其特定的用途[5]:
(1) 同步段用于使總線上的各個節點同步,要求有1個跳變沿位于此段內,該段長度為1個時間份額;
(2) 傳播時間段用于補償網絡內的物理延時,它是信號在總線上傳播時間、輸入比較器延時和輸出驅動器延時之和的2倍,該段長度為1~8個時間份額;
(3) 相位緩沖器段1和相位緩沖器段2用于補償沿的相位誤差,通過重同步,相位緩沖器段1可被延長或相位緩沖器段2可被縮短。
這些時間段的長度均是可編程的。在常用的通信控制器(SJA1000)或PAC82C200中,合并傳播時間段和相位緩沖器段1,稱為時間段1(TSEG1),相位緩沖器段2稱為時間段2(TSEG2),如圖1所示。
采樣點是這樣一個時刻:在此時刻上,總線電平被讀取并被理解為其自身的數值。它位于相位緩沖器段1的終點。在重同步期間,采樣點的位置被移動整數個時間份額,該時間份額被允許的最大值稱為重同步跳轉寬度(SJW),它可被編程為1~4個時間份額。值得注意的是,重同步跳轉寬度并不是位時間的組成部分。
1.2 位定時的作用
位定時是由節點自身完成的(可編程),節點進行位定時的作用為[6,7]:
(1) 確定位時間,以便確定波特率(位速率),從而確定總線的網絡速度;或在給定總線的網絡速度的情況下確定位時間;
(2) 確定1位的各個組成部分——同步段、傳播時間段、相位緩沖器段1和相位緩沖器段2的時間長度,其中同步段用于硬同步,位于相位緩沖器段1終點的采樣點用于保證正確地讀取總線電平;
(3) 確定重同步跳轉寬度以用于重同步。
2 CAN總線同步機制分析
CAN規范定義了自己獨有的同步方式:硬同步和重同步。同步與位定時密切相關。同步是由節點自身完成的,節點將檢測到來自總線的沿與其自身的位定時相比較,并通過硬同步或重同步適配(調整)位定時。在一般情況下,引起硬同步和重同步發生的、來自總線的沿如圖2所示。
圖2 硬同步和重同步發生時刻示意圖
2.1 硬同步
CAN 技術規范給出了硬同步和重同步的結果,但沒有給出硬同步和重同步的定義。這里首先給出硬同步和重同步的定義,然后對其進行分析。
所謂硬同步,就是由節點檢測到的,來自總線的沿強迫節點立即確定出其內部位時間的起始位置(同步段的起始時刻)。硬同步的結果是,沿到來時刻的前一時刻(以時間份額tQ量度),即成為節點內部位時間同步段的起始時刻,并使內部位時間從同步段重新開始。這就是規范中所說的“硬同步強迫引起硬同步的沿處于重新開始的位時間同步段之內”。硬同步一般用于幀的開始,即總線上的各個節點的內部位時間的起始位置(同步段)是由來自總線的一個報文幀的幀起始的前沿決定的。
同步段的時間長度為1個時間份額。如圖3所示,來自總線的引起硬同步的沿在t1時刻到來,則節點檢測到該沿。將t1時刻的前一時刻t0(以tQ為周期)作為內部位時間同步段的起始時刻。
圖3 硬同步圖解
2.2 重同步
所謂重同步,就是節點根據沿相位誤差的大小調整其內部位時間,以使節點內部位時間與來自總線的報文位流的位時間接近或相等。作為重同步的結果,PHASE-SEG1可被延長或PHASE-SEG2可被縮短,從而使節點能夠正確地接收報文。重同步一般用于幀的位流發送期間,以補償各個節點振蕩器頻率的不一致。這里涉及到沿相位誤差的概念。沿相位誤差由沿相對于節點內部位時間同步段的位置給定,以時間份額量度,沿相位誤差的符號為e,其定義如下:
(1) 若沿處于SYNC~SEG之內,則e=0;
(2) 若沿處于采樣點之前(TSEG1內),則e>0;
(3) 若沿處于前一位的采樣點之后(TSEG2內),則e<0。
CAN技術規范中也給出了重同步跳轉寬度,重同步策略與同步規則,但比較抽象、不易理解。為深入理解節點是如何進行重同步的,圖4給出了重同步的圖解。在圖4中,SY,PR,PS1和PS2分別表示同步段、傳播段、相位緩沖段1和相位緩沖段2。假定總線位流的第一位(幀起始,為“0”)起始于t1時刻、終止于t2時刻,總線位流的第2位為“1”;從第2位開始,總線位流的“隱性”(“1”)至“顯性”(“0”)和“顯性”(“0”)至“隱性”(“1”)的跳變沿均用于重同步。在t1時刻,節點檢測到總線的跳變沿,便進行硬同步,使t1時刻的跳變沿處于節點內部第1位位時間的同步段內。節點從第1位的同步段開始啟動內部位定時,即根據系統要求的波特率給出內部位時間?,F假定由于各節點振蕩器頻率的不一致,在t2時刻的跳變沿未處于節點第2位位時間的同步段SY內,而是處于PS1內,即有e>0。這表明節點內部的位時間小于總線位流的位時間。為了使節點能從總線上通過采樣得到正確的位數值,需使節點內部的位時間延長,以使節點內部位時間與總線位流位時間接近或相等。因此,在這種情況下節點應采取的重同步策略為:使PS1延長一定寬度(圖4中PS1延長2個時間份額,即同步跳轉寬度為大于等于2個時間份額,如為3個時間份額)。e<0的情況與之類似,只是PS2會相應地縮短一定寬度。這與CAN技術規范中的重同步策略是一致的。
圖4 重同步圖解(e>0)
這里需要注意的是,相位緩沖段只在當前的位時間內被延長或縮短,在接下來的位時間內,只要沒有重同步,各時間段將恢復編程預設值。
3 控制器中位定時參數設置的一般方法
在典型的獨立CAN控制器(SJA1000或PCA82C200)中,負責位定時的寄存器為總線定時寄存器0(BTR0)和總線定時寄存器1(BTR1),其結構如圖5所示[8,9]。
圖5 總線定時寄存器
寄存器中有關參數的計算公式如下:
tSCL=2tCLK?BRP(1)
BRP=32BRP.5+16BRP.4+8BRP.3+
4BRP.2+2BRP.1+BRP.0+1(2)
SJW=tSJW/tSCL=2SJW.1+SJW.0+1(3)
SYNCSEG=tSYNCSEC/tSCL=1(4)
TSEG1=tTSEG1/tSCL=8TSEG1.3+4TSEG1.2+
2TSEG1.1+TSEG1.0+1(5)
TSEG2=tTSEG2/tSCL=4TSEG2.2+2TSEG2.1+
TSEG2.0+1(6)
這些參數的范圍在CAN中有較嚴格的規定,具體如表1所示。
表1 位定時參數的范圍(以時間份額度量)
參數范圍說明
SAM0或1規定采樣次數
SJW1~4規定相位緩沖段延長或縮短的上限
BRP1~64規定時間份額的長度
SYNCSEG1同步總線上各節點
TSEG11~16補償沿相位誤差可被延長
TSEG21~8補償沿相位誤差可被縮短
NBT8~25正常位時間
在有些情況中,為了優化網絡性能,這些參數的設置往往需要考慮傳輸延遲、時鐘偏頻等因素。然而,對于一般的開發或工程實際,完全可以根據經驗對其進行計算和設置。這里以一個時鐘頻率為20 MHz、通信波特率為250 Kb/s(位時間為4 μs)的系統為例,介紹與位定位有關的各參數的計算方法和步驟。
(1) 確定時間份額。
由表1可知,在1個位周期中時間份額的數量必須是8~25之間的一個整數值。在滿足這個前提下,應該使時間份額的時間值盡可能的小1些,也就是讓1個位周期中時間份額的數量更多。這樣做的目的是為了使采樣點位置的選擇具有更好的分辨率??紤]到以上兩個因素,在這里將時間份額的數量設置為20,于是有:
時間份額: tSCL=200 ns。
根據式(1):
BRP=tSCL/2tCLK=2
(2) 設置時間段和采樣點。
下面需要對時間段1和時間段2進行分配和設置。由于時間份額的數量已經確定,再根據:時間份額的數量=1+TSEG1+TSEG2,
這樣看來,時間段1和2似乎有多個配置可供選擇。但有一點值得注意的是,時間段1和2的確定同樣關系著采樣點在位周期中的位置,這是非常關鍵的。因為如果采樣點選擇的不適當,在有些情況中會直接導致錯誤的出現。與普通的串行通信端口或UART在中間位置(50%)的采樣不同,CAN總線的采樣點最好靠近位時間的末端。根據工程經驗,一般將采樣點時間比設置在位時間80%的位置是最佳的,于是有:
TSEG1=15;TSEG2=4
采樣點時間比=(1+TSEG1)/(1+TSEG1+
TSEG2)=(1+15)/(1+15+4)=0.8=80%
(3) 確定同步跳轉寬度和采樣次數。
為完成位定時參數的設置,最后還要確定同步跳轉寬度和采樣次數。同步跳轉寬度的一般設置原則是在允許的范圍內應盡可能的大一些,這樣更有利于在重同步時對沿相位誤差的補償,在這里可將該參數設置為3。采樣次數的設置比較容易和直接,對于高速總線,建議將SAM置為“0”,此時總線被采樣1次;而對于低/中速總線,建議將SAM置為“1”,此時總線被采樣3次。250 Kb/s屬于高速總線,所以在這里SAM應置為0。
通過以上方法和步驟所確定的各參數值,再結合式(2)、式(3)、式(5)、式(6)可直接得出寄存器BTR0和BTR1的設置值[10,11]。
4 結 語
(1) 結合圖解的方式對CAN總線位定時、硬同步和重同步等關鍵技術的深入探討和分析,反映了CAN總線位定時和同步機制的本質、清晰地表明了它們在CAN技術規范中的地位與作用。
(2) 在CAN總線中,通信波特率(位時間)、每個位時間的采樣位置及個數、同步跳轉寬度等都可以自行設定。然而,位定時參數如果設置不當就會檢測到錯誤并進行錯誤處理,導致總線性能下降甚至無法工作。因此要分析、解決這樣的問題就需要對CAN總線位定時和同步機制有較深入的理解,從而保證正確地設置位定時參數。
(3) 這里所研究的內容,是深入理解和學習CAN總線技術的前提和保證,也是進行后續開發和研究的基礎和關鍵。
參考文獻
[1]夏德海.現場總線的現狀及其發展趨勢[J].電氣時代,2006(8):16-19.
[2]劉芳.淺談基于CAN總線現場的數據采集系統[J].鐵道通信信號,2006(3):23-24.
[3]饒運濤,鄒繼軍,王進宏.現場總線CAN原理與應用技術[M].2版.北京:北京航空航天大學出版社,2007.
[4]甘永梅,李慶豐,劉曉娟,等.現場總線技術及應用[M].北京:機械工業出版社,2004.
[5]鞠玉翔.基于CAN的一個現場總線控制實驗系統的設計[D].上海:華東理工大學,2004.
[6]蔣智康,陳濤,宋春寧.PIC單平機的CANopen通信協議[J].單片機與嵌入式系統應用,2008(9):24-27.
[7]楊福宇.對TTCAN的分析[J].單片機與嵌入式系統應用,2008(6):5-7.
[8]姜重然,陳文平,單琳娜.基于單片機以太網節點及精簡TCP/IP協議棧的設計[J].單片機與嵌入式系統應用,2008(8):73-75.
[9]姜重然,陳文平,單琳娜.基于現場總線一種報文優先級產生與檢測方法[J].測控技術,2008(9):54-56.
[10]張煌,王常順.CAN總線冗余的船舶監控系統的設計[J].單片機與嵌入式系統應用,2008(10):57-60.
[11]劉國棟,王爽心,吳枝祥.LPC2131基于CPLD的CAN接口設計[J].單片機與嵌入式系統應用,2008(5):66-67.