簡單的了解了CAN總線位時間的分段后,我們來看看一個節(jié)點的波特率到底要如何設(shè)置。如圖2是某ARM內(nèi)核的CAN位時間特性寄存器 (CAN_BTR)。
例如某著名車廠CAN通信標(biāo)準(zhǔn)里規(guī)定,通信速率為125 kbps時,應(yīng)該采用單次采樣,采樣點位置設(shè)置在70%~77%之間。其位定時參數(shù)取值可見表1與表2。
表 1 LS_CAN通信速率與采樣點參數(shù)
表 2 LS_CAN可選時間份額與同步跳轉(zhuǎn)帶寬
采樣點:采樣點不能太靠前也不能太靠后,否則如果剛好處于一個位的上升沿或者下降沿區(qū)間,會造成識別錯誤,所以根據(jù)CIA105的規(guī)范,采樣點在87.5%左右比較合適。但是一般我們可根據(jù)實際情況選取75%~85%之間;
同步跳轉(zhuǎn)寬度(SJW):SJW的值直接影響到重同步時相位緩沖段的可調(diào)節(jié)的范圍,SJW的值可以在1~4之間選擇,我們選擇3、4可以使總線獲得更寬的波特率容忍度;
采樣次數(shù):分為單次采樣跟三次采樣,三次采樣在設(shè)計之初雖然是為了過濾掉總線上毛刺,但是采用三次采樣經(jīng)常會影響SJW的跳轉(zhuǎn),所以實際應(yīng)用中我們一般都會采用單次采樣。
了解設(shè)置波特率的原則后,我們采用ZLG的波特率計算軟件,對25kbps波特率的設(shè)置參數(shù)進行計算,計算結(jié)果如圖3。
圖 3 25kbps波特率計算參數(shù)
根據(jù)上面提到的原則,我們選取采樣點為75%,SJW為4,時間份額為14的一組參數(shù),采用ZLG的CAN卡做驗證。
l自動波特率識別:采用CANScope自動偵測波特率的功能,對CAN卡的波特率進行識別,識別結(jié)果為25kbps;
圖 4 自動偵測波特率
l采樣點測試:采用CANScope對當(dāng)前波特率下CAN卡的采樣點進行測試,測試結(jié)果為75%;
圖 5 采樣點測試
l位寬容忍度測試:采用CANScope對當(dāng)前波特率下CAN卡進行位寬容忍度測試,測試其對波特率的容忍度情況,測試結(jié)果為24kbps~26kbps,容忍度情況較好;
圖 6 位寬容忍度測試
l位時間測試:用CANScope的眼圖功能對當(dāng)前波特率下CAN卡進行位時間測試,位時間為40us,與25kbps波特率的位時間相符。
圖 7 眼圖測試位時間
通過對波特率計算器計算出來的波特率寄存器設(shè)置參數(shù)進行驗證,發(fā)現(xiàn)測試結(jié)果跟我們的預(yù)期結(jié)果一致,因此在使用特殊波特率時,我們可以借助波特率計算器來快速計算出位定時寄存器的參數(shù)值。下面我們給出一些可參考的特殊波特率的參數(shù):