CAN总线的数据采样和同步问题

一、CAN总线接收方数据采样

开始时所有设备都默认是接收方,当需要发送数据时变为发送发方。

CAN总线没有时钟线,总线上的所有设备通过约定 波特率 的方式确定每一个数据数据位的时长。

发送方以约定的位时长每隔固定时间输出一个数据位。

接收方以约定的位时长每隔固定时间采样总线的电平,输入一个数据位。

理想状况下,接收方能依次采样到发送方发出的每个数据位,且采样点位于数据位中心附近。但CAN总线没有时钟线,会出现因为硬件差异导致的时钟不准的问题。

二、CAN总线位时序的同步

已知CAN总线没有时钟线,会因为硬件差异导致的时钟不准,影响CAN的数据传递,为此CAN总线有 硬同步再同步的两种应对方式。但在此之前我们还需了解位时序。

a、位时序

为了灵活调整每个采样点的位置,使采样点对齐数据位中心附近,CAN总线对每一位数据进行了更细致的划分,分为同步段(SS) 、 传播时间段(PTS) 、相位缓冲段1(PBS1) 和 相位缓冲段2(PBS2) , 每个段又由若干个最小时间单位(Tq)构成。

采样点位于PBS1和PBS2之间,调节他们的Tq数可以改变采样点的采样时机。

b、硬同步

硬同步主要解决的是采样点没有对齐数据位中心附近,即太靠近上升下降沿了。

每个设备都有一个位时序计时周期,当某个设备(发送方)率先发送报文,其他所有设备(接收方)收到SOF的下降沿时,接收方会将自己的位时序计时周期拨到SS段的位置,与发送方的位时序计时周期保持同步。

硬同步只在帧的第一个下降沿(SOF下降沿)有效。

经过硬同步后,若发送方和接收方的时钟没有误差,则后续所有数据位的采样点必然都会对齐数据位中心附近。

c、再同步

再同步主要解决MCU之间的时钟存在略微差异,随着时钟误差的累积,采样点逐渐偏离。

若发送方或接收方的时钟有误差,随着误差累积,数据位边沿逐渐偏离SS段,则此时接收方根据再同步补偿宽度值(SJW),SJW的宽度可以指定为1-4Tq ,通过加长PBS1段,或缩小PBS2段,以调整同步。

再同步可以发生在第一个下降沿之后的每个数据位跳变边沿。

注意:SJW是误差补偿的最大值,具体补偿多少是误差大小和SJW共同决定的,只是不能超过最大值而已,若超过按最大值补偿。

三、波特率的计算

参考

1-3 位同步_哔哩哔哩_bilibili

相关推荐
魔法阵维护师22 分钟前
从零开发游戏需要学习的c#模块,第三十四章(设置界面)
学习·游戏·c#
记帖44 分钟前
STM32C542开发(1)----点亮LED
嵌入式硬件·stm32cubemx·stm32cubeide·stm32cubemx2·stm32c542cct6
m0_377108141 小时前
stm32平衡车mpu6050
stm32·单片机·嵌入式硬件
FserSuN1 小时前
Machine Learning Specialization - Week 1, 9-20学习总结
人工智能·学习·机器学习
OBiO20131 小时前
肺部靶向 AAV 怎么选?如何解决靶向不精准、转导效率低的递送难题?
学习
我命由我123451 小时前
UGC、PGC、PUGC 极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
七老板的blog1 小时前
【Agent智能体】 任务规划工作流
python·学习·ai·开源
海鸥-w2 小时前
前端学习python第二天手敲笔记整理
前端·python·学习
资深流水灯工程师2 小时前
STM32 SAI 通讯原理与 TDM 应用
stm32·单片机·嵌入式硬件
山楂树の2 小时前
Video核心术语
学习·音视频