Skip to content

CAN/FD 波特率配置工具

CAN/FD 波特率配置工具

目标设置

基础设置
波特率
采样点配置
容差范围

功能说明

本工具支持 CAN 2.0CAN 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

推荐采样点

标准协议推荐采样点
CANopen87.5%
DeviceNet87.5%
ARINC 82575% - 87.5%

提示

  • 短距离、低干扰环境:推荐 70-75%
  • 一般场景:推荐 80%
  • 长距离、高干扰环境:推荐 85-90%
  • 工具提供 70%、75%、80%、85% 快捷按钮,也可手动输入其他值

参数范围

工具使用通用 CAN/CAN FD 控制器参数范围:

CAN 2.0 模式

参数范围
BRP1 - 1024
TSEG11 - 256
TSEG21 - 128
SJWmax 128

CAN FD 模式

参数范围
BRP1 - 512
TSEG12 - 256
TSEG21 - 128
SJWmax 128

CAN FD 双相位配置

CAN FD 在同一帧内使用两种不同的波特率:

  • 仲裁相位 (Arbitration Phase):使用标准波特率,所有节点参与仲裁
  • 数据相位 (Data Phase):仲裁结束后切换到高波特率传输数据

BRP 一致选项

在 CAN FD 模式下,勾选"BRP一致"可以:

  1. 筛选结果:只显示仲裁段和数据段 BRP 相同的配置
  2. 联动选择:选择仲裁段某行时,数据段自动选中 BRP 相同的行(反之亦然)

为什么需要 BRP 一致?

部分 CAN FD 控制器要求仲裁段和数据段使用相同的 BRP 值,这样可以简化配置并确保时序兼容性。

典型波特率组合

仲裁相位数据相位切换比
500 kbps2 Mbps4x
500 kbps4 Mbps8x
1 Mbps2 Mbps2x
1 Mbps5 Mbps5x

导出格式

选择配置后,可导出为三种格式:

SocketCAN 格式

Linux SocketCAN 配置命令,提供两种形式:

通用波特率形式(推荐):

bash
sudo ip link set can0 up type can \
    bitrate 500000 sample-point 0.875

CAN 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 4

CAN 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=3

CAN 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

常见问题

为什么找不到有效配置?

可能原因及解决方法:

  1. 时钟频率不合适:尝试其他常见时钟 (8/16/24/40/80 MHz)
  2. 采样点误差过严:适当放宽采样点允许误差
  3. 目标波特率与采样点不匹配:尝试不同的采样点值

实际波特率与计算值不同?

排查方向:

  • 晶振频率与标称值偏差
  • 时钟源精度 (建议使用 ±50ppm 以内的晶振)
  • 控制器实际参数范围与工具设置不符

如何选择预分频值?

预分频值影响时间量子 (Tq):

  • 较小的 BRP → 较小的 Tq → 更精细的时间调节
  • 较大的 BRP → 较大的 Tq → 更大的时间范围

通常选择能产生 8-25 Tq 总位时间的 BRP 值。

CAN FD 数据相位波特率上限?

受以下因素限制:

  • 收发器性能:通常最高 5-8 Mbps
  • 总线长度:越长越需要降低波特率
  • 信号质量:恶劣环境需留余量

驱动智能连接,赋能科技未来