開發(fā)板??CH32V307? CAN通訊波特率 例程 是 250K。
請(qǐng)問 如何 配置 成? 500K, 和 1000K。
謝謝!
開發(fā)板??CH32V307? CAN通訊波特率 例程 是 250K。
請(qǐng)問 如何 配置 成? 500K, 和 1000K。
謝謝!
您好,關(guān)于CAN波特率的配置,可以參考下圖
我們來算一下例程:
/* Bps = 250Kbps,pclk1 = 36Mhz */
can_hw_init(CAN_SJW_1tq/* 一般固定為1tq */, CAN_BS2_5tq, CAN_BS1_6tq, 12, CAN_Mode_Normal );
Tclk = 1/36m
分頻:12(內(nèi)部減了1,再加一就是參數(shù)值)
Tq = (brp[90]+1) * tpclk = 12/36=1/3m
T1bit = 1+6+7=14
bps = 1/(1/3m * 14) = 3/14=0.214m
這樣比250差的比較遠(yuǎn),算的對(duì)嗎?
您好,有關(guān)CAN波特率計(jì)算的介紹可參考:https://www.cnblogs.com/wchmcu/p/17546797.html
這個(gè)例程,brp為啥是12?明明api會(huì)-1,是11啊。
可以看一下官方寄存器手冊(cè)對(duì)CAN BTIMR BRP[9:0]寄存器的描述。
附手冊(cè)鏈接:http://www.findthetime.net/downloads/CH32FV2x_V3xRM_PDF.html
所以說你那個(gè)公司 pclk/((bs1+bs2+1)*brp[9:0])
這個(gè)brp[9:0]到底指的是實(shí)際值,還是寄存器的值,看起來寫法是指寄存器,如果是寄存器,那就是11,如果是實(shí)際值,那就是12。拜托你們不要公式寫的是寄存器,實(shí)際又按實(shí)際值。這樣搞死人了。
BRP[9:0]指寄存器的值,例程CAN_Mode_Init( u8 tsjw, u8 tbs2, u8 tbs1, u16 brp, u8 mode )傳入的brp是12,BRP[9:0]的實(shí)際寫入的值是11
我去,網(wǎng)址內(nèi)容剛更新了,居然不承認(rèn)我說的是對(duì)的,我說你這個(gè)12怎么出來的呢。