本帖最后由 hoop 于 2022-3-19 14:16 编辑
最近偶得一个CAN波特率计算工具,分享给有需要的朋友
注意:工具好像在某些Win7系统上运行不起来,我也没找到原因。且工具非本人开发,因此不具备维护及后续支持能力哦。不过可以一起分享探讨使用心得。
如下在403A上的使用示例
1)选择CAN Bit Rate
2)设定波特率及可容忍的偏差
本例设置1000K且不允许偏差
3)设定时钟源及采样点
Frequencies:403A的HCLK=240M,PCLK=120M,图中的Frequencies为CAN时钟,其由120M的PCLK分频获得,因此可选择60/40/30/24/20这些选项;
Nominal sample piont:通常1000K波特率时采样点设定在75%;
Nominal bit duration:由实际项目需求来做限定,本例不做实际筛选,设定在8~25之间。
4)获取计算结果
如下图工具将会计算出各种符合要求的配置
5)选用计算出来的配置值
结合1≤BRP≤0x400,1≤TSEG1≤16,1≤TSEG2≤8,1≤SJW≤4,可以筛选出最终符合要求的选项
本例实际最终选用图示中的BRP=5(因为PCLK到Frequencies有一个2分频,因此实际最终BRP为5*2),TSEG1=8,TSEG2=3,SJW=3
故应用到代码中为
/* can baudrate, set baudrate = pclk/(baudrate_div *(3 + bts1_size + bts2_size)) */
can_baudrate_struct.baudrate_div = 10;
can_baudrate_struct.rsaw_size = CAN_RSAW_3TQ;
can_baudrate_struct.bts1_size = CAN_BTS1_8TQ;
can_baudrate_struct.bts2_size = CAN_BTS2_3TQ;
can_baudrate_set(CAN1, &can_baudrate_struct);
|