STM32CAN波特率簡易計算

2021-10-05 17:30:44 字數 1417 閱讀 8031

can匯流排通訊的各節點通訊時會產生相位差,所以要進行位同步,兩個節點保持步調一致。

can_sjw:重新同步跳躍寬度(sjw) 。定義了在每位中可以延長或縮短多少個時間單元的上限。其值可以程式設計為1到4個時間單元。

can_bs1:時間段1(bs1):定義取樣點的位置。其值可以程式設計為1到16個時間單元,但也可以被自動延長,以補償因為網路中不同節點的頻率差異所造成的相位的正向漂移。

can_bs2:時間段2(bs2):定義傳送點的位置。其值可以程式設計為1到8個時間單元,但也可以被自動縮短以補償相位的負向漂移。

can_prescaler:直觀理解就是分頻率。

can_sjw : can_sjw_1tq - can_sjw_4tq 一般預設為1  不能比任何一相位緩衝段長

can_bs1 : can_bs1_1tq - can_bs1_16tq

can_bs2 : can_bs2_1tq - can_bs2_8tq

can_prescaler : 1 - 1024

stm32f1x配置說明:

ex:根據需要使用的波特率選擇取樣率:

比如我需要baud = 250k,取樣率就是0.875;

(tss + ts1)/(tss + ts1 + ts2) = 0.875

(1 + ts1) / (1 + ts1 + ts2) = 0.875

要讓ts1 和ts2 都為整數且上面等式成立,則有:   can_bs1 = 6,can_bs2= 1;

can_bs1 = 13,can_bs2= 2

……2.根據baud = 36000000 / (1 + can_bs1 + can_bs2) / can_prescaler = 250k

can分頻: can_prescaler = 36000000/(1 + 13 + 2)/250k = 9;

所以需要配置canband = 250k引數為:

can_bs1 = can_bs1_13tq(13)

can_bs2 = can_bs2_2tq(2)

can_prescaler = 9

程式中can波特率給對應引數:

stm32波特率計算

1.什麼是波特率 不管是什麼微控制器,在使用串列埠通訊的時候,有乙個非常重要的引數 波特率。什麼是波特率 波特率就是每秒傳送的位元組數。雙方在傳輸資料的過程中,波特率一致,這是通訊成功的基本保障。下面以stm32微控制器為例,講解一下串列埠波特率的計算方法。2.stm32波特率相關的暫存器 stm3...

STM32之CAN 配置波特率

為了掌握如何設定stm32 can的波特率,首先我們得先了解一下位時間特性。位時間特性邏輯通過取樣來監視序列的can匯流排,並且通過跟幀起始位的邊沿進行同步,及通過跟後面的邊沿進行重新同步,來調整其取樣點。它的操作可以簡單解釋為,如下所述把名義上的每位的時間分為3段 同步段 sync seg 通常期...

STM32之CAN 配置波特率

為了掌握如何設定stm32 can的波特率,首先我們得先了解一下位時間特性。位時間特性邏輯通過取樣來監視序列的can匯流排,並且通過跟幀起始位的邊沿進行同步,及通過跟後面的邊沿進行重新同步,來調整其取樣點。它的操作可以簡單解釋為,如下所述把名義上的每位的時間分為3段 同步段 sync seg 通常期...