我是一颗米(Icomi),本篇文章是去年在Valeo实习时候的学习笔记,再次学习然后输出分享
1.CAN总线为什么在汽车上这么常用?
我们把汽车想象位人体,CAN总线就是它的神经系统
实现了车身不同部位之间的通信

1.1如何进行通信
通过不同的CAN总线结点进行
这些结点被称为ECU(Electtronic Control Unit)
这些CAN结点就像是身体的不同部分

通过CAN总线相连后,一个节点的信息可以与其他节点共享
1.2在汽车中的ECU可以是什么?
可以是引擎控制单元,气囊,音响系统等

现代汽车通常有70多个ECU

那么CAN总线就像是局域网一样,让汽车能够与其他所有ECU进行通信
而无需复杂的专用布线
1.2.1 什么是无需复杂的专用布线?
若不用CAN总线,那么各个ECU之间的连接会如下所示

1.2.2如何进行通信?
ECU准备信息,通过CAN总线广播这些信息

我们的物理信息通过CAN总线线束进行
由CAN低线和CAN高线组成,广播的数据被CAN网络上的所有其他ECU接受,每个ECU都接受数据,并且检查数据,并且决定是否接受或者忽略他


CAN总线(Controller Area Network)

2.CAN总线为什么用差分信号?
我们知道CAN总线和RS485一样都是差分信号,经过CAN收发器之后,普通信号就会被转化为差分信号,差分信号用两根线表示为一个信号
CAN收发器也可以把接收到的信号转换为差分信号,转化为普通电平信号,然后再发送给单片机
2.1用差分信号的好处?
普通信号只有一根线,当产生信号影响的时候,他的电平就会发生跳变
这样就会导致传输出现错误,所以不能进行长距离传输。
CAN总线是两根线共同作用,即便是产生干扰,也是两根线同时受到干扰,他们的压差也会保持不变,这样就能保证传递的信息不受干扰,所以CAN信号传输的距离很长,可以达到1000M
3.CAN通讯在传递什么?
3.1识别码
根据这个十一位的识别码,就能知道这一帧数据是发送给哪一个设备的了,每一个设备都有属于自己的11位识别码,可以理解为地址
3.2RTR
RTR位是区分是数据帧还是远程请求帧,如果是数据帧这意味就必须是0,如果是远程请求帧这一位就必须是1
3.3控制码
控制数据长度
3.3.1IDDE
第一位是IDDE位,是用来区分标准格式和拓展格式的

3.3.2DLC(Data Linik Contro)
DLC即数据长度代码

他的二进制编码是0-8,如果是1,则后面的数据位就只有1字节,8位
3.4CRC

CRC码是为了确保数据的准确性而设置的
首先是15位CRC校验码
设备接收端会根据数据计算出他的CRC位
若计算出来的和接受到的CRC位是不一致的
说明数据有问题
就会重新发送一遍数据帧
下面一个是CRC的界定符
他是逻辑1
目的是为了把后面的信息隔开
3.5ACK
然后是两位ACK码
第一位是ACK确认槽
发送端发送的是逻辑1
接收端接受的是逻辑0
ACK界定位
必须是逻辑1
把后面的数据隔开
3.6结束位
最后都是逻辑1
是结束位
表示数据帧传输结束
4.两设备同时发送数据

如果两个设备同时发送信息,此时哪一个设备发送的信息优先呢?
这就得看11位的设备识别码了
他不仅是设备的身份证号
而且还代表了优先级

比如这两个信号是同时发出的
那么以谁为准呢
当总线上同时出现了逻辑0还有逻辑1的时候、
总线会被置为逻辑0
此后上面那个数据帧就不会在发送了
5.车灯上也会有CAN的运用吗?
有,如笔者所在Valeo视觉系统部门用youyetoo x1的x86开发板所做的车灯检测装置,就运用了CAN。
5.1当车辆的 ECU 需要控制车灯的状态时,例如打开或关闭近光灯、调节远光灯亮度、控制转向灯闪烁频率等,会通过 CAN 总线向车灯发送相应的指令。这些指令以数据帧的形式在 CAN 总线上传输。数据帧包含了目标车灯的地址(每个车灯在总线上有唯一的标识符)、具体的操作命令(如点亮、熄灭、调光等)和其他相关参数(如亮度级别)。
5.2车灯内部的控制器(一般集成在车灯的电路板上)会接收并解析这些 CAN 总线传来的指令,然后根据指令执行相应的操作。例如,当收到打开近光灯的指令时,控制器会接通近光灯的电源电路,使近光灯亮起。
实例:
1.假设车辆的驾驶员操作了灯光控制杆,想要打开远光灯。灯光控制杆连接到车辆的车身控制模块(BCM),BCM 作为 ECU 的一部分,会生成一个包含远光灯打开指令的数据帧。这个数据帧包括目标车灯(远光灯)的标识符、打开操作的代码以及可能的亮度默认值等信息。
2.该数据帧通过 CAN 总线传输,总线上的各个节点(包括远光灯控制器)会对数据帧进行监听。当远光灯控制器识别出数据帧是针对自己的指令时,它会对指令进行解析,然后激活远光灯的驱动电路,使远光灯亮起。同时,远光灯控制器还可以通过 CAN 总线向 BCM 反馈远光灯的状态信息,例如是否成功点亮、当前的亮度实际值等,以便 BCM 进行进一步的监控和控制。
CAN总线在汽车中的应用原理
331





