CAN控制器的位同步过程


上一篇: CAN物理层介绍

位同步

CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口通讯那样,使用约定好的波特率进行通讯,除此之外,CAN控制器还会使用“位同步”的方式来抗干扰、吸收误差,以实现对总线电平正确的采样,确保通讯正常

为了实现位同步,CAN协议把每一个数据位的时序分解成SS段、PTS段、PBS1段、PBS2段,这四段的长度加起来即为一个CAN数据位的长度,分解后最小的时间单位是Tq(Time Quantum),而一个完整的位由8~25个Tq组成

在这里插入图片描述

该图中表示CAN通讯的每一个数据位的长度为19Tq,其中SS段占1Tq,PTS段占6Tq,PBS1段占5Tq,PBS2段占7Tq,信号的采样点位于PBS1段与PBS2段之间,通过控制各段的长度,可以对采样点的位置进行偏移,以便准确地采样

  • SS段(SynchronizationSegment)

    同步段,若通讯节点检测到总线上信号的跳变沿被包含在SS段的范围之内,则表示节点与总线的时序是同步的,当节点与总线同步时,采样点采集到的总线电平即可被确定为该位的电平,SS段的大小固定为1Tq

  • PTS段(Propagate Time Segment)

    传播时间段,用于吸收网络上的物理延迟的段,是总线上输入比较器延时、输出驱动器延时、总线信号传播延迟总和的两倍,PTS段的大小可以为1~8Tq

  • PBS1段(Phase Buffer Segment1)

    相位缓冲段1,主要用来补偿边沿阶段误差,它的时间长度在重新同步时可以加长,初始大小为1~8Tq

  • PBS2段(Phase Buffer Segment2)

    相位缓冲段2,主要用来补偿边沿阶段误差,它的时间长度在重新同步时可以缩短,初始大小为2~8Tq

波特率

总线上的各个通讯节点只要约定好1个Tq的时间长度以及每一个数据位占据多少个Tq,就可以确定CAN通讯的波特率

例如,假设上图中的1Tq=1us,而每个数据位由19个Tq组成,则传输一位数据需要时间T1bit=19us,从而每秒可以传输的数据位个数为:
1 ∗ 1 0 6 / 19 = 52631 ( b p s ) 1*10^6/19 = 52631(bps) 1106/19=52631(bps)
这个每秒可传输的数据位的个数即为通讯中的波特率

同步过程

CAN的数据同步分为硬同步重新同步,硬同步只是当存在“帧起始信号”时起作用,无法确保后续的位时序都是同步的,而重新同步方式可解决后续同步问题

硬同步

CAN节点通过总线发送数据时,首先它会发送一个表示通讯起始的信号(帧起始信号),该信号是一个高变低的下降沿,CAN总线上的通讯节点在不发送数据时,会时刻检测总线上的信号

当总线出现帧起始信号时,通讯节点检测到总线的帧起始信号不在节点内部时序的SS段范围,则认为内部时序与总线不同步,采样点采集的数据是不正确的,所以节点以硬同步的方式调整,把自己的位时序中的SS段平移至总线出现下降沿的部分,获得同步,同步后采样点就可以采集到正确的数据了

在这里插入图片描述

重新同步

硬同步只是当存在帧起始信号时才起作用,如果在一帧很长的数据内,节点信号与总线信号相位有偏移时,这种同步方式就无能为力了

重新同步方式,利用普通数据位的高至低电平的跳变沿来同步(帧起始信号是特殊的跳变沿),重新同步与硬同步方式相似的是它们都使用SS段来进行检测,同步的目的都是使节点内的SS段把跳变沿包含起来

重新同步的方式分为超前和滞后两种情况,以总线跳变沿与SS段的相对位置进行区分

第一种相位超前的情况,节点从总线的边沿跳变中,检测到它内部的时序比总线的时序相对超前2Tq,这时控制器在下一个位时序中的PBS1段增加2Tq的时间长度,使得节点与总线时序重新同步。

在这里插入图片描述

第二种相位滞后的情况,节点从总线的边沿跳变中,检测到它的时序比总线的时序相对滞后2Tq,这时控制器在前一个位时序中的段减少2Tq的时间长度,获得同步。

在这里插入图片描述

在重新同步的时候,PBS1和PBS2中增加或减少的这段时间长度被定义为“重新同步补偿宽度SJW(ReSynchronization Jump Width)”

一般来说CAN控制器会限定SJW的最大值,如限定了最大SJW=3Tq时,单次同步调整的时候不能增加或减少超过3Tq的时间长度,若有需要,控制器会通过多次小幅度调整来实现同步,当控制器设置的SJW极限值较大时,可以吸收的误差加大,但通讯的速度会下降

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七七云享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值