车载高速CAN(HighSpeed CAN)通信基本原理讲解

    本文主要以普及CAN通信基本原理为目的,如有从事相关领域或者有意从事车载嵌入式开发的读友们欢迎留言探讨。

    本文含有关键字如下。

    CAN通信应用,CAN的概要规格,CAN特征,CAN数据通信机制,CAN数据帧

CAN通信

     CAN是Controller Area Network(控制器区域网络)的缩写,它是一种串行总线协议,旨在代替用于连接组成车载应用程序的系统和传感器的传统多线配置方法。 CAN于1986年在SAE世界代表大会上正式发布,此后于2008年被要求在美国销售的车辆上使用CAN。 在开发CAN时,请记住,车载微控制器和设备可以在不通过主机的情况下进行通信。 单线或双线网络数据总线用于组件间通信,并且最高可以达到1 Mbps的通信速度。

    CAN网络由多个ECU(电子控制器单元)组成并且通过事先在ECU中写好的代码与所定义好的ECU进行互动并且实现汽车制造商所定义好的某一类功能(如汽车上的仪表盘就通过多个ECU互动将信息反映在仪表盘上)。车辆内部CAN参考图如下。

图1 CAN通信应用参考图

CAN的概要

   常用到的高速CAN(HighSpeed CAN)在ISO11898-2中的定义如下。

网络配置

多主竞争式(CSMA/CA方式)

通信速度

MAX1Mbps

传输类型

2线制

链接方式

总线类型

传输方式

半双工通信

同步方式

Recessive→Dominant时,所有节点同步

其他特征

● 系统灵活性(易于添加和删除节点)

● 错误检测/通知/恢复功能

● 内置控制器的通用MCU,收发器数量多,开发工具丰富

适用范围

用作独立系统间耦合、车辆运动控制系统等汽车核心单元的主网络

CAN特征

   连接到网络的通信设备一般称为节点,但在CAN中,它是电子控制单元(ECU)。通信线路称为总线,向总线传输数据称为总线访问。

图2 线型总拓扑概念图

     ECU(电子控制器单元)是由微控制单元(Microcontroller Unit;MCU) 与收发器(Transceiver)组成。ECU使用电子控制控制器不仅控制发动机和底盘控制之类的核心,而且还控制诸如前灯,汽车音响和空调之类的电气设备,从而为汽车的电气化和自动化提供支持。

     电子控制单元(ECU)一般由MCU和CAN收发器组成,CAN收发器向CAN总线或者MCU负责传输和接收CAN帧(CAN Frame),MCU则按照CAN通信协议进行进一步处理。

图3 ECU组成概念图

CAN的特性如下所示。

1.      线总线拓扑

连接多个节点的网络拓扑结构(对网络的形状进行建模)有环型、星型和线型,但CAN采用线型。 它具有简单的结构,可以轻松添加和删除节点以及设计网络。

图4 CAN线型总拓扑概念图

2.    多主争式总线结构,其中所有子控制 (ECU) 都充当主站

   只要总线空闲,就可以从任何单元开始通信。

   无需指定电子控制单元(ECU)即可发送,任何电子控制单元(ECU)都可以成为主站。

3.       CSMA/CA 方法根据级访问总线

   提前访问总线的单元可以获得发送权。

   如果多个单元同时开始发送,则发送优先级高(ID值较小)的报文的电子控制单元(ECU)获得发送权。在CSMA/CA方式中,尽量避免在使用总线的同时从其他节点传输数据,但现实中存在多个节点同时传输数据而发生冲突的情况。CAN 具有确定其优先级的通信仲裁机制。

4.      使用差分电压传输提高抗噪性能

   通过两条通信线(双绞线)产生的电压差传输数据。

   CAN 使用称为 CANH / CANL 的通信线路执行传输和接收。没有电位差的信号称为隐性(Recessive)信号,其逻辑值为1。具有电位差的信号称为显性(Dominant)信号,其逻辑值0。如果通信总线上发生显性和隐性(Recessive)冲突,则显性(Dominant)优先。

    由于从外部施加的噪声是相同的,因此不会产生电压差,即使产生噪声也不易受到影响。

图5 CAN差分电压原理图

5.      错误检测

所有电子控制单元(ECU)都可以检测到错误。

检测到错误的电子控制单元(ECU)立即将错误通知所有其他电子控制单元(ECU)。当发送消息的电子控制单元(ECU)检测到错误时,它会强制终止传输并重复传输,直到消息正常传输为止。

CAN数据通机制

   CAN 通信以称为帧(Frame)的单位进行。

   每个祯·(Frame)的作用如下所示。

l  数据帧(Data Frame)

发送单元向接收单元发送数据的帧。

l  远程帧(Remote Frame)

接收单元请求发送单元发送数据的帧。

l  错误帧(Error Frame)

当在传输/接收过程中检测到某些错误时,用于通知其他单元错误的帧。

l  超载帧(Overload Frame)

    接收单元通知它未准备好接收的帧。

   在CAN中,通过从需要数据的 ECU 发送远程帧并从具有该数据的 ECU 返回数据帧来建立通信。 排除数据帧中的控制位,实际可传输的最大数据量为 8 个字节(CAN FD 最多 64 个字节)。

   近年来,各个ECU之间的信息交换量变得非常大,因此为了降低总线占用率,很少使用远程帧,常见的是周期性地向各个ECU传输数据帧的方法。

CAN数据

   数据帧有两种帧格式:标准格式(Standard Format)和扩展格式(Extended Format)。

   在扩展格式中,在Base ID 11bit的基础上增加了ID Extension 18bit,可以表示一个总长度为29bit的ID。

   如果标准格式和扩展格式同时发送相同的ID,则标准格式优先。

l  标准格式(Standard Format):

图6 标准格式(Standard Format)数据帧

SOF(Start Of Frame),是一个 1 位显性区,用于通知数据帧的开始。

Arbitration Field(仲裁领域),判断帧优先级的区域。

       Base ID:设置标准 ID 11 位

       RTR:区分数据帧和远程帧

Control Field(控制领域),由IDE、FDF、DLC组成的区域。

IDE:区分标准格式和扩展格式

FDF:区分CAN和CAN FD的位

       DLC:代表数据长度

Data Field(数据字段),储存数据的区域。

CRC Field(CRC字段),判断帧传输错误的区域。

ACK Field(确认字段),表示正常接收信号的区域。

EOF(End Of Frame),用于通知数据帧结束的区域。

l  扩展格式(Extended Format) :

图7 扩展格式(Extended Format)数据帧

 仲裁字段和控制字段在扩展格式上不同于标准格式,其余部分与标准格式相同。

   扩展格式是一种常用于公共汽车和卡车等大型车辆的CAN通信的格式。

   Arbitration Field(仲裁领域),判断帧优先级的区域。

              Base ID:设置标准的 11 位 ID

              SRR:1 位隐性固定,带替代远程请求位

              IDE:标识符扩展位用于区分 1 位隐性固定、标准格式和扩展格式。

              ID Extension:可设置18位扩展ID,与Base ID共可显示29位ID。

              RTR:区分数据帧和远程帧

   Control Field(控制领域),由 FDF、r0、DLC 组成的区域。

              FDF:区分CAN和CAN FD的位

              R0:保留区域

              DLC:表示数据长度

作者:嵌入式攻城狮
文章来源:上汽零束SOA开发者论坛 
原文链接:https://bbs.z-onesoft.com/omp/community/front/api/page/mainTz?articleId=7531

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值