CAN 7 位定时

作用

配置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输入的时钟 CANfcanCANCLK

位时间

一位持续时间。
ECU同步化动作、网络传输延时补偿、采样点定位等总线管理功能,均以位时间位框架执行,并由CAN协议的可编程位定时逻辑实现。

  • 组成[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fa0TaFjy-1648520701782)(:/872318cd81eb4264960be15405cea53a)]
  1. 同步段SYNC_SEG:
    这一段时间用来使总线上的各ECU同步。在该段内会出现一个跳变沿。若跳变沿在同步段外,在同步段外的跳变沿与同步段 时间之差叫做沿相位误差
    位时长1个位。

  2. 传播段PROP_SEG:
    用来对出现在网络内部的物理延迟时间进行补偿
    该延迟时间由信号在总线上的传播时间和ECU内部的延迟时间组成。延时时长是总线延时+收发器延时+ECU延时的两倍。

  3. 相缓冲段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个时间段的时间份额总和。

  1. 第一个同步段Sync_Seg占一个时间份额tq。

  2. 第二个传播段Prop_Seg的时长 视总线到ECU的延时决定。时间份额tq是总线延时+收发器延时+ECU延时的总和 延时的两倍。
    t q = ( T 总 线 传 输 时 延 + T 收 发 器 时 延 + T 控 制 器 时 延 ) ∗ 2 t_q=(T_{总线传输时延}+T_{收发器时延} +T_{控制器时延})* 2 tq=T线+T+T2

  3. 第三、四的相位缓冲段(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+1tq

  • 总的相位缓冲段是偶数,则
    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配置)决定位定时时间内的时间份额的数目。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值