系统合格性测试-CAN基础知识(2)

本文详细阐述了CAN总线的收发过程,涉及CPU与CAN控制器之间的信号转换,数据链路层中的帧结构(包括标准帧和扩展帧)、仲裁段、控制段等,并介绍了数据场、CRC校验和ACK机制。重点强调了报文ID的优先级在总线通信中的作用。
摘要由CSDN通过智能技术生成

这里我们再次讲解一下CAN的收发过程:

1  CPU接收过程

CAN收发器将CAN_H和CAN_L线上的差分信号(CAN_H电压CAN_L 电压)转换为逻辑电平(高低电平) /逻辑值(0或1)发送给集成在CPU上的CAN控制器,CAN控制器再将逻辑电平/逻辑值转换为数字信号值(可以理解为我们实际在总线上看到的某个ID的8/16字节数据)发送给CPU;

2  CPU发送过程

CPU将所表达的数字信号值发送给CAN控制器,CAN 控制器将数字信号值转换为逻辑电平/逻辑值发送给CAN收发器,CAN收发器再将逻辑电平/逻辑值转换为差分信号发送至CAN总线;

3  差分信号实际上和逻辑电平/逻辑值是一样的,只不过要通过不同的CAN芯片去转换为CPU所能理解的数字信号值;

4  在CAN控制器中,会将得到的逻辑电平/逻辑值,比如说得到了一串逻辑值为:111010110.它内部会通过数据链路层协议将其转换为数字信号值,也就是最后CPU得 到的实际信号值,比如: 0x111,00 11 22 33 44 55 66 77,我们也称其为数字信号值。

5 数据链路层

5.1  帧(报文)类型

数据帧、远程帧、错误帧等。我们使用最多是数据帧,它由七部分组成:帧起始、仲裁段、控制段、数据场、CRC场、ACK场、帧结束;根据仲裁段的长度又分为标准帧(11位)和扩展帧(29位)。

5.2  标准帧

5.2.1  帧起始

由一个显性位(低电平)组成。

5.2.2  仲裁段

存在帧1D (11位)和RTR <1位)两段,车企会根据车上模块的优先级为每个模块分配1D,并定义一个范围,但是RTR这1位必须为显性(RTR=0)。

[RTR:远程传送请求位]

5.2.3  控制段

长度为6位,分别由IDE (标识符扩展位,使用显性电平填充,即IDE=0)、R0(保留位,使用隐性电平填充,即R0=1)、DLC (数据长度,即DLC=4)组成。

5.2.4  数据场

也就是我们平常所看到的8个16字节的CAN数据,1个字节有8位,总共有64位。

5.2.5  CRC场

总线上使用CRC校验进行数据检错,意思是发送方依据发送的数据计算的CRC 值与接收方根据接收的数据计算出的CRC值相符合,即本次通信成功:。CRC 校验段由15位CRC值和1位CRC界定符构成。

5.2.6  ACK场

接收端通知发送端数据已正确接收。由1个ACK间隙(应答位)和1个DEL(应答分隔符,默认为隐性电平)构成,当接收节点正确收到数据(即从帧起始到CRC校验段都未发生错误)时,会在ACK间隙期间发送1个显性位以示应答,告诉发送节点此段 数据接收成功, 如果未被接收节点正确接收(即填充为显性电平),则代表此段数据未被正确接收,此时发送节点会发出错误帧。

5.2.7  帧结束

由7个隐性电平组成,表示本段数据发送完成。节点在检测到连续11个隐性电平时即认为总线当前处于空闲状态。

在CAN总线上,会根据报文ID划分优先级,一 般类似于发动机等重要模块的优先级 都很高,所以报文ID就会靠前,比如0x012,如果总线上同时存在两个及两个以上的报文, 比如: 0x111、0x210、0x211等,根据报文仲哉机制,优先级高的优先发送,即先发送0x111。

 

下一章节我们将会讲解数据场中数据的解析。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值