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

相关推荐
久邦科技3 小时前
奈飞工厂中文官网入口,影视在线观看|打不开|电脑版下载
学习
好好学习天天向上~~4 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
Balabala噗4 小时前
JLink-Cortex-M Error报错-No Cortex-M SW Device Found-解决办法整理
单片机·嵌入式硬件
点灯小铭4 小时前
基于单片机的智慧农业温度湿度滴灌自动控制系统设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
非凡ghost5 小时前
PowerDirector安卓版(威力导演安卓版)
android·windows·学习·软件需求
代码游侠5 小时前
C语言核心概念复习——C语言基础阶段
linux·开发语言·c++·学习
dingdingfish5 小时前
Bash学习 - 第3章:Basic Shell Features,第5节:Shell Expansions
开发语言·学习·bash
firewood20246 小时前
共射三极管放大电路相关情况分析
笔记·学习
zl0_00_06 小时前
美亚2023
学习
AI_56786 小时前
SQL性能优化全景指南:从量子执行计划到自适应索引的终极实践
数据库·人工智能·学习·adb