作用
配置CAN通信波特率。防止多节点仲裁时,采样点位置不当,使得另一个发送器变成错误认可(error passive)状态。需了解CAN节点内的CAN位同步以及CAN节点对CAN总线的相互作用。
CAN的位定时配置不当,使得CAN模块无法按照目标波特率接入CAN网络,导致节点无法通信。
CAN波特率配置
配置CAN的 位定时寄存器CANBIT和预分频扩展寄存器CANBRPE的设置,可以设置想要的CAN通信波特率(位速率)。
时间份额
上述4个段 同步段、传播时间段、相位缓冲段1、2 由可编程的时间份额(time quanta)组成。时间份额是位时间的基本时间单元,时间份额的长度(tq)由CAN控制器的系统时钟(fcan)和波特率预分频器(BRP)定义:
t
q
=
B
R
P
f
c
a
n
t_q=\frac {BRP}{f_{can}}
tq=fcanBRP
其中
C
A
N
模
块
的
系
统
时
钟
f
c
a
n
是
C
A
N
−
C
L
K
输
入
的
时
钟
CAN模块的系统时钟f_{can} 是CAN-CLK输入的时钟
CAN模块的系统时钟fcan是CAN−CLK输入的时钟
位时间
一位持续时间。
ECU同步化动作、网络传输延时补偿、采样点定位等总线管理功能,均以位时间位框架执行,并由CAN协议的可编程位定时逻辑实现。
- 组成[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fa0TaFjy-1648520701782)(:/872318cd81eb4264960be15405cea53a)]
-
同步段SYNC_SEG:
这一段时间用来使总线上的各ECU同步。在该段内会出现一个跳变沿。若跳变沿在同步段外,在同步段外的跳变沿与同步段 时间之差叫做沿相位误差。
位时长1个位。 -
传播段PROP_SEG:
用来对出现在网络内部的物理延迟时间进行补偿;
该延迟时间由信号在总线上的传播时间和ECU内部的延迟时间组成。延时时长是总线延时+收发器延时+ECU延时的两倍。 -
相缓冲段1( PHASE_SEG1)和相缓冲段2( PHASE_SEG1):
用来补偿跳变沿的相位误差;根据相位误差 补偿同步处理延长或缩短。
采样点是读取总线电平并将其转换成位值的时刻,位于PHASE_SEG1的结尾.
信息处理时间:从采样点开始留出的一段用于计算后续位电平的时间。
(重)同步跳转宽度 SJW:决定重同步会将采样点移多远,抵用距离的上限由用于补偿沿相位的误差的相位缓冲段给定。
位定时配置编程(寄存器)
位定时配置的编程是由CANBIT寄存器中的2个字节完成。同步跳转宽度SJW和波特率预分频器BRP组成一个字节,传播段和相位缓冲段1、2 组成另一个字节。
位定时长度(1/baud):
[Sync_Seg + Prop_Seg + Phase_Seg1 + Phase_Seg2] * tq
位定时参数的计算
位时序的计算从目标位速率或为时间开始。作为结果的为时间(波特率的倒数)必须是系统时钟周期的整数倍。
位时间计算:
位时间(CAN波特率的倒数)是由4个时间段的时间份额总和。
-
第一个同步段Sync_Seg占一个时间份额tq。
-
第二个传播段Prop_Seg的时长 视总线到ECU的延时决定。时间份额tq是总线延时+收发器延时+ECU延时的总和 延时的两倍。
t q = ( T 总 线 传 输 时 延 + T 收 发 器 时 延 + T 控 制 器 时 延 ) ∗ 2 t_q=(T_{总线传输时延}+T_{收发器时延} +T_{控制器时延})* 2 tq=(T总线传输时延+T收发器时延+T控制器时延)∗2 -
第三、四的相位缓冲段(Phase_seg1和Phase_seg2)
这两个相位的缓冲段的时间份额:
T 两 个 相 位 缓 冲 段 = C A N b a u d − ( P r o p S e g + 1 ) ∗ t q T_{两个相位缓冲段}=CAN_{baud}-(Prop_{Seg}+1)*t_q T两个相位缓冲段=CANbaud−(PropSeg+1)∗tq
- 总的相位缓冲段是偶数,则
P h a s e S e g 1 = P h a s e S e g 2 Phase_{Seg1}=Phase_{Seg2} PhaseSeg1=PhaseSeg2 - 总的相位缓冲段是奇数,则
P h a s e S e g 2 = P h a s e S e g 1 + 1 Phase_{Seg2} = Phase_{Seg1} +1 PhaseSeg2=PhaseSeg1+1
Phase_Seg2的时间份额不能小于CAN控制器的信息处理时间(不超过2个tq)。
同步跳转宽度SJW 的长度被设置最大值,是4和Phase_Seg1之中最小值。
配置结果写入CAN位定时(CANBIT)寄存器:
((T_Seg2 -1)<<12)|((T_seg1 -1)<<8)|((同步跳转宽度SJW)-1)<<6|(预分频-1)
总结
位定时寄存器的数据时CAN控制器配置输入。波特率预分频(BRP)决定时间份额tq的长度。位定时逻辑(由TSEG1、TSEG2和SJW配置)决定位定时时间内的时间份额的数目。