影響CAN總線穩(wěn)定的因素有很多,其中波特率是一項(xiàng)非常重要的指標(biāo),很多工程師在選擇波特率時(shí)非常頭疼。今天我們就來說說該如何快速解決特殊波特率計(jì)算的問題。
CAN總線采用的是異步串行通信,也就是沒有單獨(dú)的時(shí)鐘線來保證各個(gè)收發(fā)器之間時(shí)鐘的一致,每個(gè)收發(fā)器是按事先設(shè)置的波特率來對(duì)總線上的電平進(jìn)行分位。因此波特率設(shè)置準(zhǔn)確對(duì)CAN總線的穩(wěn)定通信來說非常重要。
CAN總線里我們可以通過對(duì)CAN節(jié)點(diǎn)里的位定時(shí)寄存器的控制來實(shí)現(xiàn)不同波特率的通信。CAN協(xié)議里將一個(gè)位時(shí)間分為同步段、傳播段、相位緩沖段1和相位緩沖段2。每個(gè)段的時(shí)間長(zhǎng)度都可以用一個(gè)整數(shù)的基本時(shí)間單位表示,該基本時(shí)間單位由系統(tǒng)的時(shí)鐘振蕩器分頻得到。
同步段位于一個(gè)位的起始位置,CAN-bus規(guī)定跳變沿為同步信號(hào),但是發(fā)送節(jié)點(diǎn)發(fā)送一個(gè)位跟接收節(jié)點(diǎn)接收到這個(gè)位之間存在網(wǎng)絡(luò)傳播延遲,傳播段則是為了補(bǔ)償這段傳播延遲,由于采樣點(diǎn)位置在相位緩沖段1跟相位緩沖段2之間,通過設(shè)置相位緩沖段1和相位緩沖段2的值,可以調(diào)整采樣點(diǎn)位置,保證每個(gè)位采樣點(diǎn)一致。緩沖段的長(zhǎng)度調(diào)節(jié)范圍則是由同步跳轉(zhuǎn)寬度(SJW)決定。
圖1 CAN位時(shí)間結(jié)構(gòu)圖
簡(jiǎn)單的了解了CAN總線位時(shí)間的分段后,我們來看看一個(gè)節(jié)點(diǎn)的波特率到底要如何設(shè)置。如圖2是某ARM內(nèi)核的CAN位時(shí)間特性寄存器 (CAN_BTR)。
圖2 某ARM內(nèi)核位時(shí)間特性寄存器結(jié)構(gòu)圖
SILM(靜默模式)跟LBKM(回環(huán)模式)用于調(diào)試;
SJW:同步跳轉(zhuǎn)寬度;
TS2/TS1:位時(shí)間里兩個(gè)時(shí)間段的分配;
BRP:波特率分頻器,該區(qū)域定義了基本時(shí)間單元的長(zhǎng)度;
例如某著名車廠CAN通信標(biāo)準(zhǔn)里規(guī)定,通信速率為125 kbps時(shí),應(yīng)該采用單次采樣,采樣點(diǎn)位置設(shè)置在70%~77%之間。其位定時(shí)參數(shù)取值可見表1與表2。
表1 LS_CAN通信速率與采樣點(diǎn)參數(shù)
表2 LS_CAN可選時(shí)間份額與同步跳轉(zhuǎn)帶寬
采樣點(diǎn):采樣點(diǎn)不能太靠前也不能太靠后,否則如果剛好處于一個(gè)位的上升沿或者下降沿區(qū)間,會(huì)造成識(shí)別錯(cuò)誤,所以根據(jù)CIA105的規(guī)范,采樣點(diǎn)在87.5%左右比較合適。但是一般我們可根據(jù)實(shí)際情況選取75%~85%之間;
同步跳轉(zhuǎn)寬度(SJW):SJW的值直接影響到重同步時(shí)相位緩沖段的可調(diào)節(jié)的范圍,SJW的值可以在1~4之間選擇,我們選擇3、4可以使總線獲得更寬的波特率容忍度;
采樣次數(shù):分為單次采樣跟三次采樣,三次采樣在設(shè)計(jì)之初雖然是為了過濾掉總線上毛刺,但是采用三次采樣經(jīng)常會(huì)影響SJW的跳轉(zhuǎn),所以實(shí)際應(yīng)用中我們一般都會(huì)采用單次采樣。
了解設(shè)置波特率的原則后,我們采用ZLG致遠(yuǎn)電子的波特率計(jì)算軟件,對(duì)25kbps波特率的設(shè)置參數(shù)進(jìn)行計(jì)算,計(jì)算結(jié)果如圖3。
圖3 25kbps波特率計(jì)算參數(shù)
根據(jù)上面提到的原則,我們選取采樣點(diǎn)為75%,SJW為4,時(shí)間份額為14的一組參數(shù),采用ZLG的CAN卡做驗(yàn)證。
-
自動(dòng)波特率識(shí)別:采用CANScope自動(dòng)偵測(cè)波特率的功能,對(duì)CAN卡的波特率進(jìn)行識(shí)別,識(shí)別結(jié)果為25kbps;
圖4 自動(dòng)偵測(cè)波特率
-
采樣點(diǎn)測(cè)試:采用CANScope對(duì)當(dāng)前波特率下CAN卡的采樣點(diǎn)進(jìn)行測(cè)試,測(cè)試結(jié)果為75%;
圖5 采樣點(diǎn)測(cè)試
-
位寬容忍度測(cè)試:采用CANScope對(duì)當(dāng)前波特率下CAN卡進(jìn)行位寬容忍度測(cè)試,測(cè)試其對(duì)波特率的容忍度情況,測(cè)試結(jié)果為24kbps~26kbps,容忍度情況較好;
圖6 位寬容忍度測(cè)試
-
位時(shí)間測(cè)試:用CANScope的眼圖功能對(duì)當(dāng)前波特率下CAN卡進(jìn)行位時(shí)間測(cè)試,位時(shí)間為40us,與25kbps波特率的位時(shí)間相符。
圖7 眼圖測(cè)試位時(shí)間
通過對(duì)波特率計(jì)算器計(jì)算出來的波特率寄存器設(shè)置參數(shù)進(jìn)行驗(yàn)證,發(fā)現(xiàn)測(cè)試結(jié)果跟我們的預(yù)期結(jié)果一致,因此在使用特殊波特率時(shí),我們可以借助波特率計(jì)算器來快速計(jì)算出位定時(shí)寄存器的參數(shù)值。下面我們給出一些可參考的特殊波特率的參數(shù):
-
CAN總線
+關(guān)注
關(guān)注
145文章
1898瀏覽量
130336 -
波特率
+關(guān)注
關(guān)注
2文章
290瀏覽量
33926
原文標(biāo)題:【解惑】非標(biāo)準(zhǔn)的CAN波特率怎么計(jì)算
文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論