“保姆级”车载CAN总线教程(三)-堪称全网“最细”系列

本文详细介绍了CAN总线的位定时机制,包括波特率、时间量子、位时间的组成等。同步部分讲解了硬同步和重同步的概念,以及同步规则和SJW(同步跳转宽度)的作用。通过对传播段和相位缓冲段的分析,阐述了如何确保CAN总线通信的准确性。最后,强调了位定时和同步对于CAN总线报文正确传输的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.位定时机制

1.1 位定时

2.同步 

2.1 同步规则

2.2 硬同步

2.3 重同步(SJW指同步跳转宽度)

2.4 传播段

3.小结


今天是2022年9月7日,怎么说呢,今天有点糟糕,心里莫名的烦恼,我猜大概是因为学习的太用功了,造成身心疲惫,以至于烦恼接踵而至,姑且这样自我安慰一下。

废话少说,直接步入正题。上节对CAN总线帧的格式及其位填充机制等进行了介绍,本节将在上节的基础上来继续聊聊CAN总线的位定时及位同步内容,欢迎学习。

1.位定时机制

1.1 位定时

(1)波特率

         ①波特率可以通过编程设置合适的时间量子长度和数量确定。

         ②波特率=1/位时间。

(2)时间量子(Time Quantum)

         ①时间量子来源于对系统时钟可编程的分频。

         ②BRP=BaudRatePrescaler(波特率分频器)。

(3)位时间的组成

一个位时间包含4个时间段8-25个时间量子。为方便编程,许多CAN模块将传播段和相位缓冲段1合并位1个时间段,即只有3个时间段

①同步段(Synchronization Segment)

  • 一个位的输出从同步段开始。
  • 同步段用于同步总线上的各个节点,跳变沿产生于此段内。
  • 固定长度,1个时间量子。

②传播段(Propagation Segment)

  • 用于补偿信号通过网络和节点传播的物理延迟。
  • 传播段长度应能保证2倍的信号在总线的延迟。
  • 长度可编程(1…8个时间量子或更长)。

③相位缓冲段1(Phase Buffer Segment1)

  • 用于补偿节点间的晶振误差。
  • 允许通过重同步对该段加长。
  • 在这个时间段的末端进行总线状态的采样。
  • 长度可编程(1…8个时间量子或更长)。

④相位缓冲段2(Phase Buffer Segment2)

  • 用于补偿节点间的晶振误差。
  • 允许通过重同步对该短缩短。 
  • 长度可编程(1…8个时间量子或更长)。

2.同步 

CAN的同步包括硬同步和重同步两种同步方式。

2.1 同步规则

一个位时间内只允许一种同步方式

②任何一个“隐性”到“显性”的跳变都可用于同步。

硬同步发生在SOF→所有接收节点调整各自当前位的同步段,使其位于发送的SOF位内。

④重同步发生在一个帧的其他位场内,当跳变沿落在了同步段之外。

⑤在SOF到仲裁场有多个节点同时发送的情况下,发送节点对跳变沿不进行重同步。

2.2 硬同步

发生在SOF位→所有接收节点调整各自当前位的同步段,调整宽度不限。

注:a.发送节点Node_A在发送SOF位时,SOF位的下降沿在SS段内;

b.这时接收节点Node_B发现自己当前位的SS段和发送节点SOF位的SS段不同步。也就是说当Node_A产生SOF位SS段时,Node_B的当前位的SS段已经在5个Tq之前产生了; 

c.这样接收节点Node_B硬将自己当前位的SS段拉到与SOF位的SS段同步。

2.3 重同步(SJW指同步跳转宽度)

(1)跳变沿与同步段的误差<SJW→重同步导致的相位缓冲段1延长或相位缓冲段2缩短,能够保证采样点位置的正确→重同步和硬同步作用相同;

(2)跳变沿与同步段的误差>=SJW;

  • 如果相位差为正,沿位于采样点之前→相位缓冲段1被增长=SJW;
  • 如果相位误差为负,沿位于前一个位的采样点之后→相位缓冲段2被缩短=SJW。

 (3)相位缓冲段1延长(SJW=4 )发的晚,收的早;

如下图所示:

a.发送节点Node_A比接收节点Node_B的时间慢了,也就是说Node_A当前位的ss段产生的时候,Node_B 当前位的ss段已经在2个Tq之前产生了;

b.所以这个时候接收节点Node_B就将PBS1延长2个Tq的时间;

c.于是这个时候Node_A当前位的采样点就和Node_B的采样点同步了。

 (4)相位缓冲段2缩短(SJW=4)→发的早,收的晚;

如下图所示:

a.发送节点Node_A当前位的SS段诞生2Tq时长之后,接收节点Node_B的当前位才产生SS段;

b.于是,接收节点Node_B当前位的PBS2段缩短,

c.这样就会导致接收节点Node_B的下一位能够提前2个Tq,从而Node_B的下一位采样点和Node_A下一位的采样点能够同步。

(5)同步跳转宽度—Synchronization Jump Width

  • SJW为PBS1与PBS2调整的最大长度(最大值不能超过4);
  • SJW必须小于PBS1和PBS2的最小值。

2.4 传播段

(1)延迟时间tPTS的确定

①在CAN-BUS上传输造成的延迟;

②在节点传输造成的延迟。

按照CAN通信协议的规定,补偿给传播延迟的时间长度要至少等于实际实际传播延迟时长的2倍,即:

                                                        tPTS≥2×tdel=2×(tbus+tdel)

在CAN总线通信系统中是以时间量子Tq来度量时间的,所以如果延迟补偿时间tPTS = 3.1Tq,那么这个时候要取:tPTS = 4Tq。

3.小结

由于CAN总线作为异步通信方式,发送方与接收方需要采用相同的波特率才能完成通讯,但在实际中由于收到各种因素影响,接收的数据会存在误差,导致整个CAN通讯网络不能正常通讯,因此CAN总线的位定时与同步机制实现了其报文的正确传输。

新的一天,大家继续努力哦!

有时候,总觉得自己的梦想很大,终点很远,像是异想天开,但其实也没有那么遥远,就这样一步一步的走,走着走着就到了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

车载软件开发M哥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值