通信方式分为两种,同步串行通信与异步串行通信。CAN-bus属于异步串行通信的方式。同步串行通信和异步串行通信的波形图如下图所示:
同步串行通信和异步串行通信特点比较可参见下表:
通信类型 |
同步串行通信 |
异步串行通信 |
时钟信号 |
需要时钟信号线 |
无需时钟信号线 |
采样点 |
采样点由时钟信号决定 |
由接收者内部定时触发 |
缺点 |
多了一条时钟线 |
波特率误差会产生通信错误 |
异步串行通信的优点是减少了一根时钟线,缺点是各接收器的时钟不可能完全一致,总是会有偏差,有些偏快,有些偏慢,这些误差会累计知道通信出错。
如下图所示为标准波特率时采集的数据:
如下图两幅图分别为波特率偏大20%和波特率偏小20%时采样的数据。
由上述几幅图可以看出,由于各接收器的时钟可能会存在偏差,这就导致传输一两个位时。误差可能看不出来,但是传输的位数变多了之后,这些误差会累计直到通信出错。
那么如何解决这个问题呢?
同步!
同步就像给钟表校时一样,隔一段时间所有节点的时钟就同步一次。这样尽管大家的时钟仍有误差,但是可以消除累计误差。
CAN-bus规定信号的跳变沿时刻进行同步,因此只要信号发送变化,节点时钟就会被同步。如下图所示,累计的误差可以限制在两个跳变沿之间,减少错误的发生。
然而这种同步方式又会带来新的问题,比如说发送多个相同位时,并无跳变沿可用于同步,这样就会导致误差不断累积,最后导致通信出错。
那么CAN-bus如何消除这种累计误差?
CAN-bus通过位填充提供同步信号,从而消除累计误差。CAN-bus规定,如果传输的信号连续5个位时相同的,就要插入一个电平相反的位,这个额外插入的位称为“填充位”。
接下来先让我们了解一下位时间这个概念。
一个标称的位时间=1/波特率
一个标称的位时间分为:同步段、传播段、相位缓冲段1、相位缓冲段2。
其中采样点时最为重要的一个概念。
只有采样点设置正确了,我们才能进行正确的采样,获得正确的数据。
不同的波特率下,1位时间的时间份额不相同,采样点也不相同,如下图为不同波特率下的采样点设置。
不同波特率下的时间份额设置可参考下表。
虹科汽车电子与全球顶尖公司技术合作,产品全面覆盖CAN/CAN FD/LIN/TSN/车载以太网等协议,提供数据采集、监控、分析、仿真和一致性测试,架构开发服务解决方案。
虹科的总线培训课程已经累计超过40万的播放量。我们有专业的技术工程师传播前沿知识,提供专业的技术支持和解答、为您找到最适合的解决方案!
想要了解更多车辆网络解决方案,欢迎前往虹科汽车电子官网!