协议 计算器

CAN 位时序计算器

计算 CAN 总线时间份额、位段、采样点、实际波特率和时序误差。

CAN 总线位时序参数

计算 tq、TSEG、采样点、实际波特率和波特率误差。

SJW 需要满足控制器限制,通常不应大于相位段 2。
实际波特率
500.00 Kbps
采样点
87.50%
时间份额
125.0 ns
每 bit 总 tq
16
bit 时间
2.000 us
波特率误差
0.000%

该时序位于常见 75-87.5% 采样点范围内。写入固件前,请按 MCU 寄存器命名映射字段。

公式说明

经典 CAN 位时序由 1 个同步段、传播段和两个相位段组成。总 tq = 1 + PropSeg + PhaseSeg1 + PhaseSeg2波特率 = 时钟 / (预分频 * 总 tq)

这个工具适合什么场景

当你需要检查某个控制器时钟、预分频和位段组合能否得到 125 Kbps250 Kbps500 Kbps1 Mbps 等目标 CAN 速率时,可以使用这个 CAN 位时序计算器。

工具优先给出物理时序结果,不假设 STM32、NXP、Microchip 或其他 CAN 控制器使用完全相同的寄存器布局。

采样点规划

采样点是接收端在每个 bit 内读取总线电平的位置。较晚的采样点有助于覆盖较长总线上的传播延迟,但太靠后会压缩重新同步的余量。

示例

CAN 时钟 40 MHz,预分频 5,传播段 7 tq,相位段 1 为 6 tq,相位段 2 为 2 tq,总计 16 tq。实际波特率为 500 Kbps,每个 tq 为 125 ns,采样点为 87.5%

写寄存器前的检查

  • 确认厂商寄存器存储的是实际位段值,还是实际值减一。
  • 确认名为 TSEG1 的字段是否合并了传播段和相位段 1。
  • 让 SJW 保持在控制器允许范围内,通常不要大于相位段 2。
  • 排查软件时序前,先确认晶振误差、总线长度、收发器延迟和终端电阻。

Frequently asked questions

CAN 总线采样点设多少比较合适?

常见目标是位时间的 75% 到 87.5%。很多 CANopen、DeviceNet 和工业 CAN 示例会使用 87.5%,但实际值还要看总线长度、收发器延迟、晶振误差和控制器时序限制。

如何根据时序参数计算 CAN 波特率?

把 1 个同步段、传播段、相位段 1 和相位段 2 相加,得到每 bit 的总时间份额。实际波特率等于控制器时钟除以预分频和总时间份额。

CAN 位时序里的 tq 是什么?

tq 是 time quantum,也就是 CAN 控制器内部使用的基础时间份额。它由 CAN 外设时钟和波特率预分频器共同决定。

SJW 可以大于相位段 2 吗?

通常不应该。多数 CAN 控制器要求同步跳转宽度不超过相位段 2,并且还受寄存器字段范围限制,最终应以芯片参考手册为准。

为什么计算器结果和 MCU 寄存器值不完全一样?

不同厂商对字段命名和寄存器编码方式不同。有的寄存器存储的是实际值减一,有的把传播段和相位段 1 合并成 TSEG1。先用计算器确认时序,再按 MCU 手册映射到寄存器。