一、CAN波特率
STM32 位時間定義:
● 同步段(SYNC_SEG):通常期望位的變化發生在該時間段內。其值固定為1
個時間單元(1 x tCAN)。
● 時間段1(BS1):定義采樣點的位置。它包含CAN 標准里的 PROP_SEG 和
PHASE_SEG1。其值可以編程為1 到16 個時間單元,但也可以被自動延
長,以補償因為網絡中不同節點的頻率差異所造成的相位的正向漂移。
● 時間段2(BS2) : 定義發送點的位置。它代表CAN 標准里的
PHASE_SEG2。其值可以編程為1 到8 個時間單元,但也可以被自動縮短
以補償相位的負向漂移
BRP[9:0]: 波特率分頻器
PCLK1 = 36M
bps = 36M/(BRP[9:0]*(BS1+BS2+SYNC_SEG))
其中SYNC_SEG固定為1個時間單元所以 bps = 36M/(BRP[9:0]*(BS1+BS2+1)),此時注意跟同步跳轉寬度SJW沒關系,盡管他也一直設置為1.
二、CAN采樣點
采樣點位於時間段1和時間段2之間。根據CIA推薦采樣點,最好設置在85%~90%。
在網上查了好多,基本上都是這么計算 (BS1+1)/(1+BS1+BS2),得出的結果就是BS1比較大而BS2比較小基本上為1.