嵌入式总线技术学习(三):CAN 总线技术详解

参考资料

1. 汽车网络架构与常用总线汇总

1.1 汽车 CAN 总线简述

1.1.1 定义

  • CAN (Controller Area Network,控制器局域网)
    • 1983 年德国 Bosch 公司为解决众多测量控制部件之间的数据交换问题而开发的一种串行数据通信总线
    • 主要用于汽车的监测与控制,目的:减少线束的数量、通过多个网络进行大量数据的高速传输

1.1.2 点对点和总线

  • 早期的 ECU(Electronic Control Unit,电子控制单元、车载电脑)物理层线束连接

    • 线束成本增加、布线复杂度增加、网络扩展困难
      在这里插入图片描述
  • 总线型的 ECU 物理层线束连接

    • 解决了点对点方式的缺点
    • 总线带宽成为网络传输速率的瓶颈
      在这里插入图片描述

1.1.3 CAN 总线发展历史

在这里插入图片描述

1.2 汽车网络架构简述

  • 汽车网络是将汽车上所有电子传感器、执行器和电子控制单元 (ECU) 连接组网的通信形式,根据通信速率,汽车工程师协会 (SAE) 定义了如下类别的汽车网络
    在这里插入图片描述

1.3 常用汽车总线汇总

  • 当前的车用总线对比

    • CAN(CAN FD)、LIN、MOST、FlexRay、车载以太网
      在这里插入图片描述
  • 汽车 CAN 网络细分

    • 动力 CAN 网络
    • 车身 CAN 网络
    • 组合仪表 CAN 网络
    • 诊断 CAN 网络

在这里插入图片描述

1.4 汽车网络典型应用

  • PTCAN(动力 CAN)、BCAN(车身 CAN)
    在这里插入图片描述

2. CAN 总线在汽车网络中的优势

2.1 曾经的车用总线

  • SAE J1850 (Class2)
  • SAE J1708
  • K-Line
  • BEAN
  • Byte flight
  • D2B

2.2 CAN 通信特性

  • (1) 节点间采用多主机通信方式
  • (2) 采用短帧结构,报文帧的有效字节数为 8 个,可达汽车实时响应要求
  • (3) 报文 ID 值越小,优先级越高。报文 ID 可分成不同的优先级,进一步满足汽车网络报文的实时性要求
  • (4) 非破坏性总线仲裁处理机制
  • (5) 可靠的 CRC 校验方式,传输数据出错率极低,满足汽车数据传输的可靠性要求
  • (6) 报文顿仲裁失败或传输期间被破坏有自动重发 (机制)
  • (7) 节点在错误严重的情况下,具有自动脱离总线的功能,切断它与总线的联系,不影响总线的正常工作
  • (8) 通信距离最远达 10km (速率 5Kbps 以下)
  • (9) 通信速率最高 1MB/s (此时距离最长 40m)
  • (10) 节点数实际可达 110 个
  • (11) CAN 节点设计成本较低,通信介质采用双绞线

3. CAN 物理层如何保证汽车通信要求

  • OSI 模型与 CAN 的关系
    在这里插入图片描述

  • CAN 总线与 ECU 架构
    在这里插入图片描述

3.1 CAN 收发器

  • CAN 收发器逻辑信号和物理信号之间的转换采用差分电平方式
    • 将逻辑数字信号转换成物理信号
    • 将物理信号转换成逻辑数字信号
      在这里插入图片描述

3.1.1 CAN 信号电平

  • CAN 总线有 ISO11898(高速 CAN,默认) 和 ISO11519(低速容错 CAN) 两个标准
    在这里插入图片描述

  • 为什么要采用两根线 (双绞线)的差分电平信号?

    • 双绞线传输差分信号时受到共模信号干扰后,电平差值不变,信号解码正常
      在这里插入图片描述
  • 单个 CAN 节点
    在这里插入图片描述

  • 多个 CAN 节点:线与原理

    • 只要其中一个节点输出低电平,总线就为低电平
    • 当所有节点输出高电平时,总线才为高电平
      在这里插入图片描述

3.1.2 CAN 编码方式

  • CAN 编码采用 NRZ 非归零编码,相同带宽情况下,NRZ 编码方式的信息量更大
    在这里插入图片描述

