导图社区 CAN和CANFD总线协议入门
CAN(Controller Area Network)和CAN FD(CAN with Flexible Data Rate)是两种常用的汽车通信协议,它们具有各自的特点和适用场景。以下是对CAN和CAN FD总线协议的入门介绍。
编辑于2024-12-12 21:07:42CAN和CANFD总线协议入门
一、CAN与CAN FD的概念总结
1. CAN是什么
I. 串行数据通信的完整性:能够可靠地传输数据。
II. 实时支持:提供低延迟的通信,适用于实时控制系统。
III. 高传输速率:最高可支持1 Mb/s的数据传输速率。
IV. 寻址能力:支持11位标识符的寻址方式。
V. 检错能力:内置多种错误检测机制,确保数据的准确性。
2. 传统CAN总线的局限性
I. 传输速率限制
II. 额外开销较大
1||| UDP:每个数据包大约1500字节,其中64字节为开销,开销比例较小。
2||| FlexRay:每个数据帧为254字节,开销为8字节,开销比例也较低。
3. CAN FD的推出
I. 提高传输速率:CAN FD支持更高的传输速率,能够满足现代应用对更高数据速率的需求,尤其是当速率超过1 Mbit/s时。
II. 扩展数据帧大小:CAN FD允许数据帧携带更多的字节,提升了总线的有效载荷。
4. CAN与CAN FD主要区别
物理层一致,区别在协议层
I. 传输速率不同
1||| CAN的传输速率
2||| CAN FD的传输速率
··CAN FD支持 两种速率,使其相比传统CAN具有更高的传输能力: 1、仲裁比特率(Arbitration Bitrate):最大 1 Mbps,与传统CAN相同。 2、数据比特率(Data Bitrate):可达到 8 Mbps,显著提高了数据传输速率。 ··在CAN FD中,数据域的传输速率可以更高,且支持两种速率的组合(仲裁速率和数据速率可以一致或不一致)。 ··具体实现上,CAN FD在数据传输过程中使用了 可变速率,使得数据域部分的传输速度更高。
II. 数据域长度不同
1||| CAN:最大数据域为 8字节。
2||| CAN FD:支持更大的数据域,最多可传输 64字节。这样大大提高了数据传输的效率,特别适用于需要传输大量数据的应用。
III. 帧格式不同
1||| 数据域长度:如上所述,CAN FD的最大数据域长度为64字节,而传统CAN为8字节。
2||| 字段扩展:CAN FD在数据字段后增加了新的标志位、扩展字段等,以支持更大的数据域和更高的速率。
IV. ID长度不同
CAN:采用 11位 标识符(标准帧)或者 29位 标识符(扩展帧)。
CAN FD:同样支持 11位 和 29位 标识符,但在一些特定配置下可能会使用不同的标识符格式,以支持更大的数据域和更高的传输速率。
二、CAN标准帧含义
1. CAN帧结构
I. 起始位(SOF,Start Of Frame):帧的开始,通知节点开始接收数据。
1||| 长度:1位
2||| 含义
表示帧的开始。起始位是一个固定的 显性(dominant)信号,表示CAN总线上的数据传输开始。它标志着一个新帧的到来,所有的节点都会监听并处理后续的数据。
II. 仲裁字段:标识符用于决策总线访问优先级,RTR位和IDE位则决定帧类型。
1||| 长度:11位(标准帧)+ 1位(远程请求位)+ 1位(IDE位)
2||| 包含内容:
1||| 标识符(Identifier)
:标准帧使用11位的标识符(ID)。标识符是用来标识消息优先级的,值越小,优先级越高。CAN协议采用非抢占式仲裁机制,标识符越低的消息可以优先获得总线的使用权。
2||| 远程请求位(RTR, Remote Transmission Request):
1位,指示该帧是数据帧还是远程帧(请求帧)。如果是远程帧,则这个位置为 1,否则为 0。
3||| IDE位(Identifier Extension Bit):
1位,用来区分标准帧(11位标识符)和扩展帧(29位标识符)。在标准帧中,IDE位为 0,表示使用11位标识符。
III. 控制字段:提供数据长度信息,决定数据部分的字节数。
1||| 长度:1位(RTR)+ 4位(数据长度代码DLC)
2||| 包含内容:
1||| DLC(Data Length Code):
4位,用于表示数据字段的字节数(0–8字节)。DLC的值与后续数据字段的实际字节数相对应。若DLC为4,则表示后续数据字段为4字节。
2||| RTR(Remote Transmission Request):
用于区分数据帧与远程帧(如上所述)。
IV. 数据字段:包含实际要传输的数据。
1||| 长度:0到8字节
2||| 含义:
实际的数据内容部分,最多可以传输8个字节(即64位)。这部分包含了实际传输的数据,DLC字段决定数据字段的长度。
3||| 备注:
在数据帧中,数据字段传输的是需要被接收节点处理的有效数据,而在远程帧中,这部分是空的。
V. CRC字段:用于确保数据的完整性,防止传输错误。
1||| 长度:15位(CRC序列)+ 1位(CRC分界符)
2||| 含义:
1||| CRC序列:
用来检测数据传输过程中是否发生了错误。CAN协议采用CRC-15校验算法,CRC序列会根据数据字段的内容动态计算生成,接收方使用相同的算法对数据进行检查,确保数据在传输过程中未被损坏。
2||| CRC分界符:
这1位是一个显性(dominant)信号,用于分隔CRC字段和ACK字段。
VI. 应答字段:接收方确认数据接收的成功。
1||| 长度:2位
2||| 含义:
1||| ACK位(ACK Slot):
1位,在数据传输后,接收方节点会在此位处发送应答信号。如果接收方成功接收到并验证数据,该位会被拉低(显性状态)。如果没有接收到有效数据,则保持为显性(1)。所有接收到帧的节点都会在此字段发送应答。
2||| ACK分界符:1位,作为分隔符,表明应答字段的结束。
VII. 结束位:标记数据帧的结束,告诉节点数据传输完毕。
1||| 长度:7位
2||| 含义:
表示数据帧的结束。结束位由七个 显性(dominant) 信号组成,指示消息的传输已经完成。
VIII. 填充位:确保数据帧符合长度要求。
1||| 长度:可选
2||| 含义:
在某些情况下,如果数据部分的长度不足某些要求(如数据和CRC的比特数之间的关系),则在结束前会自动添加填充位,确保数据的完整性和帧的有效传输。
IX. 扩展帧和标准帧的区别
标准帧使用11位标识符(11-bit ID)。
扩展帧使用29位标识符(29-bit ID),因此其帧结构会更加复杂。
2. CAN帧和CANFD帧区别
I. 帧格式(Frame Format)
1||| CAN标准帧(Classic CAN):标准帧使用的是11位标识符(ID)来区分不同的消息。
2||| CAN FD标准帧:CAN FD使用的是11位标识符(标准帧)或者29位标识符(扩展帧),而且支持更大的数据传输量。
II. 标识符长度(Identifier Length)
1||| CAN标准帧:标识符长度为11位,支持最多2048个标识符(标准ID)。
2||| CAN FD标准帧:标识符长度仍然为11位(标准帧)或者29位(扩展帧),但是支持更高的数据传输速率。
III. 数据字段长度(Data Field Length)
1||| CAN标准帧:数据字段的最大长度为8个字节。即,每一帧数据的最大负载为8字节。
2||| CAN FD标准帧:CAN FD支持最大64字节的数据字段。相比传统CAN协议的8字节数据负载,CAN FD显著提高了数据传输量,允许每帧传输更多的数据。
IV. 数据传输速率(Data Bitrate)
1||| CAN标准帧:最大数据传输速率为1 Mbps。
2||| CAN FD标准帧:支持更高的数据传输速率,数据比特率可高达8 Mbps。CAN FD支持在同一帧内使用两种不同的位速率:一个用于仲裁阶段(最高1 Mbps),另一个用于数据阶段(最高8 Mbps)。
V. 仲裁阶段(Arbitration Phase)
1||| CAN标准帧:在仲裁阶段,CAN标准帧使用11位标识符,并且所有节点通过竞选的方式来决定谁能获得总线的控制权。
2||| CAN FD标准帧:CAN FD使用与传统CAN类似的仲裁阶段,但在数据阶段,它支持更高的数据传输速率和更大的数据长度,能够在同一帧内实现更灵活的传输。
VI. 控制字段(Control Field)
1||| CAN标准帧:控制字段包含数据长度代码(DLC),该字段长度为4位,表示数据字段的字节数(0–8字节)。
2||| CAN FD标准帧:在CAN FD中,控制字段也包括数据长度代码(DLC),但是它支持的最大数据长度为64字节。因此,CAN FD的DLC字段实际上支持更多的数据长度。
VII. 位填充(Bit Stuffing)
1||| CAN标准帧:在数据传输中,遇到5个连续的相同位时,必须插入1个反位来避免帧同步问题,这叫做位填充。
2||| CAN FD标准帧:同样使用位填充,但在某些情况下,CAN FD允许更灵活的位填充和校验方式,以适应更高的数据速率。
VIII. CRC校验(CRC Check)
1||| CAN标准帧:CRC字段长度为15位,用于校验数据传输的正确性。
2||| CAN FD标准帧:为了适应更大的数据字段,CAN FD的CRC校验字段长度增加到了32位,用于检测更长数据字段中的错误。
IX. ACK位(Acknowledgment Slot)
1||| CAN标准帧:接收节点会发送ACK(应答)位,表明数据是否成功接收。ACK位为0表示数据成功接收,1表示接收失败。
2||| CAN FD标准帧:同样有ACK机制,但由于数据长度增加,CAN FD的错误检测机制和ACK确认过程会更复杂。CAN FD在数据阶段可能会进行更多的错误检测。
X. 帧结束和错误处理
1||| CAN标准帧:在错误发生时,CAN标准帧的错误处理机制相对简单。
2||| CAN FD标准帧:CAN FD有更复杂的错误检测机制(例如,CRC32和Stuff Check),并且能够在数据阶段实现更高效的错误检测和处理。
三、CAN与CANFD的优劣势
I. CAN优势
1||| 具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;
2||| 采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;
3||| 具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-bus 上,形成多主机局部网络;
4||| 可根据报文的ID决定接收或屏蔽该报文;
5||| 可靠的错误处理和检错机制;
6||| 发送的信息遭到破坏后,可自动重发;
7||| 节点在错误严重的情况下具有自动退出总线的功能;
8||| 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
II. CAN缺点
1||| 不一致性
2||| 不可预测性
3||| 信道出错堵塞
III. CANFD优势
1||| CAN FD提高位速率的同时提供更短的CAN帧
2||| CAN FD可以在CAN帧中容纳从8到64字节更多的数据