当前位置: 首页 > article >正文

【CAN通信】

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

文章目录

  • 一、CAN通信简介
  • 二、CAN通信的逻辑电平分析
  • 三、CAN通信的差分信号线设计
  • 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通信逻辑电平定义、差分信号的设计、标准数据帧格式。


http://www.kler.cn/a/385800.html

相关文章:

  • 智能化运维与AI/ML辅助决策:实现自动化与预测优化
  • 代码版本管理艺术
  • 【Linux系统编程】第四十六弹---线程同步与生产消费模型深度解析
  • 爬虫开发工具与环境搭建——开发工具介绍
  • 深入探索 Kubernetes 安全容器:Kata Containers 与 gVisor
  • STM32 学习笔记-----STM32 的启动过程
  • TVM计算图分割--LayerGroup
  • 大数据 ETL + Flume 数据清洗 — 详细教程及实例(附常见问题及解决方案)
  • gazebo仿真时xyz如何填写
  • AI赋能·创新视界——冠捷科技集团亮相第七届中国国际进口博览会
  • 无人机通信新宠 - SX1276
  • UDP协议:报文结构和注意事项
  • cesium 设置相机视角 flyTo 参数destination,orientation
  • 【算法】【优选算法】滑动窗口(上)
  • 几个docker可用的镜像源
  • Unexpected response code: 400解决
  • python 爬虫 入门 六、Selenium
  • 【网络安全】开发中存在的重定向与Referer问题
  • 【MySQL 保姆级教学】深层理解索引及特性(重点)--下(12)
  • lua入门教程:math
  • 麻省理工学院的研究人员最近开发了一种新的机器人训练方法
  • 互联网技术净土?原生鸿蒙开启全新技术征程
  • Tomcat中如何指定JDK版本
  • node.js版本管理工具nvm
  • 【dvwa靶场:XSS系列】XSS (DOM) 低-中-高级别,通关啦
  • ARM64的Mac Node.js前置工作,nvm在线安装