CAN报文:位定时和位同步
文章目录
- 1、什么是位同步
- 2、帧同步
- 3、位组成
- 4、采样点
- 5、同步规则
- 6、硬同步
- 7、重同步
- 8、测试实例
1、什么是位同步
位同步(比特同步)是指为了将发送端发送的每一个比特都能够被接收端准确地接收,接收端时钟调整到和发送端时钟彻底相同。这就需要在准确的时刻(即在一个bit位的中间位置)对收到的电平根据事先约定好的规则进行判断,满足什么条件为1,满足什么条件为0。由于CAN通信采用异步串行的方式,没有时钟线,所以需要进行位同步。
2、帧同步
对于发送端发过来的比特流,我们仅仅通过位同步把每个位正确读出来是还不够,如下图所示,从位置1开始读数据的结果为0001111111,但是如果从位置2开始读数据的结果为0111111。不难看出,两者位信息读取的都是正确的,但作为一帧报文来看两者的信息差异很大。现实通信网络中数据都是以帧为单位进行传输的,帧与帧之间有明确的分界线。想要接收端正确的解析数据信息,就需要找到这个帧与帧的分界线,即帧界定符。也就是明确帧起始是在位置1还是在位置2,来完成帧同步。
综上,报文在收发两端要完成位同步和帧同步才能保证信息的正确传输。在明确的规则体系下,才能对位错误、格式错误以及帧的错误重传等问题进行判断与处理。
3、位组成
一个位时间tbit的组成包含下图4个部分,同步段、传播段、相位缓冲段1、相位缓冲段2,有8-25个时间份额。其中,
- 同步段(tSS):1个时间份额,位传输从同步段开始。
- 传播段(tPS):时长可编辑1-8时间份额,补偿报文在总线和节点上传输时所产生的时间延迟。
- 相位缓冲段1(tPBS1):时长可编辑1-8时间份额,补偿节点间的晶振误差。
- 相位缓冲段2(tPBS2):时长可编辑1-8时间份额,补偿节点间的晶振误差。
时间份额,也就是CAN时钟周期,简单理解就是节点振荡器晶振频率等特性决定的,不做展开。
4、采样点
采样点:用来在采样时刻读取的电平决定该位是“显性”还是“隐性”。由于总线物理层等特性的影响会存在干扰,为了使时钟误差和总线延迟达到相对平衡,合适的采样点对于报文的正确传输至关重要。
5、同步规则
CAN同步包括硬同步和重同步两种同步方式。
同步规则:
- 一个位时间内只允许一种同步方式。
- 任何一个"隐性"到"显性"的跳变都可用于同步(下降沿)。
- 硬同步发生在帧起始(SOF),接收节点调整当前位的同步段,使其位于发送的SOF内。
- 重同步发生在一个帧的其他位场,当跳变沿在同步段之外。
- 在SOF到仲裁场有多个节点同时发送的情况下,发送节点对跳变沿不进行重同步。
6、硬同步
硬同步发生在SOF位,所有接收节点调整各自当前位的同步段,调整宽度不限。如下图,当发送节点发出SOF位,SOF位下降沿在SS段;接收节点发现自身SS段和发送节点的SOF位的SS段不同步;此时接收节点强行将自身SS段和发送节点的SOF位的SS段同步。
怎么理解呢?硬同步,硬就是强硬,接收节点不论是提前接收还是滞后接收,都强硬的将他的帧起始SOF位的SS段拉到与发送节点的SS段一致,来保证报文的帧同步。就像两个相同人数的队伍一样,A队伍(Tx)站定之后,B队伍(Rx)不管怎么都向A队伍看齐一一对应,而不减少人员。
7、重同步
利用隐性位到显性位的边沿进行重同步,重同步发生在一个报文SOF位之外的其他场位内,重同步会导致相位缓冲段1的延长或相位缓冲段2的缩短,从而保证采样点的准确。
重同步有两种情况,一种是发送节点发的晚,接收节点收的早,会导致PBS1延长,如下图所示。
另一种情况是发送节点发的早,接收节点收的晚,会导致PBS2缩短,如下图所示。
怎么理解呢?重同步,重就是重新,接收节点不论是提前接收还是滞后接收,都重新调整自己的相位缓冲段来与发送节点在下一bit位保持位同步。
这里有一个概念,同步跳转宽度SJW:表示的是PBS1和PBS2重同步时允许跳转的最大宽度。
必须满足以下条件:
- SJW必须小于PBS1和PBS2的最小值
- SJW最大值不能超过4
下面给出了DBC的配置示例。
8、测试实例
讲了上面这些重同步、硬同步的理论知识,对于我们在测试中有什么帮助呢?是不是感觉实际测试中也用不到这些东西呢?其实在我们的测试过程中是会用到的,暂且不提CAN物理层相关参数的测试会涉及,我们在应用层测试控制器相关功能时也会用到。下面展示一个测试实例。
背景:通过板卡仿真传感器信号,一共有6路。测试时其中两路仿真信号后,控制器能够正确识别并处理,另外4路确没有反应。
分析:是否是板卡故障导致?或者测试环境物理层线路接触不良导致?
验证:
- 替换板卡现象仍然一致,说明非板卡故障;
- 检查物理线路通断情况,6个通道都正常导通;
- 将正常通信的通道与通信故障的通道PIN脚线路互换,两个均不通信,至此就排除了物理线路问题。
- 此时我们应该注意到是否有干扰的存在,导致通信质量变差。这是将测试软件中的采样点进行增大或缩小,现象是故障通道部分会变好,原本正常的通道反而会出故障。
- 接下来就是去如何排除干扰的问题了。
通过上述例子就可以看出,在了解报文传输的位时间、采样点等知识背景下,对于分析通信故障产生的原因是具有一定促进作用的。