关闭

干货来袭!车载测试笔记:CAN基础知识!

发表于:2024-6-05 09:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:程序员与诗人    来源:CSDN

  CAN的初识
  01 CAN总线是什么
  CAN 是 Controller Area Network 的缩写,是 ISO 国际标准化的串行通信协议。通俗来讲,CAN总线就是一种传输数据的线,用于在不同的ECU之间传输数据。
  CAN总线有两个ISO国际标准:ISO11898 和 ISO11519。
  * ISO11898 定义了通信速率为 125 kbps~1 Mbps 的高速 CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度 ≤ 40米。
  * ISO11519 定义了通信速率为 10~125 kbps 的低速 CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。
  02 CAN的拓扑结构
  根据知识点介绍,大概画出了整体的拓扑结构(如下图),左边是低速CAN总线的拓扑结构,右边是高速CAN总线的拓扑结构。
  如图中所示,CAN总线包括CAN_H 和 CAN_L 两根线。节点通过CAN控制器和CAN收发器连接到CAN总线上的。
  ECU可以集成CAN控制器和收发器,也可以没有集成。
  03 CAN信号介绍
  在CAN总线上,利用CAN_H和CAN_L两根线上的电位差来表示CAN信号。CAN总线上的电位差分为显性电平和隐性电平。其中显性电平为逻辑0,隐性电平为逻辑1。
  ISO11898标准(125kbps ~ 1Mbps)和ISO11519标准(10kbps ~ 125kbps)中CAN信号的表示分别如下所示:
  04 CAN信号传输
  发送过程:
  CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。
  接收过程:
  CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。
  概括地讲:
  发送方通过使总线电平发生变化,将其信息传递到CAN总线上。
  接收方通过监听总线电平,将总线上的消息读入自己的接收器。
  CAN通信的特点
  01 多主工作方式
   所谓多主工作方式,指的是:总线上的所有节点没有主从之分,大家都处于平等的地位。反应在数据传输上,即是:在总线空闲状态,任意节点都可以向总线上发送消息。
  在多主工作方式下:
  最先向总线发送消息的节点获得总线的发送权;
  当多个节点同时向总线发送消息时,所发送消息的优先权高的那个节点获得总线的发送权。
  举例:Node_A和Node_B同时向总线发送各自的消息Msg_1和Msg_2,如果Msg_1的优先级比Msg_2高,那么Node_A就获得了总线的发送权。
  02 非破坏性位仲裁机制
  在CAN协议中,所有的消息都以固定的帧格式发送。当多个节点同时向总线发送消息时,对各个消息的标识符(即ID号)进行逐位仲裁,如果某个节点发送的消息仲裁获胜,那么这个节点将获取总线的发送权,仲裁失败的节点则立即停止发送并转变为监听(接收)状态。
  例如:Node_A和Node_B同时向总线发送各自的消息Msg_1和Msg_2,那么对Msg_1的ID号ID_1和Msg_2的ID号ID_2进行逐位仲裁,如果仲裁结果是:ID_1的优先级比ID_2高,那么Msg_1在仲裁中获胜,于是发出Msg_1这条报文的节点Node_A就获得了总线的发送权。同时,Msg_2在仲裁中失败,于是Node_B就转换到监听总线电平的状态。
  这种仲裁机制既不会造成已发送数据的延迟,也不会破坏已经发送的数据,所以称为非破坏性仲裁机制。这种仲裁方式的实现机制参见本系列笔记的第二篇CAN协议数据帧与遥控帧中的介绍。
  03 系统的柔性
  CAN总线上的节点没有“地址”的概念,因此在总线上增加节点时,不会对总线上已有节点的软硬件及应用层造成影响。
  04 通信速度
  在同一条CAN线上,所有节点的通信速度(位速率)必须相同,如果两条不同通信速度总线上的节点想要实现信息交互,必须通过网关。
  举例:汽车上一般有两条CAN总线:500kbps的驱动系统CAN总线和125kbps的舒适系统CAN总线,如果驱动系统CAN总线上的发动机节点要把自己的转速信息发送给舒适系统CAN总线上的转速表节点,那么这两条总线必须通过网关相连。
  05 数据传输方式
  CAN总线可以实现一对一,一对多以及广播的数据传输方式,这依赖于验收滤波技术。
  06 远程数据请求
  某个节点Node_A可以通过发送“遥控帧”到总线上的方式,请求某个节点Node_B来发送由该遥控帧所指定的报文。
  07 错误检测、错误通知、错误恢复功能
  所有的节点都可以检测出错误(错误检测功能);检测出错误的节点会立即通知总线上其它所有的节点(错误通知功能);正在发送消息的节点,如果检测到错误,会立即停止当前的发送,并在同时不断地重复发送此消息,直到该消息发送成功为止(错误恢复功能)。
  08 故障封闭
  节点能够判断错误的类型,判断是暂时性的数据错误(如噪声干扰)还是持续性的数据错误(如节点内部故障),如果判断是严重的持续性错误,那么节点就会切断自己与总线的联系,从而避免影响总线上其他节点的正常工作。CAN通信的上述特点都是基于CAN协议所定义的多种帧结构来实现的.
  CAN通信网络结构
  OSI基本参照模型
  实际上,CAN总线网络底层只采用了OSI基本参照模型中的数据链路层、传输层。而在CAN网络高层仅采用了OSI基本参照模型的应用层。
  以上就是CAN基础知识,看完之后是不是有一些了解了!
  你是否对车载测试感兴趣,想转行车载测试却无从下手呢?现在私聊恬恬圈/甜甜圈,或识别下方二维码,添加天天圈,了解车载测试入门吧↓↓↓
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号