01-深入车载网络-CAN总线网络协议

发布时间:2026/10/7 4:18:08

01-深入车载网络-CAN总线网络协议 1 CAN协议总述1CAN协议发展历程2CAN国际标准ISO-11898经过几次更新Part1数据链路层和物理层相关规定 ISO-11898-1Part2高速介质访问相关规定 ISO-11898-2Part3低速容错和媒体专门接口相关规定 ISO-11898-3Part4时间触发通信相关规定TTCAN ISO-11898-4Part5低功耗模式下高速访问介质相关规定 ISO-11898-53CAN协议在OSI7层协议参考模型中的位置CAN协议属于物理层和数据链路层4CAN网络拓扑结构为总线型① 发送的信号所有结点都能收到② 一次只能有一个节点发送信号其他节点只能接收或等待③ 没有主控节点设备所有节点按照CAN协议自发竞争获得发送通道2 CAN协议物理层简介1信号传输需要两根线① CAN高和CAN低 即高速CAN和低速CAN。两根线配合同时输出/接受信号。② CAN总线中每个节点都要分别连接这两根线并且都要在两根线之间有120欧的终端电阻③ CAN线的传输速度与线长有关40m以内可以达到的最高速度传输速度1Mbps2两根信号线发出电压的规则容错CAN的标准除外当CAN高3.5V电压时CAN低只能1.5V其电压差称为差分信号为2V。称为显性信号表示二进制0当CAN高2.5V电压时CAN低只能2.5V其电压差为0V称为隐性信号表示二进制13CAN总线分为高速/低速两种标准高速CAN 500k~1Mbps低速CAN 125k~200bps左右高速CAN低速CAN和CAN_H/CAN_L不是一个东西请不要混肴3 CAN数据链路层简介作用规定传输二进制数据的规格、某个节点使用物理层的权限规则、传输错误控制等。1CAN传输二进制最小的单位——帧can帧类型4种分类型的目的是为适合不同的传输需求数据帧、远程帧、超载帧、错误帧2CAN数据帧的格式CAN报文格式SOF帧起始 EOF帧结束 DLC有效数据字节位标识符仲裁域区分不同帧可以设计不同帧发送不同类型的信息数据域发送的实际数据 CRC接收节点校验数据准确性 ACK接收节点应答位CAN 总线协议为了保证同步规定了一个规则如果在总线上连续出现 5 个相同电平的位比如 5 个 1 或 5 个 0发送器会自动插入一个相反电平的位称为填充位从 SOF 开始一直到 CRC 序列 结束这部分是参与 CRC 校验的也是需要进行位填充的区域。注意CRC 界定符、ACK 场、EOF 是固定格式不进行位填充3CAN数据帧数据域中的字节与位的序号高位在前低位在后4某个节点访问CAN总线的权限规则需要发送数据的节点自发地、竞争性地向CAN总线发送CAN帧CAN报文某个节点发出的CAN报文标识符报文id数值越小越有优先权向CAN总线发送这帧报文每个节点会一边发送标识符信号一边动态回读自己发的标识符信号如果发到某一位时 已经发现自己的值更大 就应该遵照协议要求退出竞争停止继续发送直到检测到一帧结束的标志EOF 再加3个间隔位 再继续开始下一次发送权竞争5BUS-OFF状态节点会对收/发的错误计数当节点对“发送错误”或“接收错误”的计数 255时应自动退出总线通讯此时称该节点进入BUS-OFF状态。该规定可以防止因一个节点错误影响整个网络。BUS-OFF状态的节点可按照一定规则自动尝试重新恢复CAN通讯或需等待故障检修后才能恢复ECU内的CAN控制器通讯。4 CAN工具软件工具canoe、BUSMASTER硬件工具万用表、示波器
延伸阅读

更多相关文章

2026/10/7 4:18:07

基于Wio Terminal与I2S麦克风的环境噪音监测系统设计与实现

1. 项目概述:用Wio Terminal打造你的环境噪音监测仪最近在捣鼓一个挺有意思的小项目,用Seeed Studio的Wio Terminal来测量环境噪音水平。这玩意儿本质上是一个集成了屏幕、按键和丰富传感器接口的微型开发板,拿来做这种实时数据采集和显示的项…

2026/10/7 4:15:14

GLSL vs HLSL:着色器编程语法对比与调试实战

从第一次在 Shadertoy 上看到那些让人起鸡皮疙瘩的实时渲染效果,到后来自己动手写游戏里的水面、雪地、体积光,GLSL 和 HLSL 这两个名字就一直绕不开。很多人把它们当成"着色器编程语言"这个概念本身,其实它们只是这个领域里最主流…

2026/10/7 4:15:14

claude-mem 记忆管理工具:架构设计、部署配置与召回策略实战

1. 项目概述与核心定位1.1 这个工具到底解决什么问题claude-mem 是一个为 Claude 对话场景设计的记忆管理工具。它的核心目标很直接:让 Claude 在跨会话、跨项目的使用过程中,能够记住之前聊过的内容、做过的决策、踩过的坑,而不是每次开新窗…

2026/10/7 4:15:14

前端架构师进阶:Nginx性能调优与高可用部署实战

去年有个线上活动,前端团队凌晨三点还在盯着Nginx日志,不是代码出了bug,是配置扛不住流量。那一刻我意识到,前端架构师学到后面,真正拉开差距的往往不是React或Vite,而是Nginx这套看似“运维才该懂”的东西…

2026/10/7 4:15:14

claude-mem:为Claude构建长期记忆系统的三层架构与工程实践

1. 从"聊完就忘"说起:claude-mem 到底想解决什么如果你用 Claude 做过稍微长一点的开发任务,大概率经历过这种崩溃瞬间:前面花了半小时跟它对齐了项目结构、命名规范、接口约定,结果聊到第 40 轮,它突然开始…

2026/10/7 4:15:14

在线特征系统设计实践:风控实时决策与一致性治理

简介:这是一份面向金融风控工程师、大数据开发及算法建模人员的智能风控在线特征系统实践分享。内容基于58同城2020年技术演讲,系统梳理了特征系统从离线到在线、从天级到秒级、从手动到自动的演进路径,并给出自然窗口、固定窗口、滑动窗口三…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