CAN总线波特率计算

2020-05-27 16:49:59 359

     在使用PEAK硬件自带的PCAN VIEW连接时,一般都是使用软件自带的波特率设置。但是其实它还可以自定义波特率。之所以需要自定义波特率,是因为即使波特率的数值一样,如果决定波特率的一些其他参数不同,也会影响通信的质量。现在我们就通过PCAN VIEW的自定义波特率来简单地讲下波特率的计算方法。

 

PCAN VIEW自定义波特率的方法

 

1.在连接的界面选择向右的箭头,选择Manage Bit Rate

菲益科

 

2.只要在这个界面点击左下角的Add就可以添加自定义的波特率了。

菲益科

 

CAN波特率可以用以下四个变量可以算出

A.最小时间段 Tscl

B.时间段1 TSEG1

C.时间段2 TSEG2

D.同步跳转宽度 SJW

其中最小时间段由CAN控制器的时钟频率以及分频决定。

PCAN VIEW提供的变量计算波特率的公式如下:

菲益科

PCAN VIEW预定义的1MBit/s波特率为例,计算方法为24MHz÷3÷5+2+1=1MBit/s

 

CAN协议关于位时间的定义


上个例子,如果把TSEG1TSEG2改成43,波特率的数值是不变的,但是可以看出,采样点的数值变成了62.5%。所以如果想要自定义波特率,我们也需要知道这些变量的含义,在CAN协议对位时间的定义中可以找到它们。

菲益科

 

1个位时间包含4个功能段,分别是同步段,传播段,相位缓冲段1,相位缓冲段2。为了便于编程,有些时候会把传播段和相位缓冲段1合并成一个时间段。位时间的数值相当于1/波特率,就是一位在CAN总线上传递的时间。这一位的值(10)由采样点的电平决定。

菲益科

 

菲益科

 

Prescaler:分频很容易理解,控制器的时钟频率进行分频后会得到CAN的时钟,CAN时钟的一个时间周期就是之前提到的最小时间段tscl,也称作时间份额,代表的是CAN控制器工作时的最小时间单位。

SYNC_SEG:同步段用于同步总线上各个节点,固定长度为1tscl。其中应该有一个跳变沿。

PROP_SEG:传播段用于补偿信号通过网络和节点传播的物理延迟,长度应能保证2倍的信号在总线的延迟,长度为18tscl

PHASE_SEG:相位缓冲段用于补偿跳变沿的相位误差,相位缓冲段1的结尾是采样点位置。相位缓冲段12长度均为18tscl

TSEG1 = PROP_SEG + PHASE_SEG1

TSEG2 = PHASE_SEG2

位时间 = SYNC_SEG + TSEG1 + TSEG2,长度为825个tscl

采样点 = SYNC_SEG + TSEG1÷位时间。

SJW:同步跳转宽度定义了在重新同步时可以缩短或延长的最大时钟周期数。因为重新同步时,相位缓冲段1会延长或是相位缓冲段2缩短。同步跳转宽度取值为14,同时必须不大于PHASE_SEG1的时间份额数。

 

 

BTR0BTR1的含义


CAN控制器中的总线定时寄存器(BTR)用于储存上述数据,同时在PCAN VIEW中也可以直接输入BTR数值给出波特率。BTR0BTR18位,代表含义如下。

菲益科

 

BTR0

菲益科

tscl = 2 * tCLK * (32 * BRP.5 + 16 * BRP.4 + 8 * BRP.3 + 4 * BRP.2 + 2 * BRP.1 + BRP.0 + 1)

tSJW = tscl * (2 * SJW.1 + SJW.0 + 1)

 

BTR1

菲益科

tSYNCSEG = 1 * tscl

tTSEG1 = tscl * (8 * TSEG1.3 + 4 * TSEG1.2 + 2 * TSEG1.1 + TSEG1.0 + 1)

tTSEG2 = tscl ´ (4 * TSEG2.2 + 2 * TSEG2.1 + TSEG2.0 + 1)

SAM=1表示采样三次,SAM=0表示采样一次。

电话咨询
最新产品
技术支持
QQ客服