CAN波特率設定
通過對CAN位定時暫存器CANBIT以及CAN波特率預分頻擴充套件暫存器CANBRPE的設定可以得到需要的CAN通訊波特率。
CAN的位定時配置不當,將使得CAN模組無法按照目標波特率接入CAN網路,將導致CAN節點無法通訊正常。
根據CAN規範,位時間被分成4個時間段:同步段(Sync_Seg)、傳播時間段(Prop_Seg)、相位緩衝段1(Phase_Seg1)和相位緩衝段2(Phase_Seg2)
每個段由具體、可程式設計數量的時間份額(time quanta)組成,時間份額是位時間的基本時間單元,它的長度(tq)由CAN控制器的系統時鐘(fcan)和波特率預分頻器BRP定義:tq
CAN模組的系統時鐘fcan是其CAN模組時鐘(CAN_CLK)輸入的頻率。
各引數取值範圍:
引數 範圍 程式設計值 說明
BRP 1~64 0~63 波特率分頻器,定義時間單元tq的時間長度
Sync_Seg 1tq
Prop_Seg 1~8tq 0~7 補償物理延時時間
Phase_Seg1 1~8tq 0~7 相位緩衝段1,補償邊沿階段的誤差,可通過同步暫時延長
Phase_Seg2 1~8tq 0~7 相位緩衝段2,補償邊沿階段的誤差,可通過同步暫時縮短
SJW 1~4tq 0~3 同步跳轉寬度,不能比相位緩衝段長
位時間長度為:[TSEG1+TSEG2+3]tq或[Sync_Seg+Prop_Seg+Phase_Seg1+Phase_Seg2]tq
位定時配置的程式設計是由兩個CANBTR決定的:Prop_Seg與Phase_Seg1 的和(作為TSEG1)與Phase_Seg2(作為TSEG2)組合成一個位元組,而SJW與BRP組合成另一個位元組。
SAMP TSEG22 TSEG21 TSEG20 TSEG13 TSEG12 TSEG11 TSEG10
SJW1 SJW0 BRP5 BRP4 BRP3 BRP2 BRP1 BRP0
將結果配置寫入暫存器:((TSeg2-1)<<12)|((TSeg1-1)<<8)|((SJW-1)<<6)|(BRP-1)
引數的計算步驟
1、首先計算CAN時鐘和波特率的比值
2、根據比值確定BRP和時間量子的數目,一個位時間總的時間份額值可以設定在8~25的範圍內
3、Sync_Seg的值固定為1tq,量子數目減1後再分配
4、Prop_Seg其長度視系統測量的延遲時間而定,必須為可擴充套件的CAN匯流排系統定義最大的匯流排長度和最大的節點延遲。
5、Prog_Seg<=Phase_Seg1<=Phase_Seg2;Phase_Seg1=Phase_Seg2 或者 Phase_Seg1+1=Phase_Seg2
6、Phase_Seg2不能比CAN控制器的資訊處理時間短
7、同步跳轉寬度SJW取4和 Phase_Seg1中小的那個
總的來說,波特率BitRate=Fpclk/((BRP+1)*((TSEG1+1)+(TSEG2+1)+1)
舉例說明: