位时序计算
使用的缩写:tNBT - 标称CAN位时间 tsyn - 同步段 PD - 传播延迟 tseg1 - 时间段1 tseg2 - 时间段2 tq - 时间量子 BRP - 波特率预分频器 fsys - 控制器系统时钟 fclk - 时钟频率 NBT - tNBT中的tq数量 tPD - 传播延迟时间
CAN协议支持1Kbps至1000Kbps范围内的位速率。每个节点都有自己的时钟发生器和振荡器。
为每个节点配置位时序参数有助于在总线上实现共同的位速率。
标称CAN位时间(NBT)分为四个段,如下所示。

因此,tNBT = tsyn + tPD + tseg1 + tseg2
标称位速率是每秒的位数。
标称位速率 = 1 / 标称位时间
每个段由特定可编程数量的时间量子组成,时间量子是位时间的基本单位。同步段是CAN总线电平边沿所在的位时间部分。
fsys和tq之间的映射:控制器需要调节其系统时钟周期(1 / fsys)以实现所需的时间量子(tq)。调节系数定义为波特率预分频器(BRP)。因此,
tq = 2 * (BRP/ fsys ) (I)
fsys = fclk / 2 (II),其中fclk为时钟频率
tNBT = 1 / baud rate (III)
NBT = tNBT / tq (IV)
因此根据公式(I)、(II)和(III)
NBT = ( 1 / baud rate ) / (4 x BRP/ fclk)
=> NBT x BRP = fclk / (4 X Baud Rate)
乘积值NBT x BRP将是一个整数值。将计算适当的波特率以使上述乘积获得整数值。这将确保特定CAN控制器的时钟频率保持相同。
此外,
NBT x tq = tNBT = tsyn + tPD + tseg1 + tseg2 (V)
显然,
tsyn = tq (VI)
tseg1 = TSEG1 x tq (VII)
tseg2 = TSEG2 x tq (VIII)
tPD = PD x tq (IX)
因此根据公式(VI)、(VII)和(VIII)。
NBT = TSEG1 + TSEG2 + PD + 1.
采样点 = ((NBT - TSEG2) / NBT) x 100 %.
neoVI硬件包含三个寄存器,即CNF1、CNF2、CNF3,其详细信息如下:

SAM (采样) = 0 or 1 (1 or 3)
SJW = 2 x SJW1 + SJW0 + 1
BRP = 32 x BRP5 + 16 x BRP4 + 8 x BRP3 + 4 x BRP2 + 2 x BRP1 + BRP0 + 1
TSEG1 = 4 x TSEG1.2 + 2 x TSEG1.1 + TSEG1.0 + 1
TSEG2 = 4 x TSEG2.2 + 2 x TSEG2.1 + TSEG2.0 + 1
FLAG = 0 or 1 ( “TSEG2 Ignored” or “TSEG2 Considered”)
权威来源: BUSMASTER DITA help source bit_timing.dita, compiled into BUSMASTER.CHM with the application.