3.1.3 CAN 异步串行通信

  • 异步串行通信省去了时钟信号线,但根据波特率做采样,波特率的误差会产生通信错误
    在这里插入图片描述

  • 波特率误差带来的错误
    在这里插入图片描述

  • 如何减少波特率的误差带来的通信错误?

    • 解决方法:CAN 总线规定信号的跳变沿时刻进行同步,将误差累计限制在两个跳变沿
      在这里插入图片描述

    • 该解决方法存在问题:当发送数据出现都为 0 或者 1 的时候,同样不跳变造成误差累计怎么办呢?
      在这里插入图片描述

    • 新解决办法:采用填充位在连续 5 个相同位后插入一个相反位,产生跳变沿,用于同步
      在这里插入图片描述

3.1.4 CAN 采样点

  • 一个标称的位时间 = 1 / 波特率

  • 位时间分为:同步段、传播段、相位缓冲段 1、相位缓冲段 2
    在这里插入图片描述

  • CAN 采样点 – 时间份额参考
    在这里插入图片描述

在这里插入图片描述

3.2 CAN 终端电阻

  • 背景问题

    • 根据电磁场和微波理论,高频电路中负载阻抗需与传输线的特性阻抗一致,否则电信号在线束终端遭遇阻抗突变,发生反射现象,造成波形震荡
      在这里插入图片描述
  • 解决方案
    在这里插入图片描述

  • 总结:CAN 终端电阻作用

    • 保证信号在传输过程中的阻抗连续性

3.3 CAN 总线电缆

  • 选作 CAN 总线的电缆必须达到下面给出的规格(ISO11898-2),这些规格主要用于标准化电气特性,并不涉及机械或材料方面的参数
    在这里插入图片描述

3.4 CAN 节点物理结构

  • CAN 控制器/收发器
    • 分别对应 ISO/OSI 模型的数据链路层和物理层,完成 CAN 报文的收发
  • 功能电路
    • 完成特定的功能,如信号采集或控制外设等
  • 主控制器与应用软件
    • 控制各个硬件部件工作
    • 按照 CAN 报文使用规则解析 CAN 报文
    • 采集并发送数据等
      在这里插入图片描述

4. CAN 数据链路层详解

CAN 通信标准帧和扩展帧

4.1 CAN 报文帧种类与格式解析

4.1.1 数据帧

  • 用于发送节点向接收节点传送数据,是使用最多的帧类型
    在这里插入图片描述

  • 帧起始
    在这里插入图片描述

  • 仲裁段
    在这里插入图片描述

  • 控制段
    在这里插入图片描述

  • 数据段
    在这里插入图片描述

  • CRC 段
    在这里插入图片描述

在这里插入图片描述

  • ACK 段
    在这里插入图片描述

  • 帧结束
    在这里插入图片描述

4.1.2 远程帧

  • 用于接收节点向某个发送节点请求数据
    在这里插入图片描述

在这里插入图片描述

4.1.3 错误帧

  • 用于当某节点检测出错误时向其他节点通知错误的帧

4.1.4 过载帧

  • 用于接收节点向发送节点通知自身接收能力的帧

4.1.5 帧间隔

  • 将数据帧或远程帧与前面的帧分离的帧
    在这里插入图片描述

4.2 CAN 总线竞争与仲裁机制

CAN 总线上有多个节点同时要发送数据,谁先发送呢?这就是总线竞争的问题

  • CAN 总线非破坏性仲裁机制

    • 仲裁发生在仲裁段
    • 采用 “线与” 机制
    • ID 值越小,优先级越高
    • 仲裁失败进入 “只听” 模式
  • 非破坏性仲裁机制的前提
    在这里插入图片描述

  • 仲裁的线与机制
    在这里插入图片描述

4.3 CAN 节点状态与错误处理机制

  • CAN 错误类型
    在这里插入图片描述

  • 错误检测区域
    在这里插入图片描述

  • 错误帧:用于当某节点检测出错误时向其他节点通知错误的帧
    在这里插入图片描述

  • CAN 节点状态
    在这里插入图片描述

  • CAN 错误处理流程
    在这里插入图片描述

