ADAS/AD控制器模块开发07 - CAN通信

前言

CAN通信模块对于汽车ECU来讲,算是最基本的模块了。与CAN通信模块同样基本的模块还有:基于CAN通信的UDS诊断模块、基于CAN通信的BootLoader刷写模块、基于CAN通信的EOL/Service/Online标定模块等。注意限定词“基于CAN通信的XXX”。

记得在德尔福工作时,问软件工程师都做什么样的高端编程工作,对方吐槽曰:“汽车软件三件套:诊断、标定、PBL”。一时语塞。冷静下来想想,其实也对。在外企上班,国内引用的技术都是在国外开发,到了国内都是平台化的技术,改的最多的也就剩诊断、标定、PBL了。注:PBL - Primary Bootloader,对应的还有SBL - Second BootLoader。

CAN通信

CAN的通信是通过CAN总线实现的。老东家博世公司发明的(PS:汽车工业哪都有他)。CAN通信都是以广播的形式发送接收消息的。不面向连接,不握手。

a. CAN总线中的OSI层:

按照OSI的七层架构物理层、数据链路层、网络层、传输层、会话层、表示层和应用层来分配的话,CAN总线只实现了物理层、数据链路层和应用层3层。原因是:CAN总线作为工业测控的底层网络,其信息传输量相对较少,网络连接方式相对简单,但是信息传输的实时性和可靠性非常高。

数据链路层在CAN总线中有分为逻辑链路控制(LLC)子层,和媒体访问控制(MAC)子层。逻辑链路控制子层的功能主要是报文滤波、超载通知和reset管理。媒体访问控制子层功能主要是传送规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。物理层功能主要定义信号传输方式、完成电气连接、实现收发器特性。

b. CAN总线的硬件:

CAN总线的硬件主要由MCU(单片机)、CAN控制器、CAN收发器(也叫CAN驱动器)、CAN高CAN低双绞线构成。其中,MCU负责实现应用层、CAN控制器实现数据链路层、CAN收发器和双绞线实现物理层。实际产品中,一般的车用MCU中会集成CAN控制器模块。所以实际上只有带CAN控制器的MCU+CAN收发器+双绞线三种物理实体(如果你非要把连接双绞线与ECU主板之间的连接器也作为CAN总线实体的一部分,那就算四种物理实体吧...)。注意,这里的MCU就是前面系统架构和软件架构中提到的那个单片机(Host)哦!车载MCU里能放代码的芯片也就那几种,MCU是主要类型之一。

其中,CAN控制器主要用于生成CAN帧,并以二进制码流的方式发送;在此过程中进行位填充、添加CRC校验、应答检测等操作;将将接收到的二进制码流进行解析并存储,在此过程中进行收发对比、去位填充、执行CRC校验等操作。此外,还需要进行冲突判断、错误处理等诸多任务。

CAN收发器则主要将来自CAN控制器的二进制码流转换为差分信号,向CAN高CAN低双绞线上发送;也将双绞线上的差分信号转换为二进制码流接收,并转给CAN控制器。

最后是CAN高和CAN低这对双绞线。一般CAN高这条线是黄色的,CAN低这条线是绿色的。CAN高和CAN低这两条线的电平在静止状态(default状态)时都为2.5V,这个电平也叫作隐性电平。当发送信号时,CAN高会

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值