CAN波特率设置

通过对CAN位定时寄存器CANBIT以及CAN波特率预分频扩展寄存器CANBRPE的设置可以得到需要的CAN通信波特率。

CAN的位定时配置不当,将使得CAN模块无法按照目标波特率接入CAN网络,将导致CAN节点无法通信正常。

根据CAN规范,位时间被分成4个时间段:同步段(Sync_Seg)、传播时间段(Prop_Seg)、相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2)

每个段由具体、可编程数量的时间份额(time quanta)组成,时间份额是位时间的基本时间单元,它的长度(tq)由CAN控制器的系统时钟(fcan)和波特率预分频器BRP定义:tq=BRP/fcan

CAN模块的系统时钟fcan是其CAN模块时钟(CAN_CLK)输入的频率。

各参数取值范围:

参数                         范围                   编程值                     说明

BRP                        1~64                   0~63                    波特率分频器,定义时间单元tq的时间长度

Sync_Seg               1tq                                                  固定长度,总线输入与系统时钟同步

Prop_Seg               1~8tq                  0~7                      补偿物理延时时间

Phase_Seg1          1~8tq                  0~7                      相位缓冲段1,补偿边沿阶段的误差,可通过同步暂时延长

Phase_Seg2          1~8tq                   0~7                      相位缓冲段2,补偿边沿阶段的误差,可通过同步暂时缩短

SJW                       1~4t                  0~3                       同步跳转宽度,不能比相位缓冲段长

位时间长度为:[TSEG1+TSEG2+3]tq或[Sync_Seg+Prop_Seg+Phase_Seg1+Phase_Seg2]tq

位定时配置的编程是由两个CANBTR决定的:Prop_Seg与Phase_Seg1 的和(作为TSEG1)与Phase_Seg2(作为TSEG2)组合成一个字节,而SJW与BRP组合成另一个字节。

SAMP  TSEG22  TSEG21  TSEG20  TSEG13  TSEG12  TSEG11  TSEG10

SJW1   SJW0      BRP5       BRP4      BRP3       BRP2       BRP1      BRP0

将结果配置写入寄存器:((TSeg2-1)<<12)|((TSeg1-1)<<8)|((SJW-1)<<6)|(BRP-1)

参数的计算步骤

1、首先计算CAN时钟和波特率的比值

2、根据比值确定BRP和时间量子的数目,一个位时间总的时间份额值可以设置在8~25的范围内

3、Sync_Seg的值固定为1tq,量子数目减1后再分配

4、Prop_Seg其长度视系统测量的延迟时间而定,必须为可扩展的CAN总线系统定义最大的总线长度和最大的节点延迟。

5、Prog_Seg<=Phase_Seg1<=Phase_Seg2;Phase_Seg1=Phase_Seg2 或者 Phase_Seg1+1=Phase_Seg2

6、Phase_Seg2不能比CAN控制器的信息处理时间短

7、同步跳转宽度SJW取4和 Phase_Seg1中小的那个

总的来说,波特率BitRate=Fpclk/((BRP+1)*((TSEG1+1)+(TSEG2+1)+1)

举例说明:

参考来源:http://www.docin.com/p-498322094.html

                 https://blog.csdn.net/sudogod/article/details/15503867

猜你喜欢

转载自www.cnblogs.com/shinedaisiki/p/9950363.html