协议 计算器
CAN 位时序计算器
计算 CAN 总线时间份额、位段、采样点、实际波特率和时序误差。
CAN 总线位时序参数
计算 tq、TSEG、采样点、实际波特率和波特率误差。
- 实际波特率
- 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 Kbps、250 Kbps、
500 Kbps 或 1 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 手册映射到寄存器。