通讯原理

<< 点击显示目录 >>

主页  贝加莱CAN通讯使用例程说明 > 基础知识 >

通讯原理

通讯原理简介

 

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。

1.1 CAN总线特性

04 通讯_01 CAN_01 CAN通讯 CAN_LIB库使用说明_files_image001

04 通讯_01 CAN_01 CAN通讯 CAN_LIB库使用说明_files_image002

04 通讯_01 CAN_01 CAN通讯 CAN_LIB库使用说明_files_image003

04 通讯_01 CAN_01 CAN通讯 CAN_LIB库使用说明_files_image004

1.2 CAN总线标准

CAN标准只是定义了物理层和数据链路层,并没有规范应用层。

04 通讯_01 CAN_01 CAN通讯 CAN_LIB库使用说明_files_image005

04 通讯_01 CAN_01 CAN通讯 CAN_LIB库使用说明_files_image006

1.3 CAN总线帧结构

按照CAN总线标准,CAN帧分为标准帧(COB-ID为11bit)和扩展帧(COB-ID为29bit)

04 通讯_01 CAN_01 CAN通讯 CAN_LIB库使用说明_files_image007

1.4 报文格式

   为了识别 CAN总线上的传输信息,必须通过一种固定的格式来打包/封装这些信息。通常,用“帧”来表示这些格式。CAN总线上传输的帧共有4种类型:数据帧、远程帧、错误帧、超载帧。每一个帧都由多个通称为“场”的信息区构成,而每一个场也都由1个或多个位组成。下面说明一个标准格式的数据帧的组成,如图所示。

 

2

 帧起始(SOF)用来指示一个数据帧或远程帧的开始。SOF 包含1个确定的显性位,出现在总线上的隐性到显性的脉冲下降沿可用于同步CAN网络中的其他节点设备。

帧起始后面是标识符场(CAN—ID)。在标准格式的数据帧中,标识符场由11位组成,用于表示确定的待传输消息,其数值也作为待传输消息的优先级。因此,用户在设定帧的标识符时,必须根据系统中各种消息的重要性来设置对应的数值。对于标准格式的CAN报文,标识符可以是0~2047之间的某个值。

 

  注意:同一个 CAN网络中,不能够有两个节点同时发送具有相同标识符但却包括不同数据内容的帧。

 

 标识符段之后一位是远程传输请求位(RTR),用来区分数据帧和远程帧。当RTR位为显性时,表示传输数据帧;当RTR为隐性时,表示传输远程帧。

 控制段由6位组成,包括保留位rl、r0以及4位 DLC(数据长度代码)。DLC表示此帧在数据段中的传输字节数、通常 DLC范围为0~8,当 DLC值大于8时,该值也可以在总线上传输,但此帧在数据段中的传输字节数仍会被限制在8字节,由此,在分析帧的DLC时,请务必注意这一点特别之处。

 数据段由0~64位组成,包含此帧传输的实际有效信息(0~8字节)。通常,数据段的传输都是从第一个字节开始,并且是从每个字节的最高有效位开始。

 数据段之后是 CRC段(循环冗余校验),由15位 CRC序列和1位 CRC界定符组成。接收器可以利用 CRC序列来识别是否接收了错误的数据。

 应答段(ACK)由1个应答间隙位和1个应答界定符位组成。发送器在应答间隙位传输一个隐性电平;在正确接收了完整的消息之后·接収器发送一个显性电平以进行确认。应答间隙位的电平值可以用来提示本网络中没有接收器正确收到了当前发送的消息(应答间隙位呈隐性电平),或至少有一个接收器正确收到了当前发送的消息(应答间隙位呈显性电平)。因此,应答机制只可以用来检测网络的消息响应故障,但不能用来发送错误帧。

 每一帧都是以帧结束段(EOF)结束。EOF 段由7个隐性电平的位组成。在传输EOF段的过程中,网络的各个接収器还有最后一次发出错误帧的机会。

 EOF段之后还必须插人一个帧间空间(ITM), ITM之后才能开始传输下一个帧。ITM空间由3个隐性电平的位组成,已不属于前一条帧的组成单元。在ITM空间,网络中的发送器可以发送过载帧,以增加 ITM的时间,延迟其他节点发送下一个帧(目前主流的 CAN控制器不再需要使用这种方法)。

 远程帧可用来请求有效数据。当一个网络设备的接收器收到一个远程帧时,该设备的发送器就会发送一个用于应答的数据帧。接收到的远程帧与发送出的数据帧应当使用同一个 CAN—ID标识符。

 

 注意:远程帧、数据帧的DLC值必须一致。

 

 有些型号的 CAN控制器在收到远程帧之后会自动发送数据帧(无需微控制器的程序控制),而大多数CAN控制器必须将远程帧及发送请求提交给微控制器。因此,有微控制器的场合,尽量不要使用远程帧。

 

 下图说明了一个标准格式远程帧的组成。

 

1

标准格式远程帧的组成

 

理论上,远程帧与数据帧的格式相同。但远程帧的RTR位永远被置为隐性电平,且远程帧没有数据场。由于需要使用RTR位进行仲裁,远程帧的仲裁优先级低于数据帧。当网络设备发送的远程帧遇到同一时刻发送的相同CAN—ID数据帧时,远程帧就会失去仲裁,数据帧就会出现在总线上。