当前位置: 首页 > article >正文

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同步包括硬同步重同步两种同步方式。
同步规则:

  1. 一个位时间内只允许一种同步方式。
  2. 任何一个"隐性"到"显性"的跳变都可用于同步(下降沿)。
  3. 硬同步发生在帧起始(SOF),接收节点调整当前位的同步段,使其位于发送的SOF内。
  4. 重同步发生在一个帧的其他位场,当跳变沿在同步段之外。
  5. 在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路确没有反应。
分析:是否是板卡故障导致?或者测试环境物理层线路接触不良导致?
验证

  1. 替换板卡现象仍然一致,说明非板卡故障;
  2. 检查物理线路通断情况,6个通道都正常导通;
  3. 将正常通信的通道与通信故障的通道PIN脚线路互换,两个均不通信,至此就排除了物理线路问题。
  4. 此时我们应该注意到是否有干扰的存在,导致通信质量变差。这是将测试软件中的采样点进行增大或缩小,现象是故障通道部分会变好,原本正常的通道反而会出故障。
  5. 接下来就是去如何排除干扰的问题了。

通过上述例子就可以看出,在了解报文传输的位时间、采样点等知识背景下,对于分析通信故障产生的原因是具有一定促进作用的。


http://www.kler.cn/a/373641.html

相关文章:

  • Python中的`update`方法详解及示例
  • postgresql杀掉数据库连接阻塞
  • 【论文复现】短期电力负荷
  • 微信公众号(或微信浏览器)获取openId(网页授权)
  • XCode16中c++头文件找不到解决办法
  • Matplotlib 网格线
  • CSS 复习
  • ARM base instruction -- adc
  • 基于LORA的一主多从监测系统_4G模块上巴法云
  • 哈希函数简介
  • 全局数据在Python包中模块间管理方法探讨
  • 红警之家进不去
  • Ribbon的轮询策略实现方法
  • 把握鸿蒙生态机遇,共创智能应用未来
  • shell基础-for\while\break
  • 使用Scrapy框架爬取博客信息
  • 深度学习:梯度下降算法简介
  • Spring学习笔记_16——@Inject
  • Es可视化界面 ElasticHd
  • 杂货 | 每日资讯 | 2024.10.31
  • 远程工作时代的文件安全管理挑战与机遇
  • 尚硅谷-react教程-求和案例-优化2-Provider组件的使用-笔记
  • 用ChatGPT提升工作效率:从理论到实际应用
  • 贪心算法入门(一)
  • axios post请求body为字符串时的解决方法
  • 数理逻辑/逻辑哲学 小记