自学内容网 自学内容网

【CAN通信】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、CAN通信简介

CAN(Controller Area Network 控制器局域网)在汽车控制领域较为常见,在汽车领域控制器的专业术语为ECU(Electronic Control Unit 电子控制单元),其内部集成了单片机、驱动系统、控制系统,ECU之间通过CAN总线进行相互通信;
在CAN总线通信出现之前,汽车上的电子产品基本都是点对点连接,随着控制器的增多,不但控制器本身接口数量大量增加,整车的线束布置和电气架构也变得极其复杂,制造成本和维护成本也随之上涨,CAN总线的应用大幅度缩减了信号线束长度,简化了车辆局域网结构,提高了通信总体的可靠性;

二、CAN通信的逻辑电平分析

单片机发送逻辑0、逻辑1的电平信号,通过CAN收发器可以转换成CAN HIGH、CAN LOW的差分信号,差分信号用两根数据线来表示一个信号,例如:
当CAN收发器接收到低电平信号时,CAN HIGH = 3.5v,CAN LOW = 1.5v,差分信号的电压差为2v,表示逻辑0;
当CAN收发器接收到高电平信号时,CAN HIGH = 2.5v,CAN LOW = 2.5v,差分信号的电压差为0v,表示逻辑1;
此外,收发器也可以将差分信号转换为普通的电平信号;

三、CAN通信的差分信号线设计

使用单一的高低电平表示逻辑0与逻辑1时,当信号线某一点受到干扰时,信号的电平就会产生跳变,这样会导致传输出现错误,从而不能进行长距离传输,而CAN通信的差分信号线是以双绞线的形式缠绕在一起的,当受到电磁干扰时,两根信号线产生同步的信号跳变,差分电压基本保持不变,数据传输基本不受影响,因此差分信号线的设计可以有效降低电磁干扰,可以远距离传输数据,在实际应用中CAN信号的传输距离可以达到1000m;

为了防止信号反射,差分信号线的两端需要各自接上一个120Ω的终端电阻,

CAN标准数据帧格式

在这里插入图片描述

起始位(1位):必定是逻辑0;

识别码(11):表示数据是发送给哪个设备的,每个设备具有11位唯一的识别码;

RTR(1位):用于区分数据帧或者远程请求帧,如果是远程请求帧,该位为1,如果是数据帧,该位为0;

控制码(6位):用于控制数据帧长度;
其第一位(IDE)用于区分数据帧的标准格式和拓展格式,在标准帧的标准格式中:IDE=0,数据帧有11位识别码,而在拓展格式中:IDE=1,数据帧有29位识别码;
第二位是预留位(空闲位),逻辑0;
剩下的4位是DLC(Data LInk Control)位,表示数据长度,二进制编码为0 - 8(二进制数字0000 ~ 1000表示0 ~ 8),如果DLC=1表示数据位只有一个字节(8位),如果DLC=8表示数据位有八个字节(64位);

CRC码(16位):循环冗余校验位,为了确保数据的准确性而设置的,设备接收端会根据数据计算出其CRC位,如果计算出来的和接收到的CRC不一致,说明数据传输异常,设备发送端重新发送一遍数据帧;

CRC界定符(1位):逻辑1,目的是把后面的信息隔开;

ACK码(2位):第一位是ACK确认槽,发送端发送的是逻辑1,而接收端恢复逻辑0来表示应答;第二位表示ACK界定位,为逻辑1;

结束位(7位):7位都是逻辑1,表示数据帧传输结束;

四、设备发送数据优先级

CAN总线架构中,当一个设备发送数据时,相当于广播,其余设备收听广播数据,当多个设备同时发送数据时,需要根据一定的规则来决定哪个设备先发送数据(仲裁);

CAN总线采用线与规则进行冲突仲裁:
通过识别码来界定数据发送优先级,当总线同时出现逻辑1与逻辑0信号时,总线会被置为成逻辑0,传递逻辑1的信号就不会再发送了;


总结

简单描述了CAN通信逻辑电平定义、差分信号的设计、标准数据帧格式。


原文地址:https://blog.csdn.net/weixin_46187287/article/details/143637513

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!