CAN总线详解

1、简介CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。优点:传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。Ø低成本:ECUs通过单个CAN接口进行通信,布线成本低。Ø高集成:CAN总线系统允许在所有ECUs上进行集中错误诊…

大家好,又见面了,我是你们的朋友全栈君。

1、简介

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。

优点:

传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。

Ø 低成本:ECUs通过单个CAN接口进行通信,布线成本低。

Ø 高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置。

Ø 可靠性:该系统对子系统的故障和电磁干扰具有很强的鲁棒性,是汽车控制系统的理想选择。

Ø 高效率:可以通过id对消息进行优先级排序,以便最高优先级的id不被中断。

Ø 灵活性:每个ECU包含一个用于CAN总线收发芯片,随意添加CAN总线节点。

2、CAN总线网络

CAN总线详解

CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。

3、CAN收发器

CAN收发器的作用是负责逻辑电平和信号电平之间的转换。

CAN总线详解

即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。具体的引脚定义如下:

can总线原理

4、CAN信号表示

CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。

CAN总线详解

显性与隐性电平的解释:

CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low。当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。当有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。

按照定义的:

  • CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为”逻辑1″- 高电平。

  • CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为”逻辑0″- 低电平。

5、CAN信号传输

发送过程: CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

CAN总线详解

接收过程: CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

CAN总线详解

 

5、CAN数据传输

CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。

数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)

CAN总线详解

帧起始

由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;

帧结束

由7个隐形位(高电平)组成。

CAN总线详解

仲裁段

只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。

CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。

CAN总线详解

帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

img

数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合如图27所示。

CAN总线详解

数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。

 

注:更多详细请参考https://blog.csdn.net/liuligui5200/article/details/79030676

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125985.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GOPROXY_go map

    GOPROXY_go mapproxy顾名思义就是代理服务器的意思。GOPROXY是Go语言官方提供的一种通过中间代理商来为用户提供包下载服务的方式。要使用GOPROXY只需要设置环境变量GOPROXY即可。目前公

    2022年8月2日
    4
  • latex希腊字母表 加横线_latex花体字母怎么打

    latex希腊字母表 加横线_latex花体字母怎么打做成表格方便日常查看字母名称大写markdown小写markdownalphaAAα\alphabetaBBβ\betagammaΓ\Gammaγ\gammadeltaΔ\Deltaδ\deltaepsilonEEϵ\epsilonε\varepsilonzetaZZζ\zeta…

    2022年10月13日
    0
  • EagleEye论文+代码

    EagleEye论文+代码EagleEye论文+代码论文代码论文代码论文原作者的代码GitHub链接为EagleEye。下载数据集下载ILSVRC2012数据集。需要先注册账号并登陆。也可以直接用ImageNet数据集代替。如果觉得从官网下载的速度太慢,可以使用迅雷链接或百度云链接,网上都有很多。在这里,我推荐使用一个Linux多线程命令行下载工具aria2,可以达到稳定在5MB/s。安装python包问题一exportGIT_PYTHON_REFRESH=quiet这好像是一个和git有关的问题。解决

    2022年8月16日
    5
  • Iptables小总结

    Iptables小总结

    2022年3月12日
    35
  • jquery-TreeTable

    jquery-TreeTable1.从jeesite中剥离出来的http://www.cnblogs.com/hongyuniu/archive/2012/07/04/2575929.html下载:http://download.csdn.net/detail/u013147600/92426152.http://ludo.cubicphuse.nl/jquery-treeta

    2022年6月8日
    28
  • 项目接入即时聊天客服系统(环信系统)PHP后端操作

    项目接入即时聊天客服系统(环信系统)PHP后端操作

    2021年10月31日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号