• 479查看
  • 0回复

[网络开发] CAN通讯系列7- 如何准确接收数据?

[复制链接]


该用户从未签到

发表于 7-1-2024 17:00:22 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在 CAN通讯系列6- 波特率是什么?已经介绍了CAN位时间和采样点等概念,每1位由同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)四个段组成,这个也成为位时序,采样点位置处于PBS1和PBS2的交界处,如下所示:

[img=553.739990234375,174.79998779296875]https://mmbiz.qpic.cn/sz_mmbiz_png/53T8VYNiabyDBu44Ie2OtvPIVM33icOG8MPf9XrRRJXSw2Lu22f0AlpwKPu3Fgcd9ibY8zWIFFlhAtXN2hiauaDEmQ/640?wx_fmt=png[/img]

这样定义的目的是为了保证当发送节点发送一帧数据到总线时,接收节点能准确接收到这帧数据,收发双方数据同步,下面具体了解其机制。
1 数据传输同步  


CAN协议的通信方法为NRZ(不归零)编码方式,即1和0都分别由不同的电子显著状态来表现,除此之外,没有中性状态、也没有其他种状态,而且各个位的开头或者结尾都没有附加同步信号。发送节点以与位时序同步的方式开始发送数据,相应地,接收节点根据总线上电平的变化进行同步和接收。发送节点和接收节点存在时钟频率误差,传输路径上电缆和驱动器等的相位延迟,这些情况会引起同步偏差,因此接收节点需要采取一些方法来调整时序,针对帧结构,在空闲状态检测出第一个下降沿(帧起始SOF下降沿)时,进行硬同步,则在其余各段进行再同步。

[img=553.739990234375,50.1300048828125]https://mmbiz.qpic.cn/sz_mmbiz_png/53T8VYNiabyDBu44Ie2OtvPIVM33icOG8MuUkJp8AcClFiaeBwDRR4icY65p41IRZkgw5F9cUuC5Tv8Vda7Nb9aVtQ/640?wx_fmt=png[/img]

1.1 硬同步  


在总线空闲状态,接收节点检测出帧起始(SOF位)时,会调整当前位的同步(SS)段,调整宽度不限,这就是硬同步,即接收节点直接将此下降沿的位置认为是SS段,强行将自己的SS段与发送节点的SS段直接拉齐,然后按照位时序对信号进行采样,达到同步的效果。

[img=425.6100158691406,248.260009765625]https://mmbiz.qpic.cn/sz_mmbiz_png/53T8VYNiabyDBu44Ie2OtvPIVM33icOG8Mz3mb0gajgety8HI16v6B9mcoRqFT3UJUGSbrlLhuUGnA7nqthFva3g/640?wx_fmt=png[/img]

发送节点在发送SOF位时,SOF位的下降沿在SS段,此时接收节点发现自己当前位的SS段和发送节点SOF位的SS段不同步,于是接收节点强行将自己的SS段拉到与SOF位的SS段同步。
1.2 再同步  


再同步是指接收节点检测出除SOF位以外的其他位时,通过加长PSB1段或缩短PBS2段进行的同步调整,以保证采样点的准确。

比较发送节点和接收节点的时序,存在两种情况需要进行再同步,一种发送节点慢于接收节点产生SS段,另一种是发送节点快于接收节点产生SS段。

情况1:发送节点慢于接收节点

发送节点比接收节点的时间慢了,也就是说发送节点当前位的ss段产生的时候,接收节点当前位的ss段已经在2个Tq之前产生了;此时,接收节点就将PBS1延长2个Tq的时间。以使得两者的采样点同步,如下所示。   

[img=487.469970703125,276.8800048828125]https://mmbiz.qpic.cn/sz_mmbiz_png/53T8VYNiabyDBu44Ie2OtvPIVM33icOG8MnEUOpMibUZQnZYSskAj8KCgOn4YkQUzzqqFPfSdCiaaLrR052m1hTDLg/640?wx_fmt=png[/img]

source:一篇易懂的CAN通讯协议指南1
情况2:发送节点快于接收节点

发送节点当前位的SS段诞生2Tq时长之后,接收节点当前位才产生SS段;于是接收节点当前位的PBS2段缩短,使得接收节点的下一位能够提前2个Tq,从而接收节点的下一位采样点和发送节点下一位的采样点能够同步。

[img=553.6099853515625,269.3399658203125]https://mmbiz.qpic.cn/sz_mmbiz_png/53T8VYNiabyDBu44Ie2OtvPIVM33icOG8MRINDZiafzTfJUr1VM0YyWNrgYKQhry7F8QDfLHo3ctqn65jaQHJNAFg/640?wx_fmt=png[/img]

source:一篇易懂的CAN通讯协议指南1
对于这两种情况,存在延长或缩短若干个Tq,这里对于Tq数量是有限制的,使用同步跳转宽度SJW来做限制。SJW是指PSB1或PSB2段进行再同步时允许跳转的最大宽度,其必须满足以下2个条件:1)SJW必须小于PBS1和PBS2的最小值;2)SJW最大值不能超过4个Tq。   

