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

CAN通信原理初步认识

目录

一、CAN总线通信的基本特点

(1)CAN总线是两根缠绕的双绞线

(2)CAN总线在传输0、1时候的规则

1.输出高电平到总线

2.输出低电平到总线

3.CAN总线具有电平转换功能

(3)为什么CAN通信要采取这样奇怪的电平值?

1.功耗发热更低

2.信号切换速度更快

二、隐性、显性信号

三、总线仲裁能力


        在通信领域,有许多协议,比如UART、IIC等。但是汽车协议选择了CAN通信,这是因为他有着其他协议不具备的一个最重要的优点-----抗干扰能力强。同时CAN总线和其他总线协议一样,让所有的独立元件通过同一总线与处理器进行通信,当一个独立模块想要和处理器交互消息的时候,先“唤醒”自己在总线中的睡眠,并占有总线,从而保证了数据的安全性。

        然而由于CAN通信的设计目的是以低成本的方式实现高质量的多从机设备通信,所以CAN总线是以单数据线的形式实现的(这里的单数据线并不是说数据只由一根线传递,实际上是两根数据线取差值得到的信号,强调半双工,同一时刻只能单向传递)

        比如一辆汽车有许多传感器,控制刹车的 ECU(Electronic Control Unit)、调节空调的模块、显示转速的仪表盘、监测胎压的传感器…… 这些设备需要 “互相传递消息到处理器”:刹车时,刹车 ECU 要告诉仪表盘 “现在在刹车”,也要告诉 ESP(车身稳定系统)“准备辅助制动”;胎压低了,传感器要把信息传给仪表盘报警。

        由于每个设备都会有一个独立的编号:001、002、003......从各个元件响应的重要性、即时性考虑,编号越小的设备会越快占据总线,优先级更高(在后面会说这是线与功能实现的总线仲裁)

一、CAN总线通信的基本特点

(1)CAN总线是两根缠绕的双绞线

        普通的通讯协议往往采取单根数据线、多根使能线;或者仅仅只有单根数据线同时完成数据传输+元件使能的作用。但是在汽车这样狭小的空间中,往往会有大量的电子元件遍布车身,如果还和以前以前采取单根数据线传输数据,就会有十分明显的电磁干扰现象。

        比如某个元件的正常通信逻辑是在数据线上传递0、1电平,分别由接地线和5V电源线输出,此时由于电磁干扰就会是数据线的电平状态不稳定,比如本来想要传输5V的高电平,此时被削弱成了3V。然而对方的芯片如果仅能识别5V左右的信号(输入容限范围较小),可能无法识别到你的3V高电平从而产生错误的消息理解,进而影响后续CPU的判断。

        而CAN总线将两根线缠绕在一起,就算外部有明显的电磁干扰,对他们俩的影响也是同步的(共模信号),他们的差值仍然不变,提高的信号的准确性。

         CAN的两根数据线被分为CAN_H 和 CAN_L,传递的是差模信号。其实CAN芯片内部一定是用到了差分放大电路来接收CAN总线上的数据。

        正是因为差模信号的稳定性,CAN通信往往在传输稳定性、传输距离都远优于其他通信协议。

(2)CAN总线在传输0、1时候的规则

1.输出高电平到总线

        CAN_H输出2.5V;CAN_L也输出2.5V信号。

2.输出低电平到总线

        CAN_H输出3.5V;CAN_L输出1.5V信号。

3.CAN总线具有电平转换功能

        CAN芯片从图中可以看到有8个端口,其中ECU设备占用一边的4个端口,而对边的两个端口连接到CAN总线上。

        在CAN协议中是识别的差模信号,但是许多其他的设备或者芯片并没有这样规定,而是在一根数据线上接收数据,所以CAN芯片就需要集成两种协议电平转换的功能。当信号从一根线输入时,CAN芯片需要将其转换为CAN协议规定的电平,施加到总线上;当设备想要从总线接收数据的时候,CAN还要能将差模信号反过来变成普通的单根线上的电平信号。

        即CAN总线具备电平转换功能。

(3)为什么CAN通信要采取这样奇怪的电平值?

        从我个人理解的角度,似乎用5V、0V的差模信号也能满足CAN协议的要求啊,那为什么实际工程上设计的规则是2.5、1.5、3.5这种奇怪的电平数据呢?

1.功耗发热更低

        更大的电压意味着更高的电流,即在电平切换、保持的时候产生个功耗较大。而CAN通信设计的原则是低功耗高质量通信设备,所以需要尽量别让电流损耗太大。

2.信号切换速度更快

        假设两种设计下,通信的速率是一致的,则意味着需要在同样的时间内完成5V-0V的转换、或者3.5V-1.5V的转换,明显高低电平的切换效率更高。

        CAN总线可以说是工程师们经过严密的计算和尝试得到的一种高性能协议。

