CAN协议学习(一)

CAN协议学习(一)一、CAN协议的特点1)在总线空闲时,所有单元都可以发送消息,两个以上单元同时发送消息时,对各消息的Identifier进行逐位仲裁比较,仲裁获胜的单元(具有较高优先级)可继续发送消息,仲裁失败的单元停止发送。2)消息中没有地址,消息广播到总线上,任何总线上的单元都可以接收消息。在总线上增加单元,不会影响到其它的单元。3)最高数据传输速率1Mbps(距离小于40m),最远传输距离10k…

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

一、CAN协议的特点

1)在总线空闲时,所有单元都可以发送消息,两个以上单元同时发送消息时,对各消息的Identifier进行逐位仲裁比较,仲裁获胜的单元(具有较高优先级)可继续发送消息,仲裁失败的单元停止发送。

2)消息中没有地址,消息广播到总线上,任何总线上的单元都可以接收消息。在总线上增加单元,不会影响到其它的单元。

3)最高数据传输速率1Mbps(距离小于40m),最远传输距离10km(速率低于5kbps)。CAN总线两个节点之间的通讯距离与波特率成反比。工程常用为500kbit/s的通信速率。

类型 最高速率 描述
高速CAN 1Mbit/s 最通用的CAN总线类型
低速CAN 125kbit/s 容错,在一条总线短路时仍能正常工作
单线CAN 50kbit/s 主要用低速的车身电子单元、舒适及娱乐控制领域

 

                                       CAN协议学习(一)

4)CAN总线上可挂载多个单元,理论上挂载单元数没有上限,但受总线的时间延迟和电气负载限制。降低通信速率,可增加单元数量。

5)所有单元具有错误检测功能,检测出错误后会立即通知其他单元。正在发送消息的单元一旦检测出错误,会结束当前的发送。

二、网络拓扑

CAN节点挂载在CAN_L和CAN_H之间,为降低反射,高速CAN在CAN总线两端增加了120Ω电阻,低速CAN和单线CAN在节点位置增加了电阻。低速CAN在总的终端电阻为100Ω时性能最佳,因此,确定低速CAN的终端电阻,需要先确定网络中的节点数,每个终端提供100Ω的一部分,并不要求每个终端有相同的阻值,但总值应该为100Ω。如总线中有3个CAN节点,则接到网络上的6个终端电阻值均为600Ω。

ææ¯å享å¾ç

对于高速CAN,当CAN_H – CAN_L < 0.5 时为隐性,即逻辑1;当 CAN_H-CAN_L>0.9V时为显性,即逻辑0。

对于低速CAN,当CAN_L = 5V, CAN_H = 0V时为隐性;当CAN_H = 3.6V,CAN_L = 1.4V时为显性。相较于高速CAN,低速CAN显性和隐性的电平差异更大,抗干扰能力更强,

单线CAN只有一根线,要求节点有较好的共地性,抗干扰能力较弱。

 三、总线仲裁

总线空闲时,任何节点都可以发送报文。如果同时有多个节点发送报文,会出现总线访问冲突,CAN使用逐位仲裁的方式解决冲突。在仲裁期间,每个发送器都对发送的 Identifier 电平与被监控的总线电平进行比较,如果电平相同,则继续发送报文。若发送器发送了一个隐性电平,而监视到一个显性电平,则节点仲裁失败,退出发送状态。因此,Identifier越小,消息的优先级越高。若在非仲裁期间出现发送电平与监视电平不一致的状况,将产生错误事件。

                            CAN协议学习(一)

四、消息机制

 CAN标准定义了四种消息类型,分别为数据帧、远程帧(也有称遥控帧)、错误帧和过载帧。

数据帧:发送器向接收器发送数据帧;

远程帧:接收器向发送器请求数据;

错误帧:任何单元检测到总线错误后发出错误帧;

过载帧:用于相邻数据帧和远程帧之间提供延时,由接收器发送,表示接收器来不及处理数据,请求延迟。

五、位填充

CAN总线使用非归零编码(NRZ),具有效率高的特点,但同步性能差。为保证同步通信中有足够的电平跳变,规范中应用位填充机制,在连续的5个相同电平后插入1个反相电平,接收节点收到消息后,自动将填充位删除。若检测到连续6个相同电平,则节点报错。

六、消息过滤

 消息在CAN总线上是以广播的形式传输的,但并不是所有节点都对总线上的信息感兴趣。节点可通过CAN控制器中的过滤码和掩码来检验消息的 Identifier 是否匹配,从而决定是否接收消息。

例:设置过滤码位 0x 00 00 15 60,设置掩码为 0x 1F FF FF F0,则节点只接收 Identifier 为 0x 00 00 15 60 ~0x 00 00 15 6F的消息。

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

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

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


相关推荐

  • kubernetes部署微服务_kubernetes离线安装

    kubernetes部署微服务_kubernetes离线安装微服务之容器化技术—kubernetes的安装

    2022年4月20日
    52
  • HTML与XML的区别(转)

    什么是HTML  HTML的全拼是Hypertext Markup Language, 中文也就是超文本链接标示语言。HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言。设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其它电脑上。我们只需

    2022年2月25日
    54
  • ipset基本用法和保存配置「建议收藏」

    ipset基本用法和保存配置「建议收藏」ipset基本用法ipset基本用法需要保存配置,不然重启会失效ipset基本用法1.创建ipset集合创建一个新的ipset集合:ipsetcreateSETNAMETYPENAMEipsetcreatebbhash:ip2.向集合中添加条目ipsetaddbb2.2.2.2ipsetaddbb192.168.10.21-192.168.10.313.查询条目ipsetlistipsetlistaa4.检查目标ip是否在ipset集合中ipsette

    2022年9月28日
    4
  • vue生命周期钩子函数(详解及使用场景)(什么是vue的生命周期)

    vue中生命周期钩子函数有哪些发布时间:2020-12-0713:07:03来源:亿速云阅读:94作者:小新这篇文章主要介绍vue中生命周期钩子函数有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue实例的生命周期钩子函数(8个)1、beforeCreate刚new了一个组件,无法访问到数据和真实的dom,基本上这个好像不能干啥2、createddata属性完成了…

    2022年4月12日
    156
  • C/C++指针参数赋值问题

    C/C++指针参数赋值问题

    2021年11月20日
    44
  • A Singular Value Thresholding Algorithm for Matrix Completion

    A Singular Value Thresholding Algorithm for Matrix Completion前提假设假设存在一个未知的方阵M∈Rn×nM\inR^{n\timesn}M∈Rn×n,其中存在有mmm个采样得到的实例:{Mij:(i,j)∈Ω}\{M_{ij}:(i,j)\in\Omega\}{Mij​:(i,j)∈Ω},其中Ω\OmegaΩ是基数为mmm的随机子集。换句话说,就是在MMM中,存在mmm个已知的元素。前言大部分秩为rrr的矩阵MMM可以通过求解下面的优化问题来解决:minimize⁡∥X∥∗ subject to Xij=Mij,(i,j)∈

    2022年5月29日
    35

发表回复

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

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