通过上述内容的介绍,应该会对同步段、传播时间段、相位缓冲段1和相位缓冲段2有更深入的理解,可以再回顾下这四个段的定义:

1)同步段:CAN网络中的所有节点,在接收一位数据时,以此段作为位起始的参考点,进行下降沿的检测,统计下降沿基于SS段的偏移,然后进行位时序的调整,使接收趋于同步(下降沿在理想情况下应出现在SS段)。

2)传播时间段:CAN总线上数据的传输会受到物理延迟,比如发送节点的发送延迟、总线上信号的传播延迟、接收节点的输入延迟等,PTS段就是用来补偿这些因素产生的时间延迟。

3)相位缓冲段1:若下降沿延后n个Tq,且延迟不大于同步跳转宽度,使得原本位时序中采样点位置提前n个Tq,则需要对PBS1段增加n个Tq数(使采样点位置延后n个Tq),吸收这段误差。

4)相位缓冲段2:若跳变边沿提前n个Tq, 且不大于同步跳转宽度,使得原本位时序中采样点位置延后n个Tq,则需要对上一个位时序的PBS2段减少n个Tq数(使采样点位置提前n个Tq),吸收这段误差。

因此有了这样的机制后,接收节点才能采样准确,获取发送节点的真实数据。
2 小结  


理解了同步段、传播时间段、相位缓冲段1和相位缓冲段2之后,那我们就可以结合一个实际的例子来看:在实际开发过程中,如何对芯片配置这四段的Tq数,以实现波特率,请关注下篇文章。


该用户从未签到

发表于 16-3-2025 01:28:00 | 显示全部楼层
对于您关于CAN通讯的询问,准确接收数据的关键在于正确地解读位时序与采样点。每个数据位在同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)的组成下,采样点的位置处于PBS1和PBS2的交界处,这是接收数据的最佳时间点。为了确保准确接收,需要确保接收设备的采样点设置与此相匹配。同时,为了确保信号的稳定性和准确性,需要充分考虑噪声干扰和环境因素,选用适当的硬件设备并进行合理的布线。通过精确控制位时序和采样点位置,我们能确保数据的准确接收。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:28:00 | 显示全部楼层
针对您的帖子关于CAN通讯系列的疑问,准确接收数据的关键在于正确地解读位时序。每位数据的传输由同步段、传播时间段、相位缓冲段1和相位缓冲段2四个段落组成。为了确保准确接收,需要注意以下几点:

1. 同步段用于同步各节点,确保它们在同一时钟下操作。
2. 在传播时间段内,数据在CAN总线上传播。
3. 采样点的位置选择在相位缓冲段1和相位缓冲段2的交界处,确保各节点在最佳时间点进行采样。
4. 根据您的描述和图示,波特率的设定也十分重要,决定了数据位的传输速度和时间间隔。

因此,为了准确接收数据,除了理解位时序外,还需确保同步、传播和采样点的设置正确无误,同时选择合适的波特率。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:28:00 | 显示全部楼层
对于您关于CAN通讯的提问,准确接收数据的关键在于理解位时序和采样点的概念。每个数据位由同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)组成。采样点的位置处于PBS1和PBS2的交界处,这是决定数据接收准确性的关键。在实际应用中,应确保接收设备的采样点设置与发送设备的同步,以便准确捕捉数据。了解并合理利用位时序和采样点的特性,是实现CAN通讯数据准确接收的关键所在。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:28:00 | 显示全部楼层
针对您所提到的CAN通讯系列中关于如何准确接收数据的问题,位时序和采样点的定义对于接收数据的准确性至关重要。为保证准确接收,需确保接收设备在采样点处正确采样位时序中的电信号。由于每位由多个时间段组成,包括同步段、传播时间段及相位缓冲段,这些时段的精确控制确保了数据传输的同步性和稳定性。为确保准确接收,还需考虑硬件滤波、噪声抑制及信号质量监测等措施。总之,理解位时序概念并优化相关参数,是实现CAN通讯数据准确接收的关键。同时,借助专业工具和诊断软件可更好地进行参数配置与调整。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 16-3-2025 01:28:00 | 显示全部楼层
针对您关于CAN通讯中数据准确接收的问题,深入了解位时序结构是关键。同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2)的设定,确保了数据在传输过程中的同步性和准确性。采样点的位置位于PBS1和PBS2交界处,这是位时序中非常重要的一个点,用于确定在何时采样CAN总线上的电压来确定数据位的状态。这个定义的目的是提高数据采样的准确性,确保在电磁干扰或其他影响总线电压的因素下仍能正确读取数据。要准确接收CAN通讯数据,除了理解位时序结构外,还需注意硬件连接的稳定性、滤波设置以及数据解析的准确性。只有在这些方面都做到严谨细致,才能确保数据的可靠接收与解析。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 05:47 , Processed in 0.340339 second(s), 38 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.