开发板 CH32V307 CAN通讯波特率 例程 是 250K。
请问 如何 配置 成 500K, 和 1000K。
谢谢!
开发板 CH32V307 CAN通讯波特率 例程 是 250K。
请问 如何 配置 成 500K, 和 1000K。
谢谢!
您好,关于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(内部减了1,再加一就是参数值)
Tq = (brp[90]+1) * tpclk = 12/36=1/3m
T1bit = 1+6+7=14
bps = 1/(1/3m * 14) = 3/14=0.214m
这样比250差的比较远,算的对吗?
您好,有关CAN波特率计算的介绍可参考:https://www.cnblogs.com/wchmcu/p/17546797.html
这个例程,brp为啥是12?明明api会-1,是11啊。
可以看一下官方寄存器手册对CAN BTIMR BRP[9:0]寄存器的描述。
所以说你那个公司 pclk/((bs1+bs2+1)*brp[9:0])
这个brp[9:0]到底指的是实际值,还是寄存器的值,看起来写法是指寄存器,如果是寄存器,那就是11,如果是实际值,那就是12。拜托你们不要公式写的是寄存器,实际又按实际值。这样搞死人了。
BRP[9:0]指寄存器的值,例程CAN_Mode_Init( u8 tsjw, u8 tbs2, u8 tbs1, u16 brp, u8 mode )传入的brp是12,BRP[9:0]的实际写入的值是11
我去,网址内容刚更新了,居然不承认我说的是对的,我说你这个12怎么出来的呢。