zl程序教程

您现在的位置是:首页 >  其他

当前栏目

CAN资料整理(三):CAN的位时间、同步、位定时

同步 时间 整理 定时 资料 can
2023-09-11 14:21:43 时间

        

目录

一、位时间

二、同步

1、硬同步

2、重新同步 

三、位定时

1、传播段延迟时间的确定

 2、位定时参数确定


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

一、位时间

一个电平位时间主要有以下4个段:

  • SS段(SYNC SEG;同步段):若通讯节点检测到总线上信号的跳变沿被包含在SS段的范围内,则表示节点与总线的时序是同步的;(固定1个Tq)
  • PTS段(PROP SEG;传播段):这个时间段是用于补偿网络的物理延时时间,是总线上输入比较器延时和输出驱动器延时综合的两倍;(长度可编程:1~8个Tq)
  • PBS1段(PHASE SEG1;相位缓冲段1):用于补偿节点间的晶振误差,允许通过重同步对该段加长,在这个时间段末端进行总线状态的采样;(长度可编程:1~8Tq)

 

  •  PBS2段(PHASE SEG2;相位缓冲段2):用于补偿节点间的晶振误差,允许通过重同步方式对该段缩短;(长度可编程:1~8Tq)

通讯波特率的计算:

  • 波特率= 1 / 位时间

 

二、同步

        波特率只是约定了每个数据位的长度,数据同步还涉及相位的细节,这个时候就需要用到数据位内的SS、PTS、PBS1、PBS2等段了。

同步规则:

  • 一个位时间内只允许一种同步方式
  • 任何一个“隐性”到“显性”的跳变都可以用于同步
  • 硬同步发生在SOF,让所有接收节点调整各自当前位的同步段,使其位于发送的SOF位内。且只是当存在“帧起始信号”时起作用,无法确保后续一连串的位时序都是同步的。
  • 重新同步发生在一个帧的其他位场内,当跳变沿跳变沿落在了同步段之外。
  • 在SOF到仲裁场有多个节点同时发送的情况下,发送节点对跳变沿不进行重新同步

1、硬同步

        发生在SOF位让所有接收节点调整各自当前位的同步段,调整宽度不限。且只是当存在帧起始信号采起作用,如果在一帧很长的数据内,节点信号与总线信号相位有偏移时,这种同步方式就无能为力了。

        当某节点检测到总线的帧起始信号不在节点内部时序的SS段范围,会判断它自己的内部时序与总线不同步,因而这个状态的采样点采集到的数据是不正确的,所以节点通过硬同步的方式重新调整,把自己的位时序中的SS段平移至总线出现下降沿的部分,从而获得同步,同步后采样点既可以采集到正确的数据了。

2、重新同步 

        当跳变沿与同步段的误差小于SJW(reSynchronization Jump Width;重新同步补偿宽度),重新同步会通过延长PTS1段或者缩短PTS2段,来保证采样点位置的正确;如限定SJW=4 Tq时,单词同步调整的时候不能增加或者减少超过4Tq的时间长度,若有需要,控制器会通过多次小幅度调整来实现同步。

 

 

三、位定时

1、传播段延迟时间的确定

 2、位定时参数确定