單琳娜,徐斌山,陳文平
摘 要:在CAN規(guī)范中,位定時(shí)和同步機(jī)制是既重要又難于理解的環(huán)節(jié)之一,它不僅關(guān)系到對(duì)規(guī)范其他相關(guān)內(nèi)容的理解,甚至能對(duì)節(jié)點(diǎn)開發(fā)的成功與否產(chǎn)生直接的影響。因此介紹了位時(shí)間(周期)的組成與結(jié)構(gòu),總結(jié)并歸納位定時(shí)的作用;在此基礎(chǔ)上,給出硬同步和重同步的定義,重點(diǎn)分析硬同步和重同步的機(jī)理,并給出它們相應(yīng)的圖解,形象而又清晰地表明其本質(zhì);以獨(dú)立CAN控制器為例,詳細(xì)說明在一般開發(fā)和工程實(shí)際中,位定時(shí)參數(shù)設(shè)置和計(jì)算的一般方法及步驟。
關(guān)鍵詞:位定時(shí);硬同步;重同步;參數(shù)
中圖分類號(hào):TP3344文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):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 引 言
控制器局域網(wǎng)CAN是一種用于連接汽車和工業(yè)場(chǎng)合中電子控制模塊、傳感器和執(zhí)行器的串行、多主通信規(guī)范[1,2]。由于CAN總線具有很強(qiáng)的糾錯(cuò)能力、支持差分收發(fā)、傳輸距離遠(yuǎn)等特點(diǎn),因此CAN總線用途非常廣泛,現(xiàn)已成為工業(yè)數(shù)據(jù)通信領(lǐng)域的主流技術(shù)、基礎(chǔ)技術(shù),目前比較流行的TTCan,DeviceNet,CANOpen,SAE J1939等規(guī)范均是以CAN為基礎(chǔ)的,因此對(duì)CAN總線的深入研究是十分必要的。在CAN規(guī)范中,位定時(shí)和同步機(jī)制是既重要又難于理解的環(huán)節(jié)之一,它不僅關(guān)系到對(duì)波特率、總線長度等相關(guān)內(nèi)容的理解,甚至對(duì)節(jié)點(diǎn)開發(fā)的成功與否產(chǎn)生直接的影響。然而,目前相關(guān)文獻(xiàn)均缺乏針對(duì)CAN總線位定時(shí)和同步機(jī)制的詳細(xì)分析和探討。在此以CAN技術(shù)規(guī)范為基礎(chǔ),深入分析CAN總線的位定時(shí)和同步機(jī)制,給出硬同步和重同步的定義,并給出相應(yīng)的圖解解釋方式,對(duì)位時(shí)間的組成與結(jié)構(gòu)、同步的發(fā)生時(shí)刻、同步是如何進(jìn)行的等關(guān)鍵內(nèi)容給出了明確而又具體的分析。這里的工作對(duì)理解位定時(shí)和同步機(jī)制的本質(zhì)、指導(dǎo)位時(shí)間參數(shù)的設(shè)置均具有較高的參考價(jià)值[3,4]。
1 位定時(shí)
1.1 位時(shí)間的組成
位時(shí)間(位周期)tB即1位的持續(xù)時(shí)間。正常位時(shí)間tNBT是正常位速率fNBT(在非重同步的情況下,借助理想發(fā)送器每秒發(fā)送的位數(shù))的倒數(shù),即tNBT =1/fNBT。正常位時(shí)間可劃分為幾個(gè)互不重疊的時(shí)間段,這些時(shí)間段包括:同步段(SYNC-SEG)、傳播時(shí)間段(PROP-SEG)、相位緩沖器段1(PHASE-SEG1)、相位緩沖器段2(PHASE-SEG2)。每個(gè)時(shí)間段由整數(shù)個(gè)被稱為時(shí)間份額tQ的基本時(shí)間單位組成。tQ是由振蕩器周期tCLK派生出的一個(gè)固定時(shí)間單元。一個(gè)時(shí)間份額的持續(xù)時(shí)間通常便是CAN的一個(gè)系統(tǒng)時(shí)鐘周期tSCL。tSCL可通過可編程的預(yù)引比例因子進(jìn)行調(diào)整。每個(gè)位時(shí)間必須由8~25個(gè)時(shí)間份額組成。位時(shí)間的組成如圖1所示。
圖1 位時(shí)間組成
位時(shí)間的各個(gè)時(shí)間段均有其特定的用途[5]:
(1) 同步段用于使總線上的各個(gè)節(jié)點(diǎn)同步,要求有1個(gè)跳變沿位于此段內(nèi),該段長度為1個(gè)時(shí)間份額;
(2) 傳播時(shí)間段用于補(bǔ)償網(wǎng)絡(luò)內(nèi)的物理延時(shí),它是信號(hào)在總線上傳播時(shí)間、輸入比較器延時(shí)和輸出驅(qū)動(dòng)器延時(shí)之和的2倍,該段長度為1~8個(gè)時(shí)間份額;
(3) 相位緩沖器段1和相位緩沖器段2用于補(bǔ)償沿的相位誤差,通過重同步,相位緩沖器段1可被延長或相位緩沖器段2可被縮短。
這些時(shí)間段的長度均是可編程的。在常用的通信控制器(SJA1000)或PAC82C200中,合并傳播時(shí)間段和相位緩沖器段1,稱為時(shí)間段1(TSEG1),相位緩沖器段2稱為時(shí)間段2(TSEG2),如圖1所示。
采樣點(diǎn)是這樣一個(gè)時(shí)刻:在此時(shí)刻上,總線電平被讀取并被理解為其自身的數(shù)值。它位于相位緩沖器段1的終點(diǎn)。在重同步期間,采樣點(diǎn)的位置被移動(dòng)整數(shù)個(gè)時(shí)間份額,該時(shí)間份額被允許的最大值稱為重同步跳轉(zhuǎn)寬度(SJW),它可被編程為1~4個(gè)時(shí)間份額。值得注意的是,重同步跳轉(zhuǎn)寬度并不是位時(shí)間的組成部分。
1.2 位定時(shí)的作用
位定時(shí)是由節(jié)點(diǎn)自身完成的(可編程),節(jié)點(diǎn)進(jìn)行位定時(shí)的作用為[6,7]:
(1) 確定位時(shí)間,以便確定波特率(位速率),從而確定總線的網(wǎng)絡(luò)速度;或在給定總線的網(wǎng)絡(luò)速度的情況下確定位時(shí)間;
(2) 確定1位的各個(gè)組成部分——同步段、傳播時(shí)間段、相位緩沖器段1和相位緩沖器段2的時(shí)間長度,其中同步段用于硬同步,位于相位緩沖器段1終點(diǎn)的采樣點(diǎn)用于保證正確地讀取總線電平;
(3) 確定重同步跳轉(zhuǎn)寬度以用于重同步。
2 CAN總線同步機(jī)制分析
CAN規(guī)范定義了自己獨(dú)有的同步方式:硬同步和重同步。同步與位定時(shí)密切相關(guān)。同步是由節(jié)點(diǎn)自身完成的,節(jié)點(diǎn)將檢測(cè)到來自總線的沿與其自身的位定時(shí)相比較,并通過硬同步或重同步適配(調(diào)整)位定時(shí)。在一般情況下,引起硬同步和重同步發(fā)生的、來自總線的沿如圖2所示。
圖2 硬同步和重同步發(fā)生時(shí)刻示意圖
2.1 硬同步
CAN 技術(shù)規(guī)范給出了硬同步和重同步的結(jié)果,但沒有給出硬同步和重同步的定義。這里首先給出硬同步和重同步的定義,然后對(duì)其進(jìn)行分析。
所謂硬同步,就是由節(jié)點(diǎn)檢測(cè)到的,來自總線的沿強(qiáng)迫節(jié)點(diǎn)立即確定出其內(nèi)部位時(shí)間的起始位置(同步段的起始時(shí)刻)。硬同步的結(jié)果是,沿到來時(shí)刻的前一時(shí)刻(以時(shí)間份額tQ量度),即成為節(jié)點(diǎn)內(nèi)部位時(shí)間同步段的起始時(shí)刻,并使內(nèi)部位時(shí)間從同步段重新開始。這就是規(guī)范中所說的“硬同步強(qiáng)迫引起硬同步的沿處于重新開始的位時(shí)間同步段之內(nèi)”。硬同步一般用于幀的開始,即總線上的各個(gè)節(jié)點(diǎn)的內(nèi)部位時(shí)間的起始位置(同步段)是由來自總線的一個(gè)報(bào)文幀的幀起始的前沿決定的。
同步段的時(shí)間長度為1個(gè)時(shí)間份額。如圖3所示,來自總線的引起硬同步的沿在t1時(shí)刻到來,則節(jié)點(diǎn)檢測(cè)到該沿。將t1時(shí)刻的前一時(shí)刻t0(以tQ為周期)作為內(nèi)部位時(shí)間同步段的起始時(shí)刻。
圖3 硬同步圖解
2.2 重同步
所謂重同步,就是節(jié)點(diǎn)根據(jù)沿相位誤差的大小調(diào)整其內(nèi)部位時(shí)間,以使節(jié)點(diǎn)內(nèi)部位時(shí)間與來自總線的報(bào)文位流的位時(shí)間接近或相等。作為重同步的結(jié)果,PHASE-SEG1可被延長或PHASE-SEG2可被縮短,從而使節(jié)點(diǎn)能夠正確地接收?qǐng)?bào)文。重同步一般用于幀的位流發(fā)送期間,以補(bǔ)償各個(gè)節(jié)點(diǎn)振蕩器頻率的不一致。這里涉及到沿相位誤差的概念。沿相位誤差由沿相對(duì)于節(jié)點(diǎn)內(nèi)部位時(shí)間同步段的位置給定,以時(shí)間份額量度,沿相位誤差的符號(hào)為e,其定義如下:
(1) 若沿處于SYNC~SEG之內(nèi),則e=0;
(2) 若沿處于采樣點(diǎn)之前(TSEG1內(nèi)),則e>0;
(3) 若沿處于前一位的采樣點(diǎn)之后(TSEG2內(nèi)),則e<0。
CAN技術(shù)規(guī)范中也給出了重同步跳轉(zhuǎn)寬度,重同步策略與同步規(guī)則,但比較抽象、不易理解。為深入理解節(jié)點(diǎn)是如何進(jìn)行重同步的,圖4給出了重同步的圖解。在圖4中,SY,PR,PS1和PS2分別表示同步段、傳播段、相位緩沖段1和相位緩沖段2。假定總線位流的第一位(幀起始,為“0”)起始于t1時(shí)刻、終止于t2時(shí)刻,總線位流的第2位為“1”;從第2位開始,總線位流的“隱性”(“1”)至“顯性”(“0”)和“顯性”(“0”)至“隱性”(“1”)的跳變沿均用于重同步。在t1時(shí)刻,節(jié)點(diǎn)檢測(cè)到總線的跳變沿,便進(jìn)行硬同步,使t1時(shí)刻的跳變沿處于節(jié)點(diǎn)內(nèi)部第1位位時(shí)間的同步段內(nèi)。節(jié)點(diǎn)從第1位的同步段開始啟動(dòng)內(nèi)部位定時(shí),即根據(jù)系統(tǒng)要求的波特率給出內(nèi)部位時(shí)間?,F(xiàn)假定由于各節(jié)點(diǎn)振蕩器頻率的不一致,在t2時(shí)刻的跳變沿未處于節(jié)點(diǎn)第2位位時(shí)間的同步段SY內(nèi),而是處于PS1內(nèi),即有e>0。這表明節(jié)點(diǎn)內(nèi)部的位時(shí)間小于總線位流的位時(shí)間。為了使節(jié)點(diǎn)能從總線上通過采樣得到正確的位數(shù)值,需使節(jié)點(diǎn)內(nèi)部的位時(shí)間延長,以使節(jié)點(diǎn)內(nèi)部位時(shí)間與總線位流位時(shí)間接近或相等。因此,在這種情況下節(jié)點(diǎn)應(yīng)采取的重同步策略為:使PS1延長一定寬度(圖4中PS1延長2個(gè)時(shí)間份額,即同步跳轉(zhuǎn)寬度為大于等于2個(gè)時(shí)間份額,如為3個(gè)時(shí)間份額)。e<0的情況與之類似,只是PS2會(huì)相應(yīng)地縮短一定寬度。這與CAN技術(shù)規(guī)范中的重同步策略是一致的。
圖4 重同步圖解(e>0)
這里需要注意的是,相位緩沖段只在當(dāng)前的位時(shí)間內(nèi)被延長或縮短,在接下來的位時(shí)間內(nèi),只要沒有重同步,各時(shí)間段將恢復(fù)編程預(yù)設(shè)值。
3 控制器中位定時(shí)參數(shù)設(shè)置的一般方法
在典型的獨(dú)立CAN控制器(SJA1000或PCA82C200)中,負(fù)責(zé)位定時(shí)的寄存器為總線定時(shí)寄存器0(BTR0)和總線定時(shí)寄存器1(BTR1),其結(jié)構(gòu)如圖5所示[8,9]。
圖5 總線定時(shí)寄存器
寄存器中有關(guān)參數(shù)的計(jì)算公式如下:
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)
這些參數(shù)的范圍在CAN中有較嚴(yán)格的規(guī)定,具體如表1所示。
表1 位定時(shí)參數(shù)的范圍(以時(shí)間份額度量)
參數(shù)范圍說明
SAM0或1規(guī)定采樣次數(shù)
SJW1~4規(guī)定相位緩沖段延長或縮短的上限
BRP1~64規(guī)定時(shí)間份額的長度
SYNCSEG1同步總線上各節(jié)點(diǎn)
TSEG11~16補(bǔ)償沿相位誤差可被延長
TSEG21~8補(bǔ)償沿相位誤差可被縮短
NBT8~25正常位時(shí)間
在有些情況中,為了優(yōu)化網(wǎng)絡(luò)性能,這些參數(shù)的設(shè)置往往需要考慮傳輸延遲、時(shí)鐘偏頻等因素。然而,對(duì)于一般的開發(fā)或工程實(shí)際,完全可以根據(jù)經(jīng)驗(yàn)對(duì)其進(jìn)行計(jì)算和設(shè)置。這里以一個(gè)時(shí)鐘頻率為20 MHz、通信波特率為250 Kb/s(位時(shí)間為4 μs)的系統(tǒng)為例,介紹與位定位有關(guān)的各參數(shù)的計(jì)算方法和步驟。
(1) 確定時(shí)間份額。
由表1可知,在1個(gè)位周期中時(shí)間份額的數(shù)量必須是8~25之間的一個(gè)整數(shù)值。在滿足這個(gè)前提下,應(yīng)該使時(shí)間份額的時(shí)間值盡可能的小1些,也就是讓1個(gè)位周期中時(shí)間份額的數(shù)量更多。這樣做的目的是為了使采樣點(diǎn)位置的選擇具有更好的分辨率??紤]到以上兩個(gè)因素,在這里將時(shí)間份額的數(shù)量設(shè)置為20,于是有:
時(shí)間份額: tSCL=200 ns。
根據(jù)式(1):
BRP=tSCL/2tCLK=2
(2) 設(shè)置時(shí)間段和采樣點(diǎn)。
下面需要對(duì)時(shí)間段1和時(shí)間段2進(jìn)行分配和設(shè)置。由于時(shí)間份額的數(shù)量已經(jīng)確定,再根據(jù):時(shí)間份額的數(shù)量=1+TSEG1+TSEG2,
這樣看來,時(shí)間段1和2似乎有多個(gè)配置可供選擇。但有一點(diǎn)值得注意的是,時(shí)間段1和2的確定同樣關(guān)系著采樣點(diǎn)在位周期中的位置,這是非常關(guān)鍵的。因?yàn)槿绻蓸狱c(diǎn)選擇的不適當(dāng),在有些情況中會(huì)直接導(dǎo)致錯(cuò)誤的出現(xiàn)。與普通的串行通信端口或UART在中間位置(50%)的采樣不同,CAN總線的采樣點(diǎn)最好靠近位時(shí)間的末端。根據(jù)工程經(jīng)驗(yàn),一般將采樣點(diǎn)時(shí)間比設(shè)置在位時(shí)間80%的位置是最佳的,于是有:
TSEG1=15;TSEG2=4
采樣點(diǎn)時(shí)間比=(1+TSEG1)/(1+TSEG1+
TSEG2)=(1+15)/(1+15+4)=0.8=80%
(3) 確定同步跳轉(zhuǎn)寬度和采樣次數(shù)。
為完成位定時(shí)參數(shù)的設(shè)置,最后還要確定同步跳轉(zhuǎn)寬度和采樣次數(shù)。同步跳轉(zhuǎn)寬度的一般設(shè)置原則是在允許的范圍內(nèi)應(yīng)盡可能的大一些,這樣更有利于在重同步時(shí)對(duì)沿相位誤差的補(bǔ)償,在這里可將該參數(shù)設(shè)置為3。采樣次數(shù)的設(shè)置比較容易和直接,對(duì)于高速總線,建議將SAM置為“0”,此時(shí)總線被采樣1次;而對(duì)于低/中速總線,建議將SAM置為“1”,此時(shí)總線被采樣3次。250 Kb/s屬于高速總線,所以在這里SAM應(yīng)置為0。
通過以上方法和步驟所確定的各參數(shù)值,再結(jié)合式(2)、式(3)、式(5)、式(6)可直接得出寄存器BTR0和BTR1的設(shè)置值[10,11]。
4 結(jié) 語
(1) 結(jié)合圖解的方式對(duì)CAN總線位定時(shí)、硬同步和重同步等關(guān)鍵技術(shù)的深入探討和分析,反映了CAN總線位定時(shí)和同步機(jī)制的本質(zhì)、清晰地表明了它們?cè)贑AN技術(shù)規(guī)范中的地位與作用。
(2) 在CAN總線中,通信波特率(位時(shí)間)、每個(gè)位時(shí)間的采樣位置及個(gè)數(shù)、同步跳轉(zhuǎn)寬度等都可以自行設(shè)定。然而,位定時(shí)參數(shù)如果設(shè)置不當(dāng)就會(huì)檢測(cè)到錯(cuò)誤并進(jìn)行錯(cuò)誤處理,導(dǎo)致總線性能下降甚至無法工作。因此要分析、解決這樣的問題就需要對(duì)CAN總線位定時(shí)和同步機(jī)制有較深入的理解,從而保證正確地設(shè)置位定時(shí)參數(shù)。
(3) 這里所研究的內(nèi)容,是深入理解和學(xué)習(xí)CAN總線技術(shù)的前提和保證,也是進(jìn)行后續(xù)開發(fā)和研究的基礎(chǔ)和關(guān)鍵。
參考文獻(xiàn)
[1]夏德海.現(xiàn)場(chǎng)總線的現(xiàn)狀及其發(fā)展趨勢(shì)[J].電氣時(shí)代,2006(8):16-19.
[2]劉芳.淺談基于CAN總線現(xiàn)場(chǎng)的數(shù)據(jù)采集系統(tǒng)[J].鐵道通信信號(hào),2006(3):23-24.
[3]饒運(yùn)濤,鄒繼軍,王進(jìn)宏.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].2版.北京:北京航空航天大學(xué)出版社,2007.
[4]甘永梅,李慶豐,劉曉娟,等.現(xiàn)場(chǎng)總線技術(shù)及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004.
[5]鞠玉翔.基于CAN的一個(gè)現(xiàn)場(chǎng)總線控制實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)[D].上海:華東理工大學(xué),2004.
[6]蔣智康,陳濤,宋春寧.PIC單平機(jī)的CANopen通信協(xié)議[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(9):24-27.
[7]楊福宇.對(duì)TTCAN的分析[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(6):5-7.
[8]姜重然,陳文平,單琳娜.基于單片機(jī)以太網(wǎng)節(jié)點(diǎn)及精簡TCP/IP協(xié)議棧的設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(8):73-75.
[9]姜重然,陳文平,單琳娜.基于現(xiàn)場(chǎng)總線一種報(bào)文優(yōu)先級(jí)產(chǎn)生與檢測(cè)方法[J].測(cè)控技術(shù),2008(9):54-56.
[10]張煌,王常順.CAN總線冗余的船舶監(jiān)控系統(tǒng)的設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(10):57-60.
[11]劉國棟,王爽心,吳枝祥.LPC2131基于CPLD的CAN接口設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(5):66-67.