网站首页 > 博客文章 正文
很难找到一篇能够适合初学者CAN总线原理的文章,因此小编本着通俗易懂的原则编写此文!
什么是CAN总线?
CAN总线应用于汽车,实现电子控制器和传感器之间的通信
? 高可靠性、低成本的通信协议。
? 最初由Robert Bosch于1986年开发。
? 主要应用于汽车、卡车、拖拉机、工业机器人。
想象一下,一辆汽车就像一个人:
? CAN总线是神经系统,使身体各部分之间的通信得以实现。
? ECU通过CAN总线连接,该总线相当于一个中央网络系统。
什么是ECU?
? 在汽车CAN总线系统中,ECUs可以是发动机控制单元、安全气囊或音频系统。
? 一辆现代汽车最多可以有70辆ECUs。
CAN总线5大特性
? 低成本:ECUs通过单个CAN接口进行通信,布线成本低。
? 高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置。
? 可靠性:该系统对子系统的故障和电磁干扰具有很强的鲁棒性,是汽车控制系统的理想选择。
? 高效率:可以通过id对消息进行优先级排序,以便最高优先级的id不被中断。
? 灵活性:每个ECU包含一个用于CAN总线收发芯片,随意添加CAN总线节点。
CAN总线发展史
? 未出现前:汽车ECUs依靠越来越复杂的点对点布线。
? 1986年:Bosch公司开发了CAN总线协议作为汽车电子解决方案,并在SAE大会上发布。
? 1991年:Bosch公司发布了CAN2.0,包涵CAN 2.0A (11 位) 和CAN 2.0B (29 位)。
? 1993年:CAN总线列入国际标准(ISO 11898)。
? 2012年:Bosch公司发布了CAN FD 1.0
? 今天:几乎每一辆汽车都有CAN总线系统,它广泛应用于卡车、公共汽车、工业车辆、船舶、飞机和工业自动化。
CAN总线的未来
展望未来,CAN总线将继续前行——而且更有可能是随着云计算、物联网和自动驾驶汽车的兴起。这些趋势还将增加可以使用WiFi /蜂窝网络连接的CAN总线的需求——允许无线传输的CAN总线数据,例如云服务器。
为了实现这一目标,CAN FD将是一个关键的组成部分。基本上,今天的CAN总线系统面临一个主要的障碍:1 Mbit/s的速度限制随着数据速度的复杂性和需求的增加(更多的ECUs,数据),这是一个越来越大的挑战。
? CAN FD提供两个关键的指标:
n 数据传输速率达到8Mbit/s——远远超出常规的1Mbit/s。
n 64字节的数据包——而不是8字节。
CAN总线物理结构与特性
CAN总线网络
CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻,但是为什么是120欧姆呢?那是因为电缆的特性阻抗为120欧。
CAN收发器
CAN收发器的作用是负责逻辑电平和信号电平之间的转换。
即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。具体的管教定义如下:
CAN信号表示
CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。
CAN收发器有TXD,RXD是与CAN控制器连接的。发送器接到网络的是CL和CH。CL与CH是差分电路。CAN网络上是用CL于CH的电压差来表示逻辑“0”和逻辑“1”。所以CAN网络中只能单向传输。
CAN仲裁
只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。
在仲裁期间,每一个发送器都对发送的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一"隐性"电平而监视到的是一"显性"电平,那么这个节点失去了仲裁,必须退出发送状态。如果出现不匹配的位不是在仲裁期间则产生错误事件。
帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
CAN总线通信协议
协议格式
序号 | 名称 | 位 | 描述 |
1 | SOF | 1 | 起始位,逻辑0使能,告诉其他ECU,消息即将到达。 |
2 | CAN-ID | 29 | 消息标识符,值越低优先级越高 |
3 | RTR | 1 | 远程传输请求标志位,允许ECUs“请求”来自其他ECUs的消息。 |
4 | Control | 6 | 数据包长度 |
5 | Data | 0-64 | 数据内容 |
6 | CRC | 16 | 16位循环冗余校验用于保证数据的完整性 |
7 | ACK | 2 | 应答标志,CRC是否校验正确 |
8 | EOF | 7 | 结束标识符 |
如何解析
下面是使用CANLoggerX000的汽车的一个示例日志文件:
# Logger type: CANLogger2000
# HW rev: 6.xx
# FW rev: 5.51
# Logger ID: ID0001
# Session No.: 9
# Split No.: 3
# Time: 20170508T064128
# Value separator: ";"
# Time format: 4
# Time separator: ""
# Time separator ms: ""
# Date separator: ""
# Time and date separator: "T"
# Bit-rate: 500000
# Silent mode: false
# Cyclic mode: false
Timestamp;Type;ID;Data
08T064254150;0;34d;1003fafa000d00ff
如果我们查看上面的原始CAN总线数据样本,可能会注意到:
原始的CAN总线数据没有意义!
这是因为我们需要将数据转换成按比例计算的工程值——也就是人类可读的形式。
要做到这一点,我们需要知道一些事情:
例如,在34d中的64位数据中,可能会有3个不同参数的数据,每个参数都有一个特定的起始点和位长。
针对这3个不同参数的数据,我们需要要知道如何解码:
每个参数都需要偏移量和刻度值
[数据值]=[偏移]+[刻度]x[原始数据值]
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
- 上一篇: Java多线程技术?
- 下一篇: 进大厂必备的Java八股文大全(2022最强精简易懂版)
猜你喜欢
- 2025-01-01 第一篇|Spark概览
- 2025-01-01 蔚来真题和答案,主打一个简单?
- 2025-01-01 ABB工业机器人编程指令函数程序数据等
- 2025-01-01 eNodeB启动和RRC连接建立
- 2025-01-01 硬盘SMART检测参数详解
- 2025-01-01 富集分析,看完这篇就够
- 2025-01-01 18个并发场景的设计模式详解,有没有你的盲区
- 2025-01-01 并发编程常见问题
- 2025-01-01 阿里架构师亲自梳理的:多线程与高并发知识点
- 2025-01-01 应读者要求讲讲 DMA
你 发表评论:
欢迎- 最近发表
-
- 告别频繁登录!Nuxt3 + TS + Vue3实战:双Token无感刷新方案全解析
- SpringBoot实现单点登录(SSO)的4种方案
- 随机密聊 匿名聊天室程序源码(随机匿名聊天在线)
- SpringBoot大文件上传卡死?分块切割术搞定GB级传输,速度飙升!
- Java 微服务从源码实战开始 | Gitee 项目推荐
- 轻量级埋点sdk搭建,便捷更全面(埋点sdk是什么)
- Spring Boot 实现文件秒传功能(springboot上传文件到指定文件夹)
- 项目中不用redis分布式锁,怎么防止用户重复提交?
- SpringBoot项目日志打印traceId生成
- 如何实现PC端网站扫码登录操作?(网页 扫码)
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)