優(yōu)化位定時(shí)提高CAN 網(wǎng)絡(luò)性能的研究
隨著 CAN 總線的應(yīng)用越來越廣泛,對(duì)如何提高CAN 總線網(wǎng)絡(luò)的性能就顯得尤為重要。 CAN 總線允許用戶自行設(shè)計(jì)采樣點(diǎn)位置和采樣次數(shù)來優(yōu)化應(yīng)用網(wǎng)絡(luò)的性能。而振蕩器容差 和總線長度是互相沖突的,只有通過優(yōu)化位定時(shí)參數(shù)才能使二者兼?zhèn)?。本文深入分析了CAN 總線的位定時(shí)參數(shù)、參考振蕩器容差和信號(hào)傳播延遲之間的關(guān)系,提出了一種切實(shí)可行的優(yōu) 化方法,并采用獨(dú)立CAN 控制器SJA1000 構(gòu)建實(shí)驗(yàn)平臺(tái),經(jīng)驗(yàn)證該方法是有效的。
1 位定時(shí)控制方法分析
1.1 位時(shí)間
位時(shí)間即位周期是指一位的持續(xù)時(shí)間。額定位周期tBit由同步段SYNC_SEG、相位緩 沖段TSEG 1 和TSEG2這3個(gè)時(shí)間段組成。
額定位周期中這些段都由整數(shù)個(gè)基本時(shí)間單位來表示,稱為時(shí)間份額(TQ),而時(shí)間份 額由振蕩器時(shí)鐘周期CLK t 和波特率預(yù)分頻值BRP 取得。
簡言之,位定時(shí)的作用可歸納為:1)確定位時(shí)間,以便確定波特率,進(jìn)而確定總線的 網(wǎng)絡(luò)速度;或在給定總線的網(wǎng)絡(luò)速度的情況下確定位時(shí)間;2)確定1 位的各個(gè)組成部分的 時(shí)間長度;3)確定重同步跳轉(zhuǎn)寬度以用于重同步。
1.2 傳輸延遲
CAN 總線中的節(jié)點(diǎn)通過非破壞性仲裁訪問網(wǎng)絡(luò),總線上的所有節(jié)點(diǎn)都要同步于最先開 始發(fā)送的節(jié)點(diǎn),但是節(jié)點(diǎn)之間競爭優(yōu)先權(quán)時(shí)會(huì)產(chǎn)生傳輸延遲,使節(jié)點(diǎn)的同步達(dá)不到理想值。 如果傳輸延遲時(shí)間過長,將導(dǎo)致無效的訪問仲裁。同時(shí),CAN 總線中的各種延遲在給定位 速率下還會(huì)限制最大的網(wǎng)絡(luò)總線長度。
如圖 2 所示,節(jié)點(diǎn)A 和節(jié)點(diǎn)B 都是發(fā)送節(jié)點(diǎn),因此總線要對(duì)兩個(gè)節(jié)點(diǎn)進(jìn)行仲裁。節(jié)點(diǎn) A 比節(jié)點(diǎn)B 提前發(fā)送不到1 個(gè)位時(shí)間,當(dāng)節(jié)點(diǎn)B 收到延遲后的跳變沿時(shí),節(jié)點(diǎn)B 要同步于 節(jié)點(diǎn)A,對(duì)位時(shí)間進(jìn)行移相。移相后節(jié)點(diǎn)B 發(fā)送的標(biāo)識(shí)符有較高優(yōu)先級(jí),因此贏得總線的 使用權(quán),同時(shí)節(jié)點(diǎn)B 發(fā)送的顯性位經(jīng)過延遲后到達(dá)節(jié)點(diǎn)A。
因?yàn)榇嬖谡袷幤魅莶?,?jié)點(diǎn)A 的采樣點(diǎn)在相位緩沖段的位置是不能確定的,所以節(jié)點(diǎn)B 發(fā)送的位流必須在節(jié)點(diǎn)A 的相位緩沖段1 開始之前到達(dá),因此傳播時(shí)間段的長度將受到這 個(gè)條件的限制。
2 位定時(shí)參數(shù)的計(jì)算
2.1 實(shí)驗(yàn)方法及軟件設(shè)計(jì)
CAN 系統(tǒng)的最小要求是有兩個(gè)節(jié)點(diǎn),本實(shí)驗(yàn)系統(tǒng)由4 臺(tái)插有CAN 適配器的PC 機(jī)構(gòu)成, 4 臺(tái)PC 機(jī)分別定義為節(jié)點(diǎn)1、節(jié)點(diǎn)2、節(jié)點(diǎn)3、節(jié)點(diǎn)4。該適配器以獨(dú)立CAN 控制器SJA1000 為核心,SJA1000 是由PHILIPS 公司生產(chǎn),支持PeliCAN 模式。
獨(dú)立CAN 控制器SJA1000 中,總線定時(shí)寄存器0(BTR0) 用來定義波特率預(yù)設(shè)值BRP 和同步跳轉(zhuǎn)寬度SJW 的值,總 線定時(shí)器1 用來定義每個(gè)位周期的長度、采樣點(diǎn)的位置,以 及在每個(gè)采樣點(diǎn)的采樣數(shù)目。
本系統(tǒng)采用低波特率通信,因此選擇3 采樣點(diǎn)模式,基 于以上討論及SJA1000 的特點(diǎn),可以設(shè)計(jì)出CAN 總線位定 時(shí)計(jì)算的軟件,其流程圖如圖3 所示。
選 擇 3 采樣點(diǎn)模式時(shí)位定時(shí)的計(jì)算公式如下:
當(dāng)表 2 中計(jì)算出的TSEG2的最小值和最大值出現(xiàn)沖突時(shí),需要減少期望的最大傳播延遲和 使用容差更小的振蕩器來重新計(jì)算位定時(shí)參數(shù)。
3 結(jié)論
優(yōu)化位定時(shí)時(shí)間能大大提高 CAN 總線網(wǎng)絡(luò)的性能,本文提出的方法能有效的得到最優(yōu) 的位定時(shí)參數(shù),實(shí)驗(yàn)證明該方法是可行和有效的。本文作者創(chuàng)新點(diǎn):設(shè)計(jì)系統(tǒng)采用低波特率 通信,針對(duì)傳輸延遲和振蕩器容差編寫出最優(yōu)位定時(shí)參數(shù)計(jì)算程序,該方法能應(yīng)用到CAN 總線節(jié)點(diǎn)開發(fā)中。