news 2026/5/27 14:25:10

CAN通讯协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CAN通讯协议

一、CAN物理层

1、电气特性

总线结构物理特征(左:闭环;右:开环):

CAN总线由两根信号线组成,使用的是差分信号,是一种异步通讯CAN总线网络的结构有闭环和开环两种,其对应标准分别在ISO11898(高速CAN标准)和ISO11519-2(低速CAN)中描述(对OSI七层模型中的数据链路层和物理层进行了标准化),两种标准对比如下图所示:

2、CAN的电平形式

CAN是差分通讯,总线电平分为显性电平(Dominant Level)和隐形电平(Recessive Level)两种,总线必须处于两种电平之一,总线上执行逻辑上的线与时,显性电平为0,隐形电平为1

二、CAN总线帧格式

帧类型 用途

数据帧 发送设备主动发送数据(广播式)

遥控帧 接收设备主动请求数据(请求式)

错误帧 某个设备检测出错误时向其他设备通知错误

过载帧 接收设备通知其尚未做好接收准备

间隔帧 用于将数据帧及遥控帧与前面的帧分离开

1、数据帧

帧起始(标准/扩展格式相同)

SOF(Start of Frame):帧起始,一个显性位,表示帧开始的段;

仲裁段(标准/扩展格式不同)

ID(Identify):

仲裁段,区分功能,同时决定优先级;

标准CAN有11位ID(ID28-ID18),扩展格式ID包含基本ID(ID28-ID18)和扩展ID(ID17-ID0);

禁止高7为ID全为1(隐形);

(标准ID)RTR(Remote Transmission Request ):远程请求位,区分数据帧和遥控帧;

(扩展ID)IDE(Identifier Extension):扩展标志位,区分标准格式和扩展格式;

(扩展ID)SRR(Substitute Remote Request):替代RTR,协议升级时留下的无意义位;

控制段(标准/扩展格式不同)

r0/r1(Reserve):保留位,为后续协议升级留下空间;

DLC(Data Length Code):数据长度,指示数据段有几个字节;

(标准ID)IDE(Identifier Extension):扩展标志位,区分标准格式和扩展格式;

数据段(标准/扩展格式相同)

Data:数据段,0~8个字节;

CRC段(标准/扩展格式相同)

CRC(Cyclic Redundancy Check):15位循环冗余校验,校验数据是否正确;

CRC界定符:1隐性位

ACK段(标准/扩展格式相同)

ACK(ACK Slot):应答槽位,发送方发送1(隐形),接收方回应0(显性),判断数据有没有被接收方接收;

ACK界定符:1隐性位

帧结束(标准/扩展格式相同)

EOF(End of Frame ):帧结束,7位隐形位,表示数据位已经传输完毕;

2、遥控帧

遥控帧无数据段,RTR为隐性电平1,其他部分与数据帧相同

image-20250703003936526

3、错误帧

总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备。

image-20250703004143875

4、过载帧

当接收方收到大量数据而无法处理时,其可以发出过载帧,延缓发送方的数据发送,以平衡总线负载,避免数据丢失。

image-20250703004226473

5、帧间隔

将数据帧和遥控帧与前面的帧分离开

image-20250703004322682

四、位时序

由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为4段,它们都由Time Quantum(Tq)的最小时间的那位组成。

同步段(SS)

传播时间段(PTS)

相位缓冲段1(PBS1)

相位缓冲段2(PBS2)

1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。

其中采样点位于PBS1结束后

段及其作用如下图所示:

位段

五、波特率的计算

其中每一个段的时间由Tq组成,Tq = 1/CAN时钟频率;

六、位填充

位填充是为防止突发错误而设定的功能。当同样的电平持续5位时则添加一个位的反型数据。如下图所示:

位填充

1、发送单元的工作

在发送数据帧和遥控帧时,SOF~CRC段间的数据,相同电平如果持续5位,在下一个位(第6个位)则

要插入1位与前5位反型的电平。

2、接收单元的工作

在接收数据帧和遥控帧时,SOF~CRC段间的数据,相同电平如果持续5位,需要删除下一个位(第6个

位)再接收。如果这个第6个位的电平与前5位相同,将被视为错误并发送错误帧。

七、附录

1、数据长度码和字节关系

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 16:55:01

【笔记篇】你好,放大器初识篇 学习笔记(1)

你好,放大器初识篇 杨建国1. 放大器定义、分类和选择使用一、放大器定义二、放大器的全家谱1. 晶体管放大器2. 运算放大器(运放)3. 功能放大器4. 特殊放大器:电子管放大器三、选择放大器的原则2. 运算放大器的关键指标详解一、输入…

作者头像 李华
网站建设 2026/5/26 4:16:44

16. Qt深入 容器

1. QVector 数组我们都非常熟悉,数据在内存中是连续分布的。这种结构的缺点是当元素很多时,除了在结尾添加一个新元素以及修改某个元素值之外,其他相关的函数(如最开头插入)执行起来会随元素增多而变慢。因为主要是保证…

作者头像 李华
网站建设 2026/5/26 20:32:02

Go 语言

安装go语言 https://golang.google.cn/dl/

作者头像 李华
网站建设 2026/5/26 12:23:45

**方言AI配音工具2025推荐,解锁多场景语音内容创作新体

方言AI配音工具2025推荐,解锁多场景语音内容创作新体验在短视频、有声书、本地化内容营销日益火爆的2025年,据《2025年中国数字语音产业发展报告》显示,超过65%的创作者开始尝试使用方言内容来提升作品的亲切感与地域穿透力。然而&#xff0c…

作者头像 李华
网站建设 2026/5/25 20:16:29

JConsole 中 GC 时间统计的含义

要理解 JConsole 中 GC 时间统计的含义,需结合 垃圾收集器类型​ 和 统计维度​ 拆解: 1. 关于 PS MarkSweep 上的 12.575 秒 (16 收集) PS MarkSweep:是 JVM 中用于清理 老年代(PS Old Gen)​ 的垃圾收集器(属于 Full GC 收集器,触发时会暂停所有应用线程,即 STW)。…

作者头像 李华