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

相关推荐
知识分享小能手12 分钟前
MongoDB入门学习教程,从入门到精通,在生产环境中设置MongoDB(21)
数据库·学习·mongodb
L.fountain13 分钟前
图像自回归生成(Auto-regressive image generation)实战学习(六)
学习·数据挖掘·回归
weixin_4434785133 分钟前
Flutter组件学习之图表
学习·flutter·信息可视化
倦王1 小时前
大模型学习2
学习
徒 花1 小时前
HCIP学习05 链路聚合(Eth-Trunk)+ VRRP
服务器·网络·学习·hcip
JaneHan_1 小时前
STM32CubeMX+HAL+Keil5 PWM呼吸灯
c语言·stm32·单片机
黑金IT1 小时前
AI Agent “小龙虾终极进化”——自主学习与持久化记忆的架构实现
人工智能·学习·架构
weixin_395772471 小时前
计算机网络学习笔记】初始网络之网络发展和OSI七层模型
笔记·学习·计算机网络
南境十里·墨染春水1 小时前
linux学习进展 进程的内存管理
linux·服务器·学习
Ww.xh1 小时前
STM32嵌入AI模型全流程指南
stm32