[车联网] CAN总线详解 [转]

0 序

1 CAN总线-概述

1.0 简介

  • CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。

1.1 优点

  • 传输速度高。传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。
  • 低成本:ECUs通过单个CAN接口进行通信,布线成本低。
  • 高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置。
  • 可靠性:该系统对子系统的故障和电磁干扰具有很强的鲁棒性,是汽车控制系统的理想选择。
  • 高效率:可以通过id对消息进行优先级排序,以便最高优先级的id不被中断。
  • 灵活性:每个ECU包含一个用于CAN总线收发芯片,随意添加CAN总线节点。

1.2 CAN总线网络

  • CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输.
  • 为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。为什么是120Ω?因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线

1.3 CAN收发器

  • CAN收发器的作用是负责逻辑电平信号电平之间的转换。

即:从CAN控制芯片输出逻辑电平CAN收发器;然后,经过CAN收发器【内部转换】将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。
具体的引脚定义如下:

1.4 CAN信号表示

  • CAN总线采用不归零码位填充技术

也就是说,CAN总线上的信号有两种不同的信号状态,分别是: 显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。

  • 显性电平隐性电平的解释:
  • CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low
  • 没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平
  • 有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。
  • 按照定义的:
  • CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1" - 高电平
  • CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0" - 低电平

1.5 CAN信号传输

  • 发送过程CAN控制器CPU传来的信号转换为逻辑电平(即: 逻辑0-显性电平 或者 逻辑1-隐性电平)。CAN收发器(发射器)接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

  • 接收过程CAN发射器(接收器)CAN_HCAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

1.6 CAN数据传输

  • CAN总线传输的是CAN帧CAN的通信帧分成5种,分别为:数据帧远程帧错误帧过载帧帧间隔
  • 数据帧根据仲裁段长度的不同,而分为:标准帧(2.0A)和扩展帧(2.0B)。

帧起始

  • 由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;

帧结束

  • 由7个隐形位(高电平)组成。

仲裁段

  • 只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。

  • CAN总线控制器发送数据的同时监控总线电平

  • 如果电平不同,则:停止发送并做其他处理。
  • 如果该位位于仲裁段,则:退出总线竞争;
  • 如果位于其他段,则:产生错误事件。
  • 假设节点A、B和C都发送相同格式、相同类型的帧,如标准格式数据帧,它们竞争总线的过程是:

  • 帧ID越小,优先级越高。

  • 由于数据帧的RTR位为显性电平,远程帧为隐性电平。所以,帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

数据段

  • 一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合下图所示。

  • 数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。

X 参考文献

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章