一、CAN协议的特点

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

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

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

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

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总线使用非归零编码(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的消息。

CAN协议学习(一)相关推荐

  1. 苹果ANCS协议学习【转】

    苹果ANCS协议学习 转自:http://www.cnblogs.com/alexcai/p/4321514.html 综述 苹果通知中心(Apple Notification Center Serv ...

  2. Servlet和HTTP请求协议-学习笔记02【Servlet_体系结构与urlpartten配置、HTTP请求协议】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  3. Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  4. RTMP协议学习笔记

    2019独角兽企业重金招聘Python工程师标准>>> RTMP协议学习总结 转载于:https://my.oschina.net/u/2374678/blog/746464

  5. 智能会议系统(9)---流媒体协议学习

    流媒体协议学习 一.协议篇 1. rtsp协议详解(http://www.mikewootc.com/wiki/net/protocol/rtsp.html) 2. rtp与rtcp协议详解(http ...

  6. TCP/IP协议学习(五) 基于C# Socket的C/S模型

    TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...

  7. POP3协议学习笔记

    今日得闲,于是将POP3的学习笔记也整理出来! 互联网上的TCP/IP,POP3/SMTP等资料多如牛毛,这里只是自己一点点心得,另外对于各位网络方面的大牛请安静的路过,我可不喜欢在关公面前耍大刀.. ...

  8. CoAP协议学习笔记 1.3 用UDP工具来调试CoAP

    1 前言 CoAP的调试,目前没找到好用的工具,网上说的火狐插件现在也不能用了,多希望手头的TCP/UDP网络调试工具就可以支持. 既然CoAP是基于UDP来组包的,那肯定是可以实现. 所以这篇文章给 ...

  9. CANopen协议学习

    CANopen协议学习 https://www.kvaser.cn/about-can/higher-layer-protocols/canopen/?renqun_youhua=174080

  10. 片上总线协议学习(1)——SiFive的TileLink与ARM系列总线的概述与对比

    link 片上总线协议学习(1)--SiFive的TileLink与ARM系列总线的概述与对比 finally 27 人赞同了该文章 一.背景介绍 随着超大规模集成电路的迅速发展,半导体工业进入深亚微 ...

最新文章

  1. 包装类java_java中的包装类
  2. Git之添加公钥之后git clone ****提示sign_and_send_pubkey: signing failed: agent refused operation
  3. 怎样让手中的钱成为生财工具
  4. java swing还有人用吗_Java不是自动管理内存吗,怎么还有内存泄漏?
  5. 面向计算机体系结构,面向计算机体系结构的程序优化.ppt
  6. MySQL的回表查询与索引覆盖查询
  7. python怎么过验证_Python3基础:如何验证你的代码
  8. 关于使用js的setAttribute和getAttribute取dom属性在ie ff safri下的问题
  9. 计算机无纸化考试合卷答题笔记卡,高级会计师无纸化考试攻略都在这 第一次考也不用慌...
  10. 什么是代理IP?怎么在浏览器中配置代理IP?
  11. reboot无法进入grub开机选单
  12. 使用scrapy框架做武林中文网的爬虫
  13. 倾斜摄影三维模型、激光点云、正射影像、数字高程模型如何实现在线浏览?
  14. 根据域名展示对应备案号内容的共用站点默认页面index.html
  15. OUC_软件工程_BLOG1
  16. VRRP和DHCP的设置
  17. python读取hdf文件 高效_Python解析HDF文件
  18. Acwing 游戏时间 C++ python
  19. keras 训练 loss和acc可视化
  20. 【华人学者风采】刘兵 伊利诺伊大学芝加哥分校

热门文章

  1. Java多线程编程模式实战指南(一):Active Object模式--转载
  2. adb shell dunpsys SurfaceFlinger
  3. C++ 八股文(一)
  4. 使用Java驱动ACR122U对IC卡进行读写
  5. 简述物联网感知技术_物联网中应用的感知技术
  6. java实现逆波兰表达式求值
  7. 台式计算机模拟软件,全国计算机一级Office2010+win7版考试模拟软件
  8. android shn1 获取_华为光猫获得Root Shell(shell的root权限)详细说明,接力sdgaojian发帖。...
  9. php 搜索多模型,基于迅搜(xunsearch) + Laravel Scout 实现 Laravel 学院全文搜索功能(支持多模型搜索)...
  10. android 关联dicom文件,基于Android的DICOM浏览器的开发