通信协议:CAN总线的结构和通信实现(一)


1、CAN总线的简介

CAN总线简称 — 控制器局域网络,由德国BOSCH公司开发,是一种串行的差分总线,并且这种差分总线只传递数据信息。

CAN总线已经是国际上的一种通信标准(ISO11519),它具有高可靠性、良好的错误检测能力、总线仲裁等优良特点,被广泛应用在汽车控制系统、环境恶劣场所、电磁辐射强、干扰性大等场所中。

CAN是一种异步的通信方式,它的通讯不需要时钟进行同步。

CAN总线上只有CAN_H、CAN_L两根通信线,数据以差分信号的方式进行传输。


2、CAN的信号电气规则

CAN总线的传输线路上只有两根用于传输信号的信号线 — CAN_H、CAN_L。

CAN总线的数据传输使用的是差分信号的方式进行的。这两根线中的信号振幅相等,相位相反,逻辑 “1” 逻辑 “0” 通过两根信号线的电压差值表示出来。

在CAN的应用中,逻辑1也称为隐性电平,逻辑0也称为显性电平。

比如,以高速CAN为例:

逻辑1:CAN_H、CAN_L的电压均为2.5V,电压差为VH - VL = 0V。

逻辑0:CAN_H电压为3.5V,CAN_L电压为1.5V,电压差为 VH - VL = 2V。

示意图如下:

两根信号线的电压值根据标准的不同是有所差异的,如下表所示:

注意:CAN总线上,在同一个时刻只能处于隐性电平(逻辑1)或者显性电平(逻辑0)中的一个状态,且显性电平相比隐性电平具有优先权。比如:CAN总线上有两个节点,在同一个时刻,一个输出隐性电平,一个输出显性电平,这个时候总线上是显性电平状态。


3、CAN总线常见的接线网络

(1)闭环总线网络

CAN的闭环通信网络如下:

闭环通信网络的特点如下:

1)遵照标准为 ISO11898;

2)最高速度可达1Mbps,总线最大长度为40m;

3)总线的两端要求各有一个120欧姆的电阻。

注意:闭环网络的情况下,CAN总线的两端需要各接一个120欧姆的电阻,用于增加总线的抗干扰能力,提高总线的稳定性。

根据我个人对CAN总线的使用经验,如果CAN总线上的总阻值不为60欧姆,总线的通信质量是会变差的,甚至可能会出现通信不稳定的情况!


(2)开环总线网络

CAN的开环通信网络如下:

开环通信网络的特点如下:

1)遵循ISO11519-2标准;

2)最高的通信速度为125Kbps,是一种低速通信的连接方式;

3)最大的通信距离可达1Km;

4)两根总线独立,且要求每根总线上要串联一个2.2K欧姆的电阻。


4、CAN的通信速率

按照 ISO11898 标准中所规定的,CAN总线的通讯波特率最高为 1Mbps。大多数项目常用的CAN总线波特率有125Kbits/s,250Kbits/s,500Kbits/s,1MKbits/s等

CAN总线的传输距离与速率的对照表:


5、CAN总线的数据位时序分解

由于CAN总线是异步通信的,它不像IIC、SPI这种同步通行方式一样具有同步时钟,所以总线网络中的节点就需要约定好通信的波特率。

会把每一个数据位的时序进行分解,会分解成SS段、PTS段、PBS1段、PBS2段,这四个段加起来就是一个CAN的数据位长度。分解后的最小时间单位为Tq。它们分别如下:

同步段(SS段):该段的大小固定为1Tq。

当总线上的节点在SS段的范围内检测到总线上信号发生了跳变,就认为该节点与总线的时序是同步的。当节点与总线同步时,在采样点采集到的总线电平即可以确认为该位的电平。

传播时间段(PTS段):该段的大小为 1Tq ~ 8Tq。

这个时间段是用于补偿网络的物理延时时间。是总线上输入比较器延时和输出驱动器延时总和的两倍。

相位缓冲段1(PBS1):该段的大小为 1Tq ~ 8Tq。

主要用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长。

相位缓冲段2(PBS2):该段的大小为 1Tq ~ 8Tq。

是用来补偿边沿阶段误差的,它的时间长度在重新同步时可以缩短。

为了方便说明,我就直接用高低电平表示CAN的逻辑1 和 逻辑0 信号,示意图如下:

图:CAN数据位分解图

上图是对CAN通信中的逻辑0进行分解的说明示意图。图中就表示每个数据位的长度为19Tq(SS 段占 1Tq,PTS 段占 6Tq,PBS1 段占 5Tq,PBS2 段占 7Tq),信号的采样点位于 PBS1 段与 PBS2 段之间,通过控制各段的长度,可以改变采样点的位置


6、CAN总线的波特率

在CAN总线的通讯中,各个通讯的节点只要确定了1个Tq的时间长度以及每个数据位占多少个Tq,由此就可以算出CAN通讯的波特率。

在CAN中,波特率也就只是约定了每个数据位的长度而已。

比如,上图(图:CAN数据位分解图)中,假设1Tq = 1us,每个数据位由19个Tq组成,则每传输1Bit数据需要的时间为:19Tq = 19us。

则一秒可以传输的数据位(bit)为:

1000000 / 19 = 52.6316K(bps)

注意:波特率指的是每秒可以传输的数据位(bit)的个数。




作者简介:

本人95后技术男,从事嵌入式软件开发,专注于技术成长和技术分享。目标是每天进一步一点点,通过技术改变自己的生活,创造自己的美好未来!如果你也对嵌入式感兴趣,欢迎关注我呀!


声明:

本文作者:嵌入式之入坑笔记

文章版权归作者所有,转载请注明出处!

展开阅读全文

页面更新:2024-03-08

标签:总线   波特率   通信   电平   显性   节点   分解   电压   逻辑   结构   通信协议   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top