CAN bus 基础知识
CAN简介
CAN[Control(Controller) Area Network]是控制(器)局域网的简称
它是德国Bosch公司在1986年为解决现代汽车中众多测量控制部件之间的
数据交换而开发的一种串行数据通信总线。
现已被列入ISO 国际标准,称为ISO11898
CAN最初是为汽车的监测、控制系统而设计的,现已在航天、电力、石化、冶金、
纺织、造纸、仓储等行业广泛采用。在火车、轮船、机器人、楼宇自控、医疗器械、数控机
床、智能传感器、过程自动化仪表等自控设备中,都广泛采用CAN技术
CAN的主要技术特点
CAN网络上的节点不分主从,任一节点均可在任意时刻主动地向网络上其他节点发
送信息,通信方式灵活,利用这一特点可方便地构成多机备份系统
CAN网络上的节点信息具有不同的优先级,可满足对实时性的不同要求,高优先级
的数据最多可在134微秒内得到传输
CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低
的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而节省了总
线冲突的仲裁时间。
CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接
收数据,无需专门的"调度"
CAN的直接通信距离最远可达10km(速率5kbps以下);通信速率最高可达1Mbps(此
时通信距离最长为40m)。
CAN上的节点数主要决定于总线驱动电路,目前可达110个;报文标识符可达2032种
(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制
采用短帧结构,传输时间短,受干扰概率低,具有良好的检错效果。 。
CAN节点中均有错误检测、标定和自检能力。检错的措施包括:发送自检、循环冗余校验、
位填充和报文格式检查等。保证了低出错率。
CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响
。
CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。
CAN器件可被置于无任何内部活动的睡眠方式,相当于未连接到总线驱动器。这样
可降低系统功耗。其睡眠状态可借助总线激活或者系统的内部条件被唤醒。
CAN在汽车电子系统中得到广泛应用
现代汽车越来越多地采用电子装置控制,如发动机控制、注油控制,加速、刹车控
制(ASC)及复杂的防死锁刹车系统(ABS)等。
汽车内部所具有的控制器、执行器、监测仪器、传感器的数量很多,按模拟系统的
接线方式,一个传统车辆的典型连线束展开后,其长度约为1600多米,有将近300个接头
这些控制需检测及交换大量数据,因而引入CAN通信技术,组成汽车内部网络,以
适应控制与数据通信的需要。
世界上一些著名汽车制造厂商如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)
ROLLS-ROYCE(罗斯莱斯)JAGUAR(美洲豹)等都已开始采用CAN总线来实现汽车内部控制系
统与各检测和执行机构间的数据通信。
基于CAN总线的数据通信与网络技术在汽车行业有良好的应用前景
汽车内部网络的构成
汽车内部网络由一系列称之为ECU(电控单元)的不同功能部件作为网络节点而构
成的。
可分为动力、照明、操作、显示、安全、娱乐等多个子系统。
Motorola公司提出的基于CAN的汽车内部网络的解决方案。
动力系统采用传输速率大于250kbps的CAN网段,车身电子系统采用传输速率不小于
125kbps的低速CAN网段,两个子网之间通过中央模块实现互连。
汽车内部网络的解决方案 ( Motorola )
CAN通信技术
CAN的通信参考模型
CAN的通信模型的分层结构
数据链路层
包括逻辑链路控制子层LLC
LLC的主要功能是:为数据传送和远程数据请求提供服务,确认由LLC子层接收的报
文实际已被接收,并为恢复管理和通知超载提供信息
媒体访问控制子层MAC)
MAC子层主要规定传输规则,即控制帧结构、执行仲裁、错误检测、出错标定和故
障界定
物理层
物理层规定了节点的全部电气特性
CAN节点网络的连接
CAN总线的显位与隐位
显位(0)
VCANH: 3.5v
VCANL 1 1.5v
隐位(1)
VCANH 2.5v
VCANL 2.5v
CAN的帧类型
4种不同类型的帧:数据帧、远程帧、出错帧或超载帧
数据帧携带数据由发送器至接收器
远程帧用以请求总线上的相关单元发送具有相同标识符的数据帧
出错帧由检测出总线错误的单元发送
超载帧用于提供当前的和后续的数据帧的附加延迟
CAN的帧结构
数据帧由7个不同的位场(域)组成:
帧起始(1个显位),标志帧的起始
仲裁场、控制场、数据场、CRC场、应答场和帧结束(7个隐位)。
数据场长度可为零 。
CAN数据帧的组成
CAN2.0A 与CAN2.0B
CAN2.0A:
标识符的长度为11位,这些位从高位到低位的顺序发送,最低位为ID.0,其中最高
7位(ID.10-ID.4)不能全为隐位。
远程发送请求位(RTR)在数据帧中必须是显位,而在远程帧中必须为隐位
仲裁场由11位标识符和远程发送请求位RTR组成。
CAN 2.0B:
存在两种不同的帧格式,具有11位标识符的标准帧,29位标识符的扩展帧
标准帧与CAN2.0A相同
扩展帧的仲裁场由29位标识符和替代远程请求SRR位、标识位和远程发送请求位组
成,标识符位为ID.28至ID.0。
CAN数据帧的组成
远程帧
远程帧由6个场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。远程帧
不存在数据场。
远程帧的RTR位必须是隐位。
DLC的数据值是独立的,它可以是0~8中的任何数值,为对应数据帧的数据长度。
出错帧
出错帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,第二个场是
出错界定符
错误标志具有两种形式:
活动错误标志(Active error flag),由6个连续的显位组成
认可错误标志(Passive error flag),由6个连续的隐位组成
出错界定符包括8个隐位
超载帧
超载帧包括两个位场:超载标志和超载界定符
发送超载帧的超载条件:
要求延迟下一个数据帧或远程帧
在间歇场检测到显位
超载标志由6个显位组成
超载界定符由8个隐位组成
CAN bus 基础知识相关推荐
- PX4模块设计之四十一:I2C/SPI Bus Instance基础知识
PX4模块设计之四十一:I2C/SPI Bus Instance基础知识 1. 基础知识 2. 基础类和定义 2.1 ListNode类 2.2 List类 2.3 BusCLIArguments类 ...
- db9针232接口波特率标准_RS232和RS485与RS422接口的基础知识详细介绍
一.RS232基础知识计算机 与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式.由于串行通讯方式具有使用线路少.成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用 ...
- i2cdetect检测不到i2c设备_I2C基础知识入门
废话 I2C其实肝的我挺难受的,通讯协议这种规范往往可以抠出很多的细节,看了波叔的文章<万变不离其宗之I2C总线要点总结>,很详细.我打赌我还不会I2C,因为涉及到很多技术细节,在实际项目 ...
- 51单片机程序下载、ISP及串口基础知识
本文详细介绍了串口.51单片机的ISP下载等基础知识,已经学过单片机的也可以看看,加强一下对这方面的了解. 串口 串行接口简称串口,也称串行通信接口,是采用串行通信方式的扩展接口. 我们比较熟悉的US ...
- 【嵌入式Linux】嵌入式Linux驱动开发基础知识之LED模板驱动程序的改造:设备树
文章目录 前言 1.驱动的三种编写方法 2.怎么使用设备树写驱动程序 2.1.设备树节点要与platform_driver能匹配 2.2.修改platform_driver的源码 3.实验和调试技巧 ...
- 【嵌入式Linux】嵌入式Linux驱动开发基础知识之总线设备驱动模型
文章目录 前言 1.驱动编写的三种方法 1.1.传统写法 1.2.总线驱动模型 1.3.设备树驱动模型 2.Linux实现分离:Bus/Dev/Drv模型 2.1.Bus/Dev/Drv模型 2.2. ...
- 【嵌入式Linux】嵌入式Linux应用开发基础知识之I2C应用编程和SMBus协议及AP3216C应用编程
文章目录 前言 1.IIC协议和SMBUS协议 1.1.IIC协议 1.1.1.硬件框架 1.1.2.软件框架 1.1.3.读写数据格式 1.1.4.硬件结构--在硬件上是如何实现双向传输 1.2.S ...
- 【嵌入式Linux】嵌入式Linux应用开发基础知识之输入系统应用编程
文章目录 前言 1.输入系统应用编程 1.1.输入系统框架及调试 1.1.1.框架概述 1.1.2.编写APP需要的基础知识 1.2.调试技巧 1.2.1.查看设备信息 1.2.2.使用命令查看节点数 ...
- STC51-C51基础知识
1 单片机定义与结构 1.1 什么是单片机 单板机:将CPU芯片.存储器芯片.I/O接口芯片和简单的I/O设备(小键盘.LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构 ...
- AD(altium designer)15原理图与PCB设计教程(六)——印制电路板设计的基础知识
目录 序言 印制电路板的基础知识 印制电路板的结构和种类 印制电路板设计流程 新建PCB文件 PCB设计环境 将原理图信息同步到PCB 网络表的编辑 声明:该文只适用于学习,其内容包含来自书本的摘抄和 ...
最新文章
- 从校园情侣到教授夫妇,520当天他们携手发顶刊!
- 黄金时代:这个地区17所新大学建设,提速!
- linux之用wget下sublime简单使用总结
- 微软:这两个活动目录漏洞可使攻击者轻易接管 Windows 域名
- (二十五)深度学习目标检测:RCNN
- rsync and inotify
- OCEval-动态执行ObjectiveC的热修复方案
- 计算机频率原理,频率计工作原理介绍
- 安卓手机上计算机的各按键功能,手机按键里那些你不知道的功能
- java突然无法加载主类_Java 找不到或无法加载主类的修复方法
- Git之深入解析如何解决.git目录过大的问题
- 《菜鸟教程》C语言学习
- 我们算了笔账,月薪过万可能还不配结婚!
- PKUSC 2022游记
- 2019中国(北京)智能服务机器人展
- 百信社区-社区服务一体化
- 改注册表让win7/win8中的控制面板项的名字随心所欲
- OSS云文件列举分页功能的解决方法
- MIMIC-III 数据集处理 | OverflowError: Overflow in int64 addition 解决方法
- CSS一些简单的样式
热门文章
- 数据库是根和数据仓库是魂
- 计算机关闭地址栏历史,删除win10地址栏历史记录方法
- minus oracle 顺序_Minus 在oracle 中的用法
- 四大基本反应类型的关系_中学化学中的四种基本反应类型,氧化还原反应和物质的变化!...
- Civil 3D API二次开发学习指南
- 魔兽争霸无法在这个计算机,win10系统魔兽争霸按F1无法选中自己的英雄的图文办法...
- thinkcmf:Cannot redeclare cmf_get_date() (previously declared in
- 在 Activity 中添加 Menu 菜单
- Android 屏蔽Menu键
- opencv图像处理及视频处理基本操作