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=BRP/fcan

 

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~4t                  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)

 

舉例說明:

參考來源:http://www.docin.com/p-498322094.html

                 https://blog.csdn.net/sudogod/article/details/15503867


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM