白话CAN总线

CAN总线概念=>“控制器局域网总线”
单片机和单片机之间的通讯方式的一种,也许你听说过IIC,或者串口uart,亦或者SPI,如果都没有网线以太网应该应该知道把。CAN总线也是那个意思。只不过大家的传输协议不一样。
借一个图
在这里插入图片描述
图中可以看出,ECU1 ECU2(理解为控制器)是通过地下CAN网络连接到一起。前提条件是ECU里面的微控制器(MCU/单片机)带有CAN控制器才能组网。
ECU里面包含MCU,我这下面就简称MCU,MCU里面有CAN控制器,就好比手机里面带5G功能。不是所有的手机都有5G,也不是所有MCU带这个CAN控制器。有这个CAN控制器之后MCU外围加上收发器电路就可以直接接入CAN网络了,这是硬件前提。
在这里插入图片描述
这个图比较直观了。
CAN网络的两根线分别是CAN_H CAN_L,这两个是差分信号,如果这两条线接上示波器看到的信号传输像下面这样的,CAN_H CAN_L电平是相反的,这个基准电压是2.5V,不是0V.
在这里插入图片描述
这样的设计的目的是提高信号的干扰能力,就是保证数据传输的过程中不容易出错。
有了前面的认知,我们就进一步讲他的使用,
我这里先不讲介质层 物理层 链路层等东西,后面读者可以自己深入去看下,我这边主要是带读者快速入门,因为实际上我们在使用的时候,这些我们不是非常关心。
回到我们的ECU之间的通讯,他们会通过CAN控制器向CAN总线传输固定格式的数据。发送给数据和发送IIC数据和串口UART信息差不多的,只不过这个CAN数据是由格式规定的
在这里插入图片描述
简述:
ID+长度+内容+CRC
在这里插入图片描述
用工具抓举的报文截图
这是一张CAN数据传输的截图在这里插入图片描述
可以看到报文里面的一些Bit位是没有显示的,但是我们在示波器抓取的波形是能看到的

这样传输的一组数据,我们叫做 图上是一个标准帧
同时还有远程帧 错误帧 过载帧
一般的,我们应用代码发送CAN数据
填充部分地方只有ID 长度 和数据,如果有做校验还会把CRC填充上
CAN的类型还可以分Class CAN 和CAN FD,这里的CAN FD是高速CAN,他兼容Class CAN。但是格式是一样的。
这些数据我们可以叫做帧,或者报文。都是一个意思。
我们关注的点
1、ID,ID是这一帧的名字,或者标识符,我们通过这个ID做区分,
这个ID数值越小,优先级越高,
这个ID 长度是有规定的
■标准帧的帧ID长度是11位,也就是帧ID的范围是000-7FF
■扩展帧的帧ID长度是29位,也就是帧ID的范围是0000 0000-1FFF FFFF

2、长度,就是这一帧包含的有效数据长度
3、内容,即这一个帧的具体数据

CAN报文是广播的形式,一个ECU发出来,在这个CAN网络里面任何ECU都能收到。一般的我们用高速CAN速度为比特率500K,低速CAN速度为比特率125K,CAN FD一般用到2M甚至更高,看具体的情况而定。
而我们现在绝大多数汽车用的控制器通讯网络依然是CAN,LIN 和以太网的还是少部分。
车上的各种控制器(ECU)会往CAN总线发送各种报文信号,ECU会针对这些信号有选择的读取和回复。如果一个设备也通过CAN网络接入到总线,那么他就能监听到ECU的各种信息和状态了,比如汽车诊断仪读取故障码、清故障码,或者是黑客入侵。
CAN总线上有很多的报文传输,我们通过一个CAN分析仪,一头接入CAN总线,一头连接到电脑USB端口,通过电脑软件解析就能看到CAN总线上所有的数据了。
工程师在设计汽车控制器(ECU)软件的时候就会对ECU有需要的信息进行有选择性的收发,以达到这个控制器能正常的运作。

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李友一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值