STM32CubeMX中的CAN配置参数的解释
STM32CubeMX的CAN配置参数如下图所示:
一、Bit Timings Parameters参数解释
1.1 标准 CAN 协议四段式时序图(SS+PTS+PBS1+PBS2)
各段官方释义
- SS 段(同步段):固定 1Tq总线电平跳变必须落在该区间,所有 CAN 节点完成时钟对齐,硬件固定无需配置。
- PTS 段(传播延时段):1~8Tq补偿 CAN 线束、TJA1050 收发器带来的信号传输延迟,布线越长需要配置更多 Tq。
- PBS1 段(相位缓冲段 1):1~8Tq等待总线电平稳定,采样点就位于 PBS1 末尾,同时可小幅修正节点间时钟偏差。
- PBS2 段(相位缓冲段 2):2~8Tq位末尾时序容错缓冲,用来抵消不同 MCU 晶振的微小频率误差,避免时序错位报错。
1.2 STM32 bxCAN 三段式时序图(CubeMX 实际配置对应关系)
关键合并规则(CubeMX 只看到 BS1、BS2 的原因)
STM32 硬件把标准协议里的PTS + PBS1 两段合并为 BS1,PBS2 直接对应 BS2:
BS1 = PTS(传播段)+ PBS1(相位缓冲段1)→ 采样点在 BS1 末尾;BS2 = PBS2(相位缓冲段2);
结合当前配置:BS1=5Tq、BS2=4Tq、SS=1Tq,总Tq = 1+5+4 = 10Tq,采样点位置 =(1+5)÷10=60%。
1.3 两种时序结构对比图(清晰看懂映射关系)
二、结合 CubeMX 参数的图文对应说明
1. Bit Timings Parameters(位时序核心参数)
- Prescaler (for Time Quantum) = 9预分频器:对 APB1 时钟 9 分频,生成 CAN 最小计时单位
1Tq=250ns,分频值越大,波特率越低。 - Time Quantum = 250.0 nsCAN 时序最小时间刻度,所有位段都由若干个 Tq 组成。
- Time Quanta in Bit Segment 1 = 5 Times(BS1=5Tq)对应 PTS+PBS1,补偿线路传输延迟 + 等待电平稳定,在本段末尾采集总线电平。
- Time Quanta in Bit Segment 2 = 4 Times(BS2=4Tq)对应 PBS2,位尾部时钟误差容错缓冲。
- Time for one Bit = 2500 ns单个数据位总时长 = 总 Tq × 单 Tq 时长 = 10 × 250ns。
- Baud Rate = 400000 bit/s总线波特率:每秒传输 40 万个二进制比特。
- ReSynchronization Jump Width = 1 Time(SJW=1Tq)单次时钟偏差最多修正 1 个 Tq,工程常规默认配置。
2. Basic Parameters(基础功能参数)
- Time Triggered Communication Mode:Disable时间触发通信,仅工业定时调度场景使用,普通项目关闭。
- Automatic Bus-Off Management:Enable总线离线自动管理,总线短路报错时硬件自动保护,故障恢复后自动重连(车载必开)。
- Automatic Wake-Up Mode:Enable休眠模式下,总线上收到报文自动唤醒 MCU,用于汽车低功耗休眠唤醒场景。
- Automatic Retransmission:Disable发送失败不重复重发,避免多节点下总线拥堵。
- Receive Fifo Locked Mode:Disable接收缓冲区满时,新数据覆盖旧数据,始终保留最新总线报文。
- Transmit Fifo Priority:Disable遵循 CAN 原生优先级规则:报文 ID 数值越小,发送优先级越高。
3. Advanced Parameters(高级参数)
- Test Mode:Normal正常工作模式:外接 CAN 收发器,和其他硬件进行真实总线通信; 可选:Loopback 内部回环调试、Silent 总线监听抓包模式。