2024年5月6日发(作者:)

CAN总线协议

CAN总线协议是指控制器局域网(Controller Area

Network)的通信协议。CAN总线协议最初是由德国的博世公

司和美国的英特尔公司在20世纪80年代开发出来的。其主要

目的是用于汽车中各种电子系统的通信,例如电子控制单元

(ECU)。但是,现在这种协议已经被广泛应用于其他领域,

如航空航天、医疗设备、机器人和工业自动化等。

总线结构:

一个CAN总线可以被分为总线主控器(Bus Master)和多个从

设备(Slave Device)。总线主控器通常是一个集成了处理器

和CAN总线通信控制器的电子控制器。每个从设备包含一个

CAN总线通信控制器、一些传感器和执行器。CAN总线协议定

义了一个基于广播方式的分布式通信系统,可以使总线上的所

有设备相互交流。

CAN总线的特性:

1. 抗干扰能力高。CAN总线协议使用差分信号的方式进行通

信,具有较强的抗干扰能力。

2. 速度快。CAN总线协议的通信速度高达1Mbps,使得其适用

于高速通信系统。

3. 数据可靠。CAN总线协议采用了CRC(循环冗余校验)和

ACK(确认)机制,保证数据的可靠性。

4. 支持多设备接入。CAN总线协议支持多个设备接入总线,

这使得它非常适合于大型控制系统的应用。

5. 简单易用。CAN总线协议的编程接口简单明了,易于使用。

CAN总线协议的数据格式:

CAN总线协议定义了两种数据帧:数据帧(Data Frame)和远

程帧(Remote Frame)。

1. 数据帧:数据帧是一种常见的CAN总线数据格式,用于发

送数据。

数据帧由以下组成部分:

a) 比特时间:用于标志一个数据帧的开始。

b) 报文ID标识符:用于标识一个CAN总线上的数据帧。

c) 控制域:包含两个控制比特,分别用于控制CAN总线数据

帧的传输。

d) 数据域:用于传输数据。

e) CRC(循环冗余校验):用于检测数据传输中的位错误。

f) 结束位:标志一个数据帧的结束。

2. 远程帧:远程帧用于在总线上请求数据,而不是实际

传输数据。

远程帧由以下组成部分:

a) 比特时间:用于标志一个远程帧的开始。

b) 报文ID:用于标识一个CAN总线上的远程帧。

c) 控制域:包含两个控制比特,分别用于控制CAN总线数据

帧的传输。

d) 结束位:标志一个远程帧的结束。

总线控制:

在CAN总线协议中,总线控制由两种模式完成:报文描述符

(Message Descriptor)和报文过滤(Message Filtering)。

1. 报文描述符:报文描述符是一组编程接口,用于在CAN总

线上发送和接收数据。

报文描述符含有以下信息:报文 ID、数据长度、数据指针及

各种控制标志。

2. 报文过滤:报文过滤器可用于控制总线上数据帧的接

收。每个节点的过滤器可用于过滤发往该节点的数据帧。

总线错误控制:

CAN总线协议有两种错误处理方式:错误自动恢复

(Automatic Recovery)和自动重启(Automatic Restart)。

1. 意外错误:当数据帧不能被成功接收或成功发送时,CAN

总线会将此看作一次意外错误。

a) 错误自动恢复:这种模式下,CAN总线会尝试自动恢复错

误,并在成功发送或接收数据以后恢复正常运行。

b) 自动重启:当错误发生时,CAN总线会重新初始化,并返

回到初始状态。

2. 总线关闭:如果CAN总线出现严重错误,使得不能正

常通信,则CAN总线会关闭。

在总线关闭时,所有的传输操作都会停止,并且后续的通信必

须等待总线重新打开。

总结:

可以看出,CAN总线协议是一种适用于分布式控制系统的通信

协议。它具有速度快、数据可靠、抗干扰能力强等优点,并且

使用方便。CAN总线协议已经被广泛应用于汽车电子控制系统、

工业自动化、航空航天、医疗设备和机器人等领域,成为了现

代控制系统必不可少的通信方式。