5. CAN FD 与 CAN2.0 的区别

5.1 为什么会有 CAN FD

  • 该协议能够支持更高的速率,可以更快的刷写 ECU
  • 在单个数据帧内传送率可达 64 字节,避免了经常发生的数据分拆传输的状况
  • 对汽车行业而言,CAN-FD 协议显得非常重要,CAN 线束和其它物理层面元件可重新再利用
  • 更高的带宽,在电动车以及今后的动力 CAN 上应用更有优势
  • 上层应用层架构不需要改变,在原来基础上扩展即可

5.2 CAN FD 是如何提速的

在这里插入图片描述

5.3 CAN FD 标准化

  • 2011 年,Bosch 发布了 CAN 替代总线 CAN FD 1.1 版;2015 年,ISO 11898-1——Classical CAN and CAN FD data link layer 正式将 CAN FD 标准化
    • 2012 年底到 2015 年中之间,有很多厂家已经开发了 CAN FD 产品,但是属于非 ISO 标准的 CAN FD 产品,并且已经有少部分产品已经在市场流通。而这些非 ISO 产品的供应商也没法完全收回或者销毁原有产品,所以这些供应商仍然需要解决这个问题
    • 非 ISO CAN FD 与 ISO CAN FD
      • 共同点:传输速率一致,数据长度一致
      • 区别:后者引入了一个 3 位的填充位计数器以及额外的校验位,另外,CRC计算值也不同,所以两者是不兼容的
      • 建议:所有的 CAN FD 应用,需注明 ISO CAN FD 或 non ISO CAN FD

5.4 CAN FD 的波特率

  • SAE 标准
    • SAE J2284-4:推荐汽车 CAN FD 网络应用采用 500k/2M 的波特率
    • SAEJ2284-5:推荐汽车 CAN FD 点对点通信应用采用 500k/5M 的波特率
  • CiA 标准
    在这里插入图片描述

5.5 CAN FD 数据帧格式

在这里插入图片描述

  • 32
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《嵌入式开发详解pdf》是一本介绍嵌入式系统开发的电子书籍。本书从嵌入式开发的基础知识开始,逐步介绍了嵌入式处理器、嵌入式系统的构建、嵌入式软件的开发、驱动程序的编写、RTOS的使用和嵌入式系统的调试等关键性内容。 本书重点讲述了嵌入式开发的设计原则和流程,为读者提供了详尽的嵌入式软件开发的实践知识。此外,该书还涵盖了许多嵌入式开发中的实用技巧和经验,如开发过程中的调试技巧、硬件与软件的协作、产品测试和验证等。 此外,该书还通过案例分析的方式,分享了一些嵌入式开发的成功实例以及遇到的问题和解决方案,帮助读者更好地理解嵌入式开发的各重要环节。此外,本书还讲述了最新的嵌入式开发技术趋势,如物联网、人工智能等。 总的来说,《嵌入式开发详解pdf》是一本深入浅出、内容丰富的嵌入式系统开发指南,对于从事嵌入式开发的工程师以及对该领域感兴趣的人士都是一本不可多得的好书。 ### 回答2: 《嵌入式开发详解》是一本非常实用的嵌入式系统开发指南,书中主要介绍了嵌入式系统的核心概念和原理,以及各种开发工具和技术的应用。 该书首先从嵌入式系统的基础知识入手,介绍了芯片架构、总线技术、存储器管理、中断处理等相关内容,为读者打下了坚实的基础。 接下来,书中详细介绍了如何使用C语言进行嵌入式系统的编程,包括常用的编译器、调试工具、调试技巧等方面的内容,让读者能够更加熟练地掌握嵌入式系统的开发技能。 此外,书中还涵盖了多种开发平台和开发环境,如Arduino、树莓派和嵌入式Linux等,让读者能够从多个角度深入理解嵌入式系统开发所涉及的方方面面。 总的来说,《嵌入式开发详解》通过理论与实践的结合,以通俗易懂的方式讲解了嵌入式系统开发的方方面面,成为了广大开发者入门、进阶和实践的必备参考资料,对于想要深入了解嵌入式开发的读者而言,是一本不可或缺的图书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值