二、隐性、显性信号

        CAN协议中规定:0(一个1.5V、一个3.5V)为显性电平;1(两个2.5V)为隐性。即只要总线上挂载的任意节点有人发送了显性电平,总线就体现显性。

        这是因为CAN总线对隐形状态2.5V时,CAN芯片处于高阻态,由电源和总线上串联的电阻自动拉到2.5V,而CAN芯片由于高阻态呈现类似断开的作用,对总线电平控制能力极其有限。高阻弱驱动。

        当输出显性状态时,CAN芯片会自动切换到低阻态,即从断路状态接入总线了。而CAN芯片内部会有功率管灯元件将CAN_H拉高到3.5V;将CAN_L拉低到1.5V。此时是由CAN芯片对总线的主动驱动。低阻强驱动。

        有没有发现这里高阻态和直接输出高低电平的特性,有点像数电中常说的三态输出门?本质就是这么简单!

        正是因为没有任何ECU的CAN芯片控制时,才能体现默认上拉电阻提供的电平2.5V(差模信号为0),所以我们称为隐性电平。而只要任意一个节点接管控制了总线,并且输出0信号(差模信号为2V),在强拉作用下就体现为0信号,所以称为显性信号。

三、总线仲裁能力

        上面对隐性、显性信号的分析,其实正是体现了“线与概念”。即只要有任何一个节点输出0信号,总线就会体现0,与数电中的OD门类似。

        回忆前面所说的,每一个ECU单元都会有一个自己的编号,越重要的ECU编号越小。比如刹车系统他的编号可能是001,而座椅按摩系统的编号是005。在二进制情况下就是0b001和0b101。

        当CAN芯片发送各自的编号时候,会从高位开始发送,于是刹车系统发送的是---0、0、1;而座椅按摩系统发送的是1、0、1。但是由于“线与功能”,总线在强驱动的作用下会优先体现0电平,于是总线呈现的状态是0、0、1。

        然后各个芯片在发送自己编号的时候,会实时监测总线的状态并和自己的编号一位位进行比对,当左移按摩系统的CAN芯片比对,发现第一位就对不上了:总线是0而我本身应该是1,说明有更高优先级的设备抢占了CAN总线,那么座椅按摩系统自动放弃对总线传输数据的想法,可能在一段时间后再次尝试,并且在这一瞬间切换成接收数据的状态(这个切换在极短时间内完成,不影响后续座椅按摩系统对接收数据的判定)。而刹车系统在毫无感知的情况下就抢得了总线控制权,进而对数据进行发送。

        同时CAN协议从高位开始发送的特点能最快的让二者比出结果,因为高位的数据权重更大,能快速区分高优先级和低优先级

http://www.dtcms.com/a/554616.html

相关文章:

  • 阆中市建设局网站首页梧州做网站的公司
  • 怎么写网站建设的说明网站点击量怎么查
  • 计网5.2 UDP
  • CMP(类ClouderaCDP7.3(404次编译) )完全支持华为鲲鹏Aarch64(ARM)使用 AI 优化库存水平、配送路线的具体案例及说明
  • seo最好的网站源码自己做游戏app的网站吗
  • 网站播放视频插件织梦cms零基础做网站
  • 网上购物网站制作命令删除wordpress 缓存
  • 整站优化排名大兴安岭网站建设
  • AI驱动的测试:用Dify工作流实现智能缺陷分析与分类
  • AI Agent 核心组件深度解析:规划、记忆与工具使用的底层逻辑
  • cms网站如何修改软件项目管理系统
  • 网站建设合同用缴印花税吗wordpress浮动关注我们
  • LeetCode 每日一题 2025/10/27-2025/11/2
  • 做的比较好的手机网站今天重大新闻50字
  • 做网站内容都有哪些做的好的网站有哪些
  • 2、两数相加
  • 合肥做网站维护的公司苏州网站开发公司济南兴田德润厉害吗
  • 顺序表vector--------练习题2题解
  • 后端开发 DTO-Entity-VO 转换模式详解
  • 做私人网站 违法设计制作生态瓶教学设计
  • snipaste免费版下载安装使用教程(附安装包)
  • 【openGauss】带有out参数的存储过程及自定义函数的重载测试
  • MATLAB高效算法实战技术文章大纲
  • 上海网站建设技术指导公司杭州知名的互联网公司
  • 从域名到网站网站建设报价单表格模板
  • 高效静电测试门禁通道闸成为静电的防线 蒙冬智能
  • 主流PD协议DRP芯片技术解析与核心优势
  • USB PD协议中的DRP技术:双向供电与数据传输的革新者
  • 局网站建设管理整改情况广西桂林
  • 从火情定位到隐患排查:三光吊舱助力救援模拟全流程