【CAN学习笔记】【01】波特率
以下内容均整理自deepseek
1、波特率
CAN控制器需要在采样点判决一次当前总线是 0 还是 1,波特率就是每秒有效判决出多少个比特。
波特率是整车网络设计阶段定下来的(比如动力CAN通常定500kbps,车身CAN定250kbps)。这个值取决于总线长度、节点数量和电磁兼容性要求,硬件起到使 “波特率稳定跑起来”的作用。
2、位时间
位时间:传输1个比特所占用的总时间
位时间(秒)= 1 ÷ 波特率
位时间又划分为以下几段(deepseek)

Tq 的全称是 Time Quantum(时间份额)。可以理解为:Tq 是 CAN 控制器内部用来计量时间的“最小刻度”或“步长”,只是为了方便硬件计数。
位时间 = (1 + Prop_Seg + Phase_Seg1 + Phase_Seg2) × Tq
一个位时间最多能容纳的Tq数量 = 1 + 16 + 8 = 25
3、BRP(波特率预分频器)
以经典的STM32 bxCAN为例,位时间寄存器位宽限制了Tq总数最大为25(1+16+8),(“25”是举例,不是通用标准),该寄存器相当于一个计时器,CAN的采样点有一个最佳范围(通常为位时间的60%-85%处),通过将位时间划分为多个Tq时间段,使用位时间寄存器计时,在合适的时间对CAN总线进行采样。
例如位时间长度刚好等于25个Tq时,可以在第19个Tq结束瞬间采样,19/25 = 76%,在最佳采样范围内。因此Tq时间不能过短,不然位时间 > 25*Tq,Tq数量会超过寄存器上限(如25),导致无法配置;同时Tq时间也不能过长,因为要在最佳范围采样,1个Tq时间过长,容易错过最佳采样点。而Tq时间,可以通过设置BPR(波特率预分频器)决定。
Tq(秒) = BRP ÷ 主时钟频率(Hz)= BRP × 主时钟周期(秒)
通过设置BPR,得到合适的Tq,从而可以在合适的位置采样。
备注:
在STM32的bxCAN等经典控制器中,位时间各段的寄存器位宽(如TS1为4位、TS2为3位)限制了Tq总数最大为25。但不同MCU的CAN控制器设计不同(如有些支持8~25,有些支持8~32),这个上限并非CAN协议的通用规定
更多推荐
所有评论(0)