全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

一文详解CAN总线

时间:2023-09-24 12:07

人气:

作者:admin

标签: CAN总线  ecu  收发  总线协议 

导读:一文详解CAN总线-前面已经介绍了几种总线协议,那现在如果在汽车上实际应用一种总线协议来通讯的话,你会选择哪一种呢?...

前面已经介绍了几种总线协议,那现在如果在汽车上实际应用一种总线协议来通讯的话,你会选择哪一种呢?

答案是 都不行

因为在汽车中许多系统都需要实时控制,而且数据必须可靠,即使面对面对恶劣环境也要正常运行

如何解决这个问题呢?就要看CAN总线了

ECU

如何传输数据?

现在将车上的每个设备用一条总线连接起来

3737ec34-5a8f-11ee-939d-92fbcf53809c.jpg

要想CAN通讯,就必须要专门的CAN收发器,经过CAN收发器,普通信号就会转化成差分信号(差分信号由两根线表示)

374abb16-5a8f-11ee-939d-92fbcf53809c.jpg

如果输入0,CAN收发器的两根线分别输出3.5V和1.5V(压差为2V)

如果输入1,CAN收发器的两根线都输出2.5V(压差为0V)

375bd694-5a8f-11ee-939d-92fbcf53809c.jpg

为什么要这样表示数据?

想象一下,如果这条线是0V,受到了干扰,电压就会波动

378307aa-5a8f-11ee-939d-92fbcf53809c.jpg

379c3572-5a8f-11ee-939d-92fbcf53809c.jpg

如果是两条线缠绕在一起,用差分信号来表示数据的话,即使受到了干扰,也是两条线一起受到干扰,依旧存在压差

CAN数据格式

这是一帧完整的数据

最开始是起始位(始终为0)

然后是11位的识别码

37d2f620-5a8f-11ee-939d-92fbcf53809c.jpg

每一个设备都有唯一的11位识别码

37ee2882-5a8f-11ee-939d-92fbcf53809c.jpg

紧接着是RTR位用来区分数据帧(0)或远程请求帧(1)

37fd5cda-5a8f-11ee-939d-92fbcf53809c.jpg

接下来是6位控制码

3808d8d0-5a8f-11ee-939d-92fbcf53809c.jpg

其中第一位的IDE位是用来区分是标准帧还是拓展帧(标准帧有11位的识别码,IDE位为0;而拓展码有29位的识别码,IDE位为1)

381cb044-5a8f-11ee-939d-92fbcf53809c.jpg

下面是预留位,它是逻辑0

3845fac6-5a8f-11ee-939d-92fbcf53809c.jpg

剩下的4位为DLC位,表示数据长度

38549414-5a8f-11ee-939d-92fbcf53809c.jpg

每一个数值对应每一个字节(比如如图数值为8,对应数据长度为8个字节)

38641484-5a8f-11ee-939d-92fbcf53809c.jpg

接下来是16位的CRC循环冗余校验位,它是为了确保收到的数据的准确性

首先是15位CRC校验位,如果和接收到的CRC校验位不一致,就会重新再重发一次

3888b276-5a8f-11ee-939d-92fbcf53809c.jpg

最后是CRC界定位,目的是为了与后面的数据区分开来

3896f980-5a8f-11ee-939d-92fbcf53809c.jpg

然后是2位ACK码

第一位是ACK确认槽(发送端是1,接收端就是0)用来表示应答

第2位是ACK界定位(始终为1),目的也是为了和后面的数据区分开来,

38bc49e2-5a8f-11ee-939d-92fbcf53809c.jpg

最后是7位结束位(时钟为1)

如果用用差分信号表示,电平是这样的,如图所示

38d1e1e4-5a8f-11ee-939d-92fbcf53809c.jpg

如果此时总线上同时有2个设备发出控制信号,究竟优先执行哪一个设备的信号呢?

38ebaaca-5a8f-11ee-939d-92fbcf53809c.jpg

这就得看11位的识别码了,它不仅指定了哪个设备,还表示了优先级

38f64e12-5a8f-11ee-939d-92fbcf53809c.jpg

当总线同时为1或0,总线会被置为0(即优先执行电平0)

总结

了解完了CAN总线,或许会有一个疑惑点?

CAN总线和RS485是不是有点相似,对吧?

虽然的确有些相似之处,但CAN总线是专门用于汽车领域的,就比如数据可靠性,CAN总线检测到数据不一致,就会重新发送,而485就发一次,不管是不是正确的数据

审核编辑:汤梓红

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信