can部分 6 stm32的can波特率配置
?
can的波特率計(jì)算:
stm32的配置參數(shù)
其中
CAN_SJW_1tq是同步段,習(xí)慣上默認(rèn)配置成1.? 可以調(diào)節(jié)的節(jié)拍數(shù). (范圍1-4)
CAN_BS2_6tq是相位緩沖段2. (范圍1-8)
CAN_BS1_7tq是傳播段+相位緩沖段1. (范圍1-16)
3,這里是預(yù)分頻值. (范圍1-1024)
函數(shù)原型:
先按照波特率定義中的各個(gè)參數(shù),進(jìn)行計(jì)算:
計(jì)算出各個(gè)變量.
然后再選出最優(yōu)的變量組合.
然后再用選好的變量,推算出stm32的寄存器賦值.

第一個(gè)參數(shù):
Q,一個(gè)位切分成的份數(shù).(范圍 3-25?越大越好)
BRP是用于將APB的時(shí)鐘分頻到CAN時(shí)鐘.
BRP=APB/(Q*Baudrate) ,
根據(jù)上面公式
APB,已知=42M
Baudrate,已知=1000000Kbps=1M
那么,Q和BRP就可以計(jì)算出來(lái).
(這里會(huì)有很多組滿足條件的,然后Q范圍限制在3-25,且越大越好,所以選出最優(yōu)的一組)
(最終定下 Q=14 )
(最終定下?BRP=3)
舉例:?42M/(14*3)=1000Kbps=1M的波特率
Q的參數(shù)就是越大越好.
Q就是一個(gè)bit,一個(gè)位所被分成的節(jié)拍數(shù).
Q是總的節(jié)拍數(shù),要分給各個(gè)段.
Q=Tss+Tps+Tpbs1+Tpbs2=14
那么1M波特率就是1us傳輸1位數(shù)據(jù).
Q等于14,就是把1us分成了14份,每份約0.07142us? (次值就是時(shí)間節(jié)拍Tq).
然后,下面計(jì)算Tss,Tps,Tpbs1,Tpbs2各占多少份
第二個(gè)參數(shù):
Tss
按照習(xí)慣,通常占一拍.
即Tss=1
第三個(gè)參數(shù):
Tps
其物理意義是傳播段時(shí)間長(zhǎng)度.
信號(hào)在總線上來(lái)回傳輸所消耗的時(shí)間.
設(shè)一次單向傳輸?shù)难訒r(shí)為包括:
1.發(fā)送節(jié)點(diǎn)從生產(chǎn)信號(hào)到把信號(hào)發(fā)送到總線上,T1.
2.信號(hào)在總線上傳輸?shù)臅r(shí)間T2.
3.接收節(jié)點(diǎn)從總線獲取信號(hào)的時(shí)間T3.
因?yàn)槭莵?lái)回傳輸,所以要乘以2.
Tps>=2*(T1+T2+T3)
舉例:
Tps是由設(shè)備性能和總線長(zhǎng)度決定的.通常總線延時(shí)可按5.5ns/米計(jì).單個(gè)節(jié)點(diǎn)收
發(fā)延遲可按75ns計(jì).假如有線長(zhǎng)12m,則Tps=2*(12*5.5+75)=141ns.根據(jù)上一步的Q值
(想要的波特率和時(shí)鐘分頻得到),計(jì)算出節(jié)拍時(shí)間Tq?這個(gè)已知約0.07142us=71.42ns 在上面計(jì)算過(guò).
Tps=141/71.42=1.974約為2
即Tps=2
第四個(gè)參數(shù),第五個(gè)參數(shù)
Tpbs1,Tpbs2
根據(jù)Q值-1-Tps(Tss一般默認(rèn)為1),就得到Tpbs1和Tpbs2兩數(shù)之和,
Q-Tss-Tps=Tpbs1+Tpbs2
由于上面計(jì)算
Q已知=14
Tss已知=1
Tps已知=2
那么Tpbs1和Tpbs2就能計(jì)算出來(lái).
Tpbs1+Tpbs2=11
然后除以2,就得到了分別的值.如果是奇數(shù)則Tpbs2比Tpbs1多1個(gè).
Tpbs2=6
Tpbs1=5
至此,上面的所有參數(shù)都得到了.
然后,開(kāi)始根據(jù)上面的參數(shù),計(jì)算stm32的參數(shù).
根據(jù)表格:

1,stm32單片機(jī)中的第一個(gè)參數(shù):即:CAN_SJW_1tq
CAN_SJW_1tq 就是1
2,stm32單片機(jī)中的第二個(gè)參數(shù):即:CAN_BS2_6tq=6
Tpbs2是stm32單片機(jī)中的Ts2;
stm32_Ts2=Tpbs2=6
3,stm32單片機(jī)中的第三個(gè)參數(shù):即:CAN_BS1_7tq=7
Tps和Tpbs1相加構(gòu)成stm32單片機(jī)中的Ts1;
stm32_Ts1=Tps+Tpbs1=2+5=7
4,stm32單片機(jī)中的第四個(gè)參數(shù):3
BRP=3
總結(jié):
其實(shí),CAN的波特率實(shí)際是多個(gè)參數(shù)決定的.
這樣更加確定了采樣點(diǎn)的位置.

還可以通過(guò)一些軟件進(jìn)行配置波特率
