CAN总线系列(一):协议概述

一.CAN2.0规范

        CAN是控制器局域网络(Controller Area Network)的简称,它是一种串行通信协议,由研发和生产汽车电子产品著称的德国BOSCH公司开发。CAN协议作为一种开放系统互联协议,其结构遵守ISO/OSI参考模型。

        CAN2.0规范对物理层中的PMA和MDI没有规定。两者结构对比如下图1.1。

a32e462b0e484e9a9bebc1b1ca655554.png

二.ISO 制定的两个 CAN 协议

        ISO制定了ISO11898和ISO11519-2两个协议标准,它们既有相同部分,也有差异部分。

2.1 应用领域

(1)ISO11898 标准: 用于高速(最高 1Mbps) CAN 通讯。开始的时候,数据链路层和物理层都在标准ISO11898 中规定,后来被拆分为 ISO11898-1(仅涉及数据链路层)和 ISO11898-2(仅涉及物理层)。
(2)ISO11519-2 标准: 用于低速(最高 125kbps) CAN 通讯。

2.2 物理层

2.2.1 物理层对比

        这两个标准在数据链路层相同,且对物理层的 PMA 层和 MDA 层都有定义, 但物理层内容不相同。

8ba2960e043e4aacb5d6dbcaa3384cfc.png

2.2.1 总线拓扑图

        CAN的典型拓扑结构如下图所示。

        CAN 总线由 CAN_High 和 CAN_Low 两根线组成, CAN 控制器通过一个收发器连接到总线上,总线的电平由 CAN_High 和 CAN_Low 的电位差来确定。
        CAN 总线在逻辑上有“ 线与” 的关系,一个发送单元能够通过改变总线电平来送一个信息给接收单元。
        总线有 2 个电平: ①显性电平,定义为逻辑 0;②隐性电平,定义为逻辑 1。 这里的显性和隐性概念应该类似于生物学上的基因遗传定律,即显性具有“优先”的意味。 在任一给定的时间内,总线总是处于这 2 个电平之一。
        ISO11898 和 ISO11519-2 规定的物理层终端电阻、显性电平和隐性电平的差分电压是不同的。
①终端电阻: ISO11898 一般为 120Ω,而 ISO11519-2 一般为 2.2kΩ。具体电阻需要根据具体的线路特点确定。
②电平: 正常情况下, ISO11898 隐性电平的电压差为 0V,显性电平的电压差为 2.0V,两电平的差别为 2.0V-0V=2.0V; ISO11519-2 隐性电平的电压差为-1.5V,显性电平的电压差为 3.0V,两电平的差别为 3.0V-( -1.5V) =4.5V。故此, ISO11519-2 抗干扰能力更强,更适合长距离传输。

3cc13d98437c40c695c0dbd26ed5abbb.png

        

2.2.2 满足协议标准的典型IC

        下表汇总了 满足ISO11898 和 ISO11519-2 标准的主要收发器 IC。

标准 ISO11898 ISO11519-2
主要IC ①HA13721RPJE(RENESAS)
②TJA1050T(Philips)
③TLE6250G(Infineon)
④CF150C(BOSCH)
①TJA1054T(Philips)
②TLE6254-3G(Infineon)

2.2.3 ISO11898 标准解读

        高速CAN标准ISO11898主要应用在汽车领域。

2.2.3.1 干扰过滤

          由于CAN-High线和CAN-Low线是扭绞在一起的(双绞线),所以干扰脉冲X就总是有规律地作用在两条线上。由于差动信号放大器总是用CAN-High线上的电压(3.5V-X)减去CAN-Low线上的电压(1.5V-X),即(3.5V - X) - (1.5V - X) = 2V。因此,在经过处理后,差动信号中就不再有共模干扰脉冲。如下图所示。

289c167741a44d02bb91c97956d49517.png

2.2.3.2 位填充

        位填充是一种周期性重同步收/发操作的功能,为了防止接收节点间时序由于累积而导致的错误,如果5个比特位持续了同样的电平,则添加1个位的反向数据位。

(1)发送单元:在发送数据帧和远程帧的时候,SOF—CRC段的数据,相同电平如果持续5bit,在下一个bit(第6bit)则要插入1bit与前5bit反向的电平。

(2)接收单元:在接收数据帧和远程帧的时候,SOF—CRC段的数据,相同的电平如果持续5bit,则需要删除下一bit(第6bit)在接收。如果相同电平持续6bit,则视为错误,发送错误帧。

2.2.3.3 满足标准的典型IC

        满足ISO11898标准的典型物理器件是TJA1050。

2.3 数据链路层

          它是两个标准相同部分。

2.3.1 帧格式与帧类型

e2a47b4c418e4e3bafe0f503838c712d.png

2.3.2 各类型帧的作用

8324a25d556347ebaff8fe1a7dfe5c9b.png

       

2.3.3 帧格式与帧类型(数据帧与远程帧)的结构对比

1f06f09bb95346cd880f22aa3a9035cb.png

2.3.4 错误帧的组成

3dec6118e25f4a56baa26722d5f297c4.png

2.3.5 过载帧的组成

5e882125e7c64e03932ac1552470b49a.png

2.3.6 满足数据链路层协议的典型IC

        满足数据链路层协议的典型IC是MCP2515。

        MCP2515的特点如下:

b16974876f354344909278e2708de68a.png

相关推荐

  1. CAN总线协议

    2024-03-26 23:06:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 23:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 23:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 23:06:02       87 阅读
  4. Python语言-面向对象

    2024-03-26 23:06:02       96 阅读

热门阅读

  1. vue的setup语法糖?

    2024-03-26 23:06:02       39 阅读
  2. 【半结构化访谈法】

    2024-03-26 23:06:02       36 阅读
  3. 24.Python从入门到精通—函数 标准模块 包

    2024-03-26 23:06:02       41 阅读
  4. 【STM32学习计划】

    2024-03-26 23:06:02       38 阅读
  5. 状态机实现单词统计

    2024-03-26 23:06:02       38 阅读
  6. 探索编程语言的发展历程

    2024-03-26 23:06:02       49 阅读
  7. 基于Springboot的个人博客系统的设计与实现

    2024-03-26 23:06:02       30 阅读
  8. C++ 如何去认识模板

    2024-03-26 23:06:02       40 阅读