CAN/FD 波特率配置工具
CAN/FD 波特率配置工具
目标设置
基础设置
波特率
采样点配置
容差范围
功能说明
本工具支持 CAN 2.0 和 CAN FD 两种模式的位时间参数计算,帮助工程师快速找到符合目标波特率和采样点的最佳配置。
核心特性
- 智能搜索:自动遍历所有有效组合,只显示波特率无误差的精确配置
- BRP 一致:CAN FD 模式下可筛选仲裁段和数据段 BRP 相同的配置,并支持联动选择
- 快捷按钮:常用波特率和采样点一键设置
- 多格式导出:支持 SocketCAN、JSON、Param 三种导出格式
输入参数
| 参数 | 说明 |
|---|---|
| 模式 | 选择 CAN 2.0 或 CAN FD 模式 |
| 时钟频率 (MHz) | 控制器时钟频率 (1-200 MHz) |
| 仲裁段位速率 | 仲裁相位目标波特率,提供 50k/125k/250k/500k/1M 快捷按钮 |
| 数据段位速率 | 数据相位目标波特率 (仅 CAN FD),提供 1M/2M/4M/5M/8M 快捷按钮 |
| 采样点 (%) | 目标采样点位置,提供 70%/75%/80%/85% 快捷按钮 |
| 采样点允许误差 (%) | 采样点误差阈值 |
| BRP一致 | CAN FD 模式专属,勾选后只显示仲裁段和数据段 BRP 相同的配置 |
输出参数
| 参数 | 说明 |
|---|---|
| BRP | 预分频值 (Baud Rate Prescaler) |
| TSEG1 | 时间段 1 (Propagation Segment + Phase Segment 1) |
| TSEG2 | 时间段 2 (Phase Segment 2) |
| SJW | 同步跳转宽度 (Synchronization Jump Width) |
| 波特率 | 实际波特率(精确等于目标波特率) |
| 采样点 % | 实际采样点位置 |
| Tq (ns) | 时间量子 (Time Quantum) 的纳秒值 |
位时间基础
位时间结构
CAN 总线的位时间 (Bit Time) 由以下部分组成:
text
位时间 = 1 Tq (Sync_Seg) + TSEG1 + TSEG2- 同步段 (Sync_Seg):固定为 1 Tq,用于同步总线上的节点
- TSEG1:包含传播段和相位缓冲段 1,用于补偿网络延时和正边沿相位误差
- TSEG2:相位缓冲段 2,用于补偿负边沿相位误差
采样点计算
采样点位置决定了在位时间的哪个时刻采样总线电平:
text
采样点 (%) = (1 + TSEG1) / (1 + TSEG1 + TSEG2) × 100推荐采样点
| 标准协议 | 推荐采样点 |
|---|---|
| CANopen | 87.5% |
| DeviceNet | 87.5% |
| ARINC 825 | 75% - 87.5% |
提示:
- 短距离、低干扰环境:推荐 70-75%
- 一般场景:推荐 80%
- 长距离、高干扰环境:推荐 85-90%
- 工具提供 70%、75%、80%、85% 快捷按钮,也可手动输入其他值
参数范围
工具使用通用 CAN/CAN FD 控制器参数范围:
CAN 2.0 模式
| 参数 | 范围 |
|---|---|
| BRP | 1 - 1024 |
| TSEG1 | 1 - 256 |
| TSEG2 | 1 - 128 |
| SJW | max 128 |
CAN FD 模式
| 参数 | 范围 |
|---|---|
| BRP | 1 - 512 |
| TSEG1 | 2 - 256 |
| TSEG2 | 1 - 128 |
| SJW | max 128 |
CAN FD 双相位配置
CAN FD 在同一帧内使用两种不同的波特率:
- 仲裁相位 (Arbitration Phase):使用标准波特率,所有节点参与仲裁
- 数据相位 (Data Phase):仲裁结束后切换到高波特率传输数据
BRP 一致选项
在 CAN FD 模式下,勾选"BRP一致"可以:
- 筛选结果:只显示仲裁段和数据段 BRP 相同的配置
- 联动选择:选择仲裁段某行时,数据段自动选中 BRP 相同的行(反之亦然)
为什么需要 BRP 一致?
部分 CAN FD 控制器要求仲裁段和数据段使用相同的 BRP 值,这样可以简化配置并确保时序兼容性。
典型波特率组合
| 仲裁相位 | 数据相位 | 切换比 |
|---|---|---|
| 500 kbps | 2 Mbps | 4x |
| 500 kbps | 4 Mbps | 8x |
| 1 Mbps | 2 Mbps | 2x |
| 1 Mbps | 5 Mbps | 5x |
导出格式
选择配置后,可导出为三种格式:
SocketCAN 格式
Linux SocketCAN 配置命令,提供两种形式:
通用波特率形式(推荐):
bash
sudo ip link set can0 up type can \
bitrate 500000 sample-point 0.875CAN FD 模式:
bash
sudo ip link set can0 up type can \
bitrate 500000 sample-point 0.875 \
dbitrate 2000000 dsample-point 0.750 \
fd on详细位时序形式:
bash
sudo ip link set can0 up type can \
tq 200 prop-seg 11 phase-seg1 4 phase-seg2 4 sjw 4CAN FD 模式:
bash
sudo ip link set can0 up type can \
tq 200 prop-seg 11 phase-seg1 4 phase-seg2 4 sjw 4 \
dtq 50 dprop-seg 15 dphase-seg1 4 dphase-seg2 2 dsjw 2 \
fd on参数映射关系:
- TSEG1 = prop-seg + phase-seg1
- TSEG2 = phase-seg2
- SJW ≤ min(phase-seg1, phase-seg2)
JSON 格式
结构化配置数据,便于程序解析:
json
{
"mode": "canfd",
"clock_mhz": 80,
"arbitration": {
"brp": 16,
"tseg1": 12,
"tseg2": 3,
"sjw": 3,
"baud": 500000,
"sample_point": 81.25
},
"data_phase": {
"brp": 16,
"tseg1": 7,
"tseg2": 2,
"sjw": 2,
"baud": 2000000,
"sample_point": 80.0
}
}Param 格式
适用于嵌入式驱动配置,包含完整时钟和时序参数:
text
f_clock=80000000,nom_brp=16,nom_tseg1=12,nom_tseg2=3,nom_sjw=3CAN FD 模式:
text
f_clock=80000000,nom_brp=16,nom_tseg1=12,nom_tseg2=3,nom_sjw=3,data_brp=16,data_tseg1=7,data_tseg2=2,data_sjw=2常见问题
为什么找不到有效配置?
可能原因及解决方法:
- 时钟频率不合适:尝试其他常见时钟 (8/16/24/40/80 MHz)
- 采样点误差过严:适当放宽采样点允许误差
- 目标波特率与采样点不匹配:尝试不同的采样点值
实际波特率与计算值不同?
排查方向:
- 晶振频率与标称值偏差
- 时钟源精度 (建议使用 ±50ppm 以内的晶振)
- 控制器实际参数范围与工具设置不符
如何选择预分频值?
预分频值影响时间量子 (Tq):
- 较小的 BRP → 较小的 Tq → 更精细的时间调节
- 较大的 BRP → 较大的 Tq → 更大的时间范围
通常选择能产生 8-25 Tq 总位时间的 BRP 值。
CAN FD 数据相位波特率上限?
受以下因素限制:
- 收发器性能:通常最高 5-8 Mbps
- 总线长度:越长越需要降低波特率
- 信号质量:恶劣环境需留余量