汽车电子学习笔记---CAN网络(二)

汽车电子学习笔记—CAN(二)

  • 1、CAN标准

    • CAN标准分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。
      底层标准:
      • CAN底层标准都相同,涵盖OSI模型中的物理层和数据链路层,与ISO/OSI模型的对应关系如下图所示:
        在这里插入图片描述
      • ISO 11898-1:数据链路层协议,描述CAN总线的基本架构,定义不同CAN总线设备在数据链路层通信方式
      • ISO 11898-2:高速CAN总线物理层协议,最高数据传输速率 1Mbps,应用为两线平衡式信号(CAN_H, CAN_L)
      • ISO 11898-3:定义低速CAN总线(LS-CAN, Fault-Tolerant CAN)物理层标准,数据传输速率在 5Kbps ~ 125Kbps 。Fault-Tolerant是指总线上一根传输信号失效时,依靠另外的单根信号也可以通信
      • ISO 11898-4:定义CAN总线中的时间触发机制(Time-Triggered CAN, TTCAN),定义与ISO 11898-1 配合的帧同步实体,实现汽车ECU之间基于时间触发的通信方式。

    上层标准:
    涉及到例如流控制、设备寻址和大数据块传输控制等,不同应用领域或制造商会有不同的做法,没有统一的国际标准
    在这里插入图片描述

  • 2、应用
    1)根据应用范围将车内CAN总线分为三类:

    • Convenience CAN /舒适CAN网络,主要控制车门窗、空调等设备,最高传输速度100 kbps
    • Powertrain CAN /动力CAN网络,主要控制动力相关设备,如发动机、制动、ABS等,最高传输速度500 kbps
    • Infotainment CAN /信息娱乐CAN网络,主要控制收音机、电话和导航等设备,最高传输速度100 kbps

    2)根据数据传输速度不同CAN总线分两类:

    • 高速CAN(ISO 11898-2):数据速率在 125kbps ~ 1Mbps,应用在实时性要求高的节点,如引擎管理单元、电子传动控制、ESP和仪表盘等;
    • 低速CAN(ISO 11898-3):数据速率在 5kbps ~ 125kbps,应用在实时性要求低的节点,主要在舒适和娱乐领域,如空调控制、座椅调节、灯光、视镜调整等

    3) CAN总线长度与信号速率关系
    在这里插入图片描述

  • 3、信号电平
    1)高速CAN

    • 定义 CANH 和 CANL 电压相同(CANH = CANL = 2.5V)时为逻辑“1”, CANH和CANL 电压相差 2V(CANH = 3.5V, CANL = 1.5V) 时为逻辑“0”

    • 实际过程中万用表量出的电压一般在 2.6—2.8V之间

    • 波形:
      在这里插入图片描述

    2)低速CAN

    • 定义CANH和CANL电压相差 5V (CANH = 0V, CANL = 5V)时为逻辑“1”, 相差 2.2V (CANH = 3.6V, CANL = 1.4V)时为逻辑“0”
    • 实际过程中万用表量出的电压一般在 2.2—2.4V之间
    • 波形:
      在这里插入图片描述
      3)总线逻辑
      显性(Dominant )为逻辑 0,隐性(Recessive )为逻辑 1。多节点同时发送时,遵行线and逻辑。
      在这里插入图片描述
  • 4、帧分类
    CAN总线定义四种帧类型:
    1)数据帧
    - 用于发送单元向接收单元传送数据的帧
    - 数据帧的帧结构图:
    在这里插入图片描述

    • SOF:表示数据帧开始;(1 bit),发出一个显性位边沿,网络节点以此开始同步
    • Identifier:标准格式11 bit,扩展格式29 bit包括Base Identifier(11 bit)和Extended Identifier(18 bit),该区段标识数据帧的优先级,数值越小,优先级越高;
    • RTR:远程传输请求位,0时表示为数据帧,1表示为远程帧,也就是说RTR=1时,消息帧的Data Field为空;(1 bit)
    • IDE: (1 bit)标识符扩展位,0时表示为标准格式,1表示为扩展格式;扩展帧和标准帧格式不同,不能存在于同一can网络
    • DLC:数据长度代码,0-8表示数据长度为0~8 Byte;(4 bit)
    • Data Field:数据域;(0~8 Byte)
    • CRC Sequence(15 bit):
      • 校验域,从sof到数据场的所有数据进行encode
      • 由发送方填
      • 校验算法G(x) = x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1;(15 bit)
    • DEL:校验域和应答域的隐性界定符;(1 bit)
    • ACK:(1 bit)
      • 应答域,确认数据是否正常接收,所谓正常接收是指不含填充错误、格式错误、 CRC 错误。
      • 发送节点将此位为1,由接收方进行确认,收到消息给出一个显性位0
      • 如果一个节点都没有确认收到消息,发送方监听此位为隐形位就会报错
    • SRR:替代远程请求位,在扩展格式中占位用,必须为1;(1 bit)
    • EOF:连续7个隐性位(1)表示帧结束;(7 bit)
    • ITM(3 bit):
      • 帧间空间,Intermission (ITM),又称Interframe Space (IFS),连续3个隐性位,但它不属于数据帧。
      • 帧间空间是用于将数据帧和远程帧与前面的帧分离开来的帧。数据帧和远程帧可通过插入帧间空间将本帧与前面的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间空间

    2)远程帧

    • 用于接收单元向具有相同标识符的发送单元请求数据的帧

    • 远程帧与数据帧的帧结构类似,区别:

      • 1、数据帧的 RTR 值为“0”,远程帧的 RTR 值为“1”
      • 2、远程帧没有数据块
      • 3、远程帧的 DLC 块表示请求发送单元发送的数据长度
    • 格式图
      在这里插入图片描述

    • 当总线上具有相同标识符的数据帧和远程帧同时发送时,由于数据帧的 RTR 位是显性的,数据帧将在仲裁中赢得总线控制权

    3)错误帧

    • 用于当检测出错误时向其它单元通知错误的帧

    • 错误帧的帧结构由错误标志和错误界定符构成

      • 错误标志
        在这里插入图片描述
      • 错误界定符:由8bit的隐性位构成
    • 结构图
      在这里插入图片描述

    4)过载帧

    • 接收单元通知发送单元它尚未完成接收准备
    • 发送过载帧的两种情况:
      • 1、接收单元条件的制约,要求发送节点延缓下一个数据帧或远程帧的传输
      • 2、帧间空间(Intermission)的 3 bit 内检测到显性位
    • 每个节点最多连续发送两条过载帧
    • 过载帧由过载标志和过载界定符(8 个隐性位)构成
      在这里插入图片描述
  • 5、仲裁机制

    • 优先级:标识符值越小,消息的优先级越高
    • Wire-AND Bus Logic:只有节点发送的全是隐性,总线电平才表现为隐性
      在这里插入图片描述
    • 仲裁逻辑
      • 所有发送节点在发送数据的同时,也检测总线上的电平状态,逐位对比总线上电平与自身发送的电平
        1)send 0 出现 1 :报错
        2)send 0 出现 0 :继续
        3)send 1 出现 1:继续
        4)send 1 出现 0:竞争失败,转为接收方
        在这里插入图片描述
        在这里插入图片描述
      • 竞争失败节点:会自动在检测到总线空闲的第一时间再次尝试发送
  • 6、条件接收

    • 消息在CAN总线上是广播式的,节点可以通过设置控制器中过滤码(Filter Code )和掩码(Mask Code),再检验总线上消息的标识符,来判断是否接收该消息
    • 对于掩码,“1”表示该位与本节点相关,“0”表示该位与本节点不相关
    • 举例说明:
      在这里插入图片描述
  • 7、位填充

    • CAN采用NRZ编码,没有单独的时钟线,它的优点是效率高,但却不易区分哪里是bit开始,哪里是bit结束。因此为确保在同步通信过程中有足够的电平跳变,规范中应用到位填充机制,即在每连续 5 个相同电平后插入 1个反相电平,接收节点在收到消息后自动将填充位删除
      在这里插入图片描述
    • 在帧内除了CRC界定符、ACK域和EOF外,其余部分均应用到位填充机制
    • 在应用到位填充的域,检测到连续 6 个显性位或隐性位均视为报错
    • 数据帧在位填充前后的比较图
      在这里插入图片描述
  • 8、错误检验

    • CRC错误
      1)在发送消息时,发送节点会根据特定的多项式计算出由数据帧SOF位到数据域最末位的Checksum值,并将该值放在数据帧的CRC域,随着数据帧广播到总线上
      2)接收节点在收到数据后,应用同样的多项式计算Checksum值,并与收到的Checksum值对比。如果两者一致,正常接收;如果不一致,则舍弃该消息,并发送错误帧请求发送节点重传消息
    • 应答错误(ACK Error)
      接收方会在收到消息后在ack应答位给出一个显性电平,如果发送方检测到该位为隐性,则报错
    • 格式错误(Form Error)
      检测出与固定格式的位段相反的格式时所检测到的错误,如检测crc界定符和ack界定符以及eof区域是否出现显性位
    • 位错误(Bit Error)
      比较输出电平和总线电平(不含填充位),当两电平不一样时所检测到的错误。如发送显性位,但总线是隐性位就报错
    • 填充错误(Stuff Error)
      在需要位填充的段内,连续检测到 6 位相同的电平时所检测到的错误
    • 区域图解
      在这里插入图片描述
  • 9、错误跟踪机制 error tracking

    • CAN总线上的每个节点控制器都会检测消息是否出错,如果节点发现消息出错,它将发送错误标志,从而打断总线上正常的数据传输。总线上其它没有发现原始消息错误的节点,在收到错误标志后将采取必要的措施,比如舍弃当前总线上的消息

    • CAN节点内部有两种错误状态计数器 :

      • 1)TEC /Transmit Error Counter,发送错误状态计数器,出现一次错误该计数器值 +8
      • 2)REC /Receive Error Counter,接收错误状态计数器,出现一次错误该计数器值 +1
      • 3)消息成功发送或接收一次,对应的 TEC 或 REC 值相应 -1
    • CAN规范定义了节点的 3 种基本错误状态:

      • 1) Error Active:正常状态,在此状态下,节点可以发送所有类型的帧,包括错误帧;发现错误后会很积极主动地上报错误
      • 2)Error Passive:节点可以发送除错误帧以外的所有帧;TEC or REC 计数超过127就进入此状态;此时,该节点发现错误后只会发送6个隐性位,不会把错误广播出去。并且,发送连续帧时,中间必须间隔8bit的延缓时间
      • 3)Bus Off:节点被控制器从总线上隔离;或者TEC大于255,就会进入这个状态,需要重启,或者等待128个11位隐性位电平
    • 节点错误状态切换图
      在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值