CAN总线学习笔记
CAN总线基础知识
1.CAN总线是什么?CAN(Controller Area Network)是ISO国际标准化的串行通信协议。
广泛应用于汽车、船舶等。
具有已经被大家认可的高性能和可靠性。
CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。
“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。
(显性电平比隐性电平更强)。
总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。
下图显示了一个典型的CAN拓扑连接图。
连接在总线上的所有单元都能够发送信息,如果有超过一个单元在同一时刻发送信息,有最高优先级的单元获得发送的资格,所有其它单元执行接收操作。
2.CAN总线的特点CAN总线协议具有下面的特点:1) 多主控制当总线空闲时,连接到总线上的所有单元都可以启动发送信息,这就是所谓的多主控制的概念。
先占有总线的设备获得在总线上进行发送信息的资格。
这就是所谓的CSMA/CR(Carrier Sense MultipleAccess/Collosion Avoidance)方法如果多个设备同时开始发送信息,那么发送最高优先级ID消息的设备获得发送资格。
2) 信息的发送在CAN协议中,所有发送的信息要满足预先定义的格式。
当总线没有被占用的时候,连接在总线上的任何设备都能起动新信息的传输,如果两个或更多个设备在同时刻启动信息的传输,通过ID来决定优先级。
ID并不是指明信息发送的目的地,而是指示信息的优先级。
如果2个或者更多的设备在同一时刻启动信息的传输,在总线上按照信息所包含的ID的每一位来竞争,赢得竞争的设备(也就是具有最高优先级的信息)能够继续发送,而失败者则立刻停止发送并进入接收操作。
因为总线上同一时刻只可能有一个发送者,而其它均处于接收状态,所以,并不需要在底层协议中定义地址的概念。
CAN总线心得总结(不可多得)
CAN总线心得总结(不可多得)CAN总线学习心得:zlg关于can帖子汇总SJA1000的常用标准波特率设置,为什么基本上都是单次采样?即使是低速的时候也是这样的,既然TSEG1的设置周期都很大,比如都大于10了,为什么不让他采样三次呢?答:是不好理解,但那是CiA推荐的值。
用51系列芯片和两个SJA1000接口还要外扩一个RAM,请问51的ALE能否同时与三个芯片的ALE管脚相连(地址不同)? 有哪位高手做过双SJA1000冗余的请指教答:能同时连接。
请问CAN总线在想传输1000m的情况下,最快的速度能到多少呢?答:50kbps = 1300m。
如果一个网络中只有2个节点,其中一个处于监听模式,另一个节点发送报文会使处于监听模式的节点进入中断吗?答:能进入接收中断,你自己的试验也可以证明。
想组建一个简单的CAN网络,已经有两个节点,我想问CAN总线如何组建,终端电阻安装在哪里?小弟还没有入门,大虾们指点一下。
答1:直接将节点CANH和CANL连到总线上,终端电阻接在总线两端,大约120欧。
答2:推荐北航出版《现场总线CAN原理与应用技术》,研读一下。
请问各位老师:我是一名can总线的新手,我正在做can总线的开发,控制器用sja1000t(我自己两个控制板互通),但我在发送数据后将出现总线关闭,我看到发送错误计数器在不断增加,直到0xff,最后恢复到0x7f,谢谢各位老师帮我解答这个问题。
或者对我给与启发答1;首先调通单个节点。
答2:这是单节点发送没有成功(或者由于网络中其他节点没有收到帧并在响应场响应);建议参考网站CAN应用方案。
我想请教各位can远程贞有何作用?如何应用?在什么情况下才需要用到远程贞?谢谢了!答:远程幀的用与不用完全取决你自己的协议,can有远程幀的功能,是可用可不用的!用网站提供的计算波特率的工具算出的数,12k以上的都正确,无论是自接收还是两个节点通讯都没有任何问题。
CAN CANopen学习笔记
PART1——CAN1 CAN 基础知识CAN 总线是一种通用的串行通信协议,包含OSI 网络模型中的物理层和数据链路层,全部通过硬件来实现。
CAN 总线不分主从,每个节点只要需要,都可作为主站,向网络上其他节点发送信息。
物理层主要是通过CAN 收发器来实现。
1.1 CAN 收发器CAN 收发器安装在CAN 控制器内部,负责逻辑信号和电信号的转换,也即信息的收发。
将逻辑信号转为电信号,并将其送入传输线;或者,将传输线的电信号转为逻辑信号。
传输线跟电线一样,分一高一低,即CANH 和CANL 。
TIPS :电信号,指随着时间而变化的电压或电流CAN 收发器如图1.1所示。
由一个电路进行控制,也意味着控制单元的某个时间段只能进行一个操作,收或者发。
图1.1 收发器原理图开关闭合输出低电平,用逻辑“0”来表示,即显性电平; 开关断开输出高电平,用逻辑“1”来表示,即隐性电平。
当总线上连接有多个节点时,只要其中1个节点输出低电平,则总线激活,总线电平为低电平;总线上所有节点都输出高电平时,总线电平才为高电平,此时总线未激活。
原理如图1.2所示。
图1.2 多节点收发器原理图1.2 CAN 总线终端电阻CAN 网络中,网络的源端(起始节点)和末端需各安装一个终端电阻。
注:上图所示电阻并非终端电阻。
有两种接法,一般采用左图接法,如图1.3所示,左边高速,右边低速。
主要作用是:● 提高总线抗干扰能力 ● 提高信号质量。
通过终端电阻来消除在通信电缆中的信号反射,在通信过程中,有两种原因导致信号反射:阻抗不连续和阻抗不匹配。
阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。
数据收发器与传输电缆之间的阻抗不匹配,这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱,为了提高网络节点的拓扑能力,CAN 总线两端需要接有120Ω的抑制反射的终端电阻。
图1.3 两种终端电阻接线方式1.3 CAN 报文CAN 总线的报文有5种类型,数据帧、远程帧、错误帧、过载帧和帧间隔。
CAN总线知识点概述
CAN总线知识点概述CAN全称为“ControllerAreaNetwork”,简称CAN,是国际上应用最广泛的现场之一。
在当前的汽车产业中,出于对平安性、舒服性、便利性、低公害、低成本的要求,各式各样的控制系统被开发出来。
出于这些系统之间通信所用的数据类型及对牢靠性要求不尽相同,且因多条总线构成的状况复杂、线束数量增强。
为了适应“削减线束的数量”、“通过多个LAN,举行大量数据的高速通信”的需求,1986年德国电气商博世公司开发出面对汽车的CAN通信协议。
此后,CAN通过IS011898及IS0 11519举行了标准化,在欧洲已是汽车网络的标准协议,CAN的高性能和牢靠性已被认同,并广泛应用于工业、船舶、医疗设备、工业设备等方面。
的特点1、CAN是一种多主总线,即每个节点机均可成为主机,他们之间都可举行通信。
2、硬件方面,通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1mb/s。
3、CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余校验、优先级判别等项工作。
4、CAN协议的一个最大特点是废除了传统的站地址编码,改为从通信数据块举行编码。
采纳这种办法的优点是可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种数据块编码方式,还可使不同的节点同时接收到相同的数据,这一点在分步式控制中十分重要。
5、数据段长度最多为8个字节,可满足通常工业领域中控制指令、工作状态及测试数据的普通要求。
同时,8个字节不会占用总线时光过长,从而保证了通信的实时性。
6、CAN协议采纳了crc检验并可提供相应的错误处理功能,保证了数据通信的牢靠性。
CAN总线所具有的极高的牢靠性和独特设计,特殊适合工业设各测控单元互连。
工业界的地位不行小觑,并已公认为最有前途的现场总线之一。
CAN总线基础知识总结(建议收藏)
CAN总线基础知识总结一、CAN总线简介1、CAN总线(Controller Area Network,控制器局域网)是由德国BOSCH(博世)公司在1986年为汽车而设计的,它是一种串行通信总线,只需两根线CAN_H和CAN_L。
2、隐性(逻辑1)与显性(逻辑0)的概念:CAN总线在数据传输过程中,实际上传输的是CAN_H和CAN_L之间的电位差。
CAN_H只能是高电平(3.5V)或悬浮状态(2.5V),CAN_L只能是低电平(1.5V)或悬浮状态(2.5)V,当CAN_H和CAN_L都为2.5V 时,是隐性,表示逻辑1,当 CAN_H为3.5V、CAN_L都为2.5V时,是显性,表示逻辑0。
表示隐性和显性逻辑的能力是CAN总线仲裁方法的基本先决条件,即所有节点都为隐性时,总线才处于隐性状态;只要有一个节点发送了显性,总线就呈现为显性状态。
3、120Ω电阻:必须在总线的每一节点的CAN_H和CAN_L之间接一个120Ω左右的电阻,以避免出现信号反射。
4、CAN技术规范CAN2.0A和CAN2.0B:CAN2.0A只有标准帧(标识符(ID)有11位);CAN2.0B除了标准帧,还有扩展帧(标识符(ID)有29位)。
5、CAN的国际标准ISO11898和ISO11519:CAN 协议经ISO 标准化后有ISO11898和ISO11519两种标准,它们对于数据链路层的定义相同,但物理层不同。
ISO11898 是波特率为125kbps-1Mbps 的CAN高速通信标准。
ISO11519 是波特率为125kbps 以下的CAN低速通信标准。
高速通信标准和低速通信标准的硬件规格也不一样,所以需要选用不同的收发器。
在收发器的规格书上都会注明高速通信用还是低速通信用,或者是符合ISO11898标准还是ISO11519标准。
6、CAN总线协议只定义了物理层和数据链路层,要将CAN总线应用于工程项目中必须制定上层的应用协议。
CAN学习笔记
笔记一:CAN传输的假想在学习笔记第一本中,最后一个个人秀,利用了两个CAN节点建立了简单的CAN 通讯,这回就强化一下CAN节点与节点之间通讯的概念。
传送这词在人们的脑海里就好想邮差送信的概念,邮差将一封封的信件逐个送到每一户目的地址,不过在CAN总线里通讯的节点们比起邮差的概念,“广播”的概念更贴切,广播有如电视台将节目广播开来,谁家只要搭起天线选择适合的频道就能接收到节目。
CAN总线的传输就是这么一回事。
换另一句话说:某个节点(假设节点1),发送报文在总线上,这时报文以广播的方式在总线上传输,如果当中两个点(假设节点2与3),他们拥有与报文标示符一样的接受代码的话,那么经过验收滤波动作,报文就会被接入它们RXFIFO当中。
当然还有一点要项必须注意,报文发送时必须先申请发送请求,然后报文才会发在总线上。
这个概念很重要必须稳固在脑海中。
笔记二:自检模式估计刚开始接触CAN的第一个实验就是PIAE的CAN自检测试,说老实话刚开始的时候我真的不明白自检模式到底时什么一回事,但是经过几个小时的测试后,终于得出结论,好了立马进入这篇笔记的主题吧。
回顾一下我们的好朋友模式寄存器,在MODR(模式寄存器)中的第三位也就MOD.2?它设置了节点的自检模式,自检模式说白了就是测试模式节点用来测试自己。
在图表中包含了一条信息,“using self reception request command”,这才是最关键,如果在报文发送的时候忘了给命令寄存器设置“自接收请求-self reception request”,自检模式时无法完成的。
(我就是遗漏了这条信息,苦了自己瞎搞那么久,哈哈)。
在自检模式中,节点包含了几个特性:(一)可以孤独的一个节点在工作(二)必须使用自接收请求命令发送报文(三)验收滤波动作无视,也就是说无视ACR,AMR的设置(四)报文标示符无视(五)节点依然参与总线概念图如以上图标的感觉(图凑合看就好了!呵呵),话多无用,还是开始编写程式。
can总线知识点
can总线知识点(原创版)目录1.CAN 总线的概述2.CAN 总线的基本原理3.CAN 总线的主要特点4.CAN 总线的应用领域5.CAN 总线的发展前景正文一、CAN 总线的概述CAN 总线,全称为控制器局域网(Controller Area Network),是一种用于实时控制的串行通信总线。
它最初由德国的 Robert Bosch GmbH 公司于 1980 年代研发,用于汽车电子设备的通信。
后来,CAN 总线逐渐被广泛应用于各种工业自动化领域。
二、CAN 总线的基本原理CAN 总线采用多主控制器结构,所有连接在总线上的节点(设备)都可以发送和接收信息。
总线上的节点通过消息帧进行通信,消息帧包含标识符、数据长度码、数据字段、CRC 字段和应答位等。
CAN 总线采用非同步传输方式,节点间的通信不依赖于固定的时间基准,而是通过消息帧中的定时器来同步。
三、CAN 总线的主要特点1.高速通信:CAN 总线的通信速率最高可达 1Mbps,适用于实时控制系统。
2.多主控制器:总线上的每个节点都可以主动发送信息,不存在固定的主从关系。
3.错误检测与纠正:CAN 总线具有 CRC 校验和应答位机制,可以检测到错误并进行纠正。
4.强抗干扰能力:CAN 总线采用差分信号传输,具有较强的抗干扰能力。
5.扩展性强:CAN 总线可以连接大量节点,最多可达 256 个。
四、CAN 总线的应用领域CAN 总线广泛应用于汽车电子、工业自动化、机器人控制、智能家居等领域。
例如,在汽车电子中,CAN 总线用于连接发动机控制单元、底盘控制单元、仪表盘等设备;在工业自动化中,CAN 总线可以用于传感器数据采集、机床控制等场景。
五、CAN 总线的发展前景随着物联网、工业 4.0 等技术的发展,CAN 总线在未来将发挥更大的作用。
同时,CAN 总线也在不断升级,如 CAN FD(CAN with Flexible Data rate)等新标准已经推出,以满足更高的通信速率和性能要求。
CAN总线入门总结
1. 简介CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。
CAN的容错能力特别强,CAN控制器内建了强大的检错和处理机制。
另外不同于传统的网络(比如USB或者以太网),CAN节点与节点之间不会传输大数据块,一帧CAN消息最多传输8字节用户数据,采用短数据包也可以使得系统获得更好的稳定性。
CAN总线具有总线仲裁机制,可以组建多主系统。
2. CAN标准CAN是一个由国际化标准组织定义的串行通讯总线。
最初是用于汽车工业,使用两根信号总线代替汽车内复杂的走线。
CAN总线具有高抗干扰性、自诊断和数据侦错功能,这些特性使得CAN总线在各种工业场合广泛使用,包括楼宇自动化、医疗和制造业。
CAN通讯协议ISO-11898:2003标准介绍网络上的设备间信息是如何传递的,以及符合开放系统互联参考模型(OSI)的哪些分层项。
实际通讯是在连接设备的物理介质中进行,物理介质的特性由模型中的物理层定义。
ISO11898体系结构定义七层,OSI模型中的最低两层作为数据链路层和物理层,见图2-1。
图2-1:ISO 11898标准架构分层在图2-1中,应用程序层建立了上层应用特定协议,如CANopenTM协议的通讯链路。
这个协议由全世界的用户和厂商组织、CiA维护,详情可访问CiA网站:can-cia.de。
许多协议是专用的,比如工业自动化、柴油发动机或航空。
另外的工业标准例子,是基于CAN的协议的,由KVASER和Rockwell自动化开发的DeviceNetTM。
3. 标准CAN和扩展CANCAN通讯协议是一个载波侦听、基于报文优先级碰撞检测和仲裁(CSMA/CD+AMP)的多路访问协议。
CSMA的意思是总线上的每一个节点在企图发送报文前,必须要监听总线,当总线处于空闲时,才可发送。
CD+AMP的意思是通过预定编程好的报文优先级逐位仲裁来解决碰撞,报文优先级位于每个报文的标识域。
更高级别优先级标识的报文总是能获得总线访问权,即:标识符中最后保持逻辑高电平的会继续传输,因为它具有更高优先级。
can总线的学习笔记
CAN学习手记1题记:在这信息爆炸的年代,学习一样新的知识,尤其是IT技术的学习,网络是必不可少的。
一阵狂搜过后,发现基于CAN总线的介绍确实不少,但是大多好像都雷同了,也许是不断转贴的结果吧。
而且这些知识点也都太零散了,让人看了,尤其是初学者有点找不着北的感觉。
所以,本着谦虚好学脚踏实地的菜鸟精神,决定把网上搜的,书上看的,再添油加醋的做一番比较系统的整理。
算是为学习CAN总线理清思路,快速上手打基础吧。
一、什么是CAN总线?CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。
最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。
实际应用中,节点数目受网络硬件的电气特性所限制。
例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。
CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。
另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
二、CAN 总线是如何发展的?CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。
当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。
提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的表1 OSI开放系统互连模型CAN能够使用多种物理介质,例如双绞线、光纤等。
最常用的就是双绞线。
信号使用差分电压传送,两条信号线被称为“CAN_H”和“CAN_L”,静态时均是2.5V左右,此时状态表示为逻辑“1”,也可以叫做“隐性”。
CAN总线基础知识学习笔记
CAN总线基础知识学习笔记依照瑞萨公司的《CAN入门书》的组织思路来学习CAN通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成笔记。
好记性不如烂笔头,加油!1 CAN的一些基本概念1.1 什么是CAN总线CAN 是Controller Area Network 的缩写,是ISO 国际标准化的串行通信协议。
通俗来讲,CAN总线就是一种传输数据的线,用于在不同的ECU之间传输数据。
CAN总线有两个ISO国际标准:ISO11898 和ISO11519。
其中:ISO11898 定义了通信速率为125 kbps~1 Mbps 的高速CAN 通信标准,属于闭环总线,传输速率可达1Mbps,总线长度≤40米。
ISO11519 定义了通信速率为10~125 kbps 的低速CAN 通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。
Tips: :又称为总线的通信速率,指的是位速率。
或称为比特率(和波特率不是一回事),表示的是:单位时间内,通信线路上传输的二进制位的数量,其基本单位是bps 或者b/s (bit per second)。
1.2 CAN的拓扑结构下图中,左边是高速CAN总线的拓扑结构,右边是低速CAN总线的拓扑结构。
如图中所示,CAN总线包括CAN_H 和CAN_L 两根线。
节点通过CAN控制器和CAN 收发器连接到CAN总线上。
TIps :通常来讲,ECU内部集成了CAN控制器和CAN收发器,但是也有没集成的,需要自己外加。
1.3 CAN信号表示在CAN总线上,利用CAN_H和CAN_L两根线上的电位差来表示CAN信号。
CAN总线上的电位差分为显性电平和隐性电平。
其中显性电平为逻辑0,隐性电平为逻辑1。
ISO11898标准(125kbps ~ 1Mbps)和ISO11519标准(10kbps ~ 125kbps)中CAN信号的表示分别如下所示:1.4 CAN信号传输发送过程: CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。
CAN总线总结
CAN总线技术学习(一)CAN总线是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是德国BOSCH公司开发,是国际上应用最广泛的现场总线之一,CAN总线已成为汽车计算机和嵌入式工控局域网标准总线。
为了全面了解CAN总线,需要先对其有个整体的概念,这中间还有一个小故事,一个应届毕业生到公司去应聘,负责招聘的经理问他:“你会哪方面的技术?”,毕业生说:“我会CAN总线”,经理疑惑的问:“你会看什么总线?”。
那么什么是CAN总线呢?1、首先CAN总线是一种串行总线,不是并行的,是用来传输电子数据的,就像串口总线、USB总线、以太网一样;2、CAN总线是半双工传输模式,发的时候不能收,收的时候不能发;3、CAN总线使用双线传输,一根定义为CAN_H,—根定义为CAN_L,使用差分信号传输(差分信号就是通过计算两线压差);4、CAN总线的波特率最高可达1Mbps,传输距离最远10公里,传输波特率和传输距离成反比,波特率越高有效传输距离越短;5、组网时总线两端CAN_H和CAN_L之间要分别连接一个120欧的终端电阻(起吸收反射波、高频抗干扰的作用)。
那么CAN总线有什么优势呢?1、CAN总线作为现场总线只有两根传输线,比以太网组网简单,成本也低很多,在不需要大数据量传输的设备通讯上有相当的优势;2、CAN总线使用差分信号和屏蔽线传输,抗干扰能力强,数据传输稳定,因为在某点有干扰时两根信号会被同步干扰,不会影响信号传输的信息;3、CAN总线波特率最高可达1Mbps,传输速率相对串口快很多,同时总线协议中加入CRC校验,相对于串口的奇偶校验,数据安全性强;4、CAN总线使用差分双线传输,易于组网,布线简单;5、CAN总线通讯不分主从,网络上每个设备都可以主动发送数据;6、CAN总线协议应用非破坏性逐位仲裁机制,即通过发送帧的帧ID的大小作为优先级判断网络上数据发送冲突,优先级高的信息发送,优先级低的数据停止发送,极大提供总线的利用率;7、CAN总线协议设置对发送的自动重发机制,当发送监测到发送冲突时,停止发送,等总线空闲后自动重发;8、通过设置总线控制器中验收寄存器和屏蔽寄存器,可以使节点在硬件层允许接收某些帧或屏蔽接收某些无用帧,节约单片机ECU接收和判断处理的时间。
CAN总线相关知识点归纳(1)
CAN总线相关知识点归纳I概述CAN (Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。
想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel) CAN 有很多优秀的特点,使得它能够被广泛的应用。
比如:传输速度最高到IMbps, 通信距离最远到IOkm,无损位仲裁机制,多主结构。
近些年来,CAN控制器价格越来越低,很多MeU也集成了CAN控制器。
现在每一辆汽车上都装有CAN总线。
一个典型的CAN应用场景:y∙7:7、行电机・控制第〃接近开关“s光电开关1信号调理模块I CAN总线标准CAN总线标准只规定了物理层和数据链路层,需要用户自定义应用层。
不同的CAN 标准仅物理层不同。
CAN收发器负责逻辑电平和物理信号之间的转换。
将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。
CAN 标准有两个,即IoSII898和K)SII519,两者差分电平特性不同。
ISOII898高速CAN电平高低电平幅度低,对应的传输速度快;物理层CAN有三种接口器件多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。
所谓〃线与〃。
CAN 总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步。
从 而消除累积误差。
和485、232 一样,CAN 的传输速度与距离成反比。
因为电缆的特性阻抗为120。
,为了模拟无限远的传输线数据链路层CAN 总线传输的是CAN 帧,CAN 的通信帧分成五种,分别为数据帧、远程帧、 错误帧、过载帧和帧间隔。
数据帧用来节点之间收发数据,是使用最多的帧类型;远程帧用来接收节点向发 送节点接收数据;错误帧是某节点发现帧错误时用来向其他节点通知的帧;过载 帧是接收节点用来向发送节点告知自身接收能力的帧;用于将数据帧、远程帧与 前面帧隔离的帧。
数据帧根据仲裁段长度不同分为标准帧(2. OA)和扩展帧(2. OB)帧起始低速 CAN-bus 终端电阻接法高速CAN∙bus 终端电阻接法为什么是120 Ω, 使线路阻抗连续,信号波形完帧起始由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧 起始;帧结束由7个隐形位(高电平)组成。
CAN笔记
CAN总线活动讲座十:CAN总线基础扫盲讲座/html/41/n-41.htmlCAN总线学习专区/html/6/category-catid-6.html1、CAN协议(Conroller Area Network Protocol)为Robert Bosch公司开发(1982年),最初应用于汽车内部网络的通讯。
CAN通讯具有严格的错误检测机制、高传输速率,兼低成本、易于实施,特别适合节点之间关键数据传输的小型嵌入式网络通讯;2、CAN网络各节点平等竞争,无所谓主从,CAN通讯基于生产/消费者模型,一个节点生产(发送)的数据可同时为网络上的一个或几个节点同时消费也即接收(本人强烈鄙视某些教科书上将CAN网络描述为多主方式!!);3、CAN协议严格的规范了OSI模型中的数据链路层,并未对物理层作出强硬的约束,因此,CAN帧msg可传输在各种物理介质上,比较常见的为双绞线信号传输;4、CAN总线上的逻辑电平:CAN-bus采用差分电压信号驱动,用显性电平(逻辑0)、隐性电平(逻辑1)标识,当CAN-bus表现为显性时,CAN-bus为差分电压驱动状态,CANL电平为“Gnd”偏上,CANH电平为“Vcc”偏下;当CAN-bus表现为隐性状态时,CAN-bus为未驱动空闲状态,此时CANL、CANH电平均为“Vcc”的一半,比如:假设Gnd=0V,Vcc=5V,则C ANH=CANL=2.5V。
总线上的先行隐性电平会被显性电平所改写;5、CAN-bus上的位流序列:仲裁场-CANID最高位最先发送;数据场-Data0最先发送,Data 7最后传输,对应每一个字节,高位msb将会先发送;位填充规则:位流序列中一旦出现五个连续的显性位将插入一个隐性位,如下图示;同时位流序列中一旦出现五个连续的隐性位将插入一个显性位。
位编码规则:1、错误帧和过载帧形式固定,并不通过位填充编码;2、数据帧或远程帧的CRC界定符、应答场、帧结束等位场形式固定,不通过位填充编码;3、数据帧或远程帧的帧起始、仲裁场、控制场、数据场、CRC序列等位场,均通过位填充规则编码。
CAN学习笔记
CAN--- Controller Area NetworkCAN理论概述1..CAN的分层结构(依照OSI标准):--CAN与以太网类似---包含最底的两层(物理层和数据链路层)。
--另外还包含传输层---用于发送控制(单次触发或发送失败时永久重发)。
--应用层即为发送接收相关的发送/接收函数、中断及数据的处理。
--因此虽然标准CAN不包含OSI中的七层,但也可以构成简易的网络,--CANopen是一种架构在控制局域网路(Control Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
CANopen 实作了OSI模型中的网络层以上(包括网络层)的协定。
CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。
CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。
一般而言资料链结层及实体层会用CAN来实作。
除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。
--CAN与CANOPEN是两种协议,没有CANOPEN也可以组成CAN网络及应用。
--CAN+CANOPEN组成较完整的OSI;这类似于TCP/IP+以太网组成互联网。
--从OSI网络模型的角度来看同,现场总线网络一般只实现了第1层(物理层)、第2层(数据链路层)、第7层(应用层)。
因为现场总线通常只包括一个网段,因此不需要第3层(传输层)和第4层(网络层),也不需要第5层(会话层)第6层(描述层)的作用。
2..CAN技术特点:(1)工作方式:CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式灵活,且无需站地址等节点信息。
(2)消息的发送:CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据最多可在134us内得到传输。
can总线协议讲解
竭诚为您提供优质文档/双击可除can总线协议讲解篇一:can总线协议学习笔记(一)1,基本概念:(1),报文:总线上的信息以不同格式的报文发送,但长度有限。
当总线开放时,任何连接的单元均可开始发送一个新报文。
(2),信息路由:在can系统中,一个can节点不使用有关系统结构的任何信息,这里包含一些重要的概念:系统灵活性——节点可以在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接于can网络。
报文通信——一个报文的内容由其标示符id命名,id并不指出报文的目的,但描述数据的含义,以便网络中的所有节点有可能借助报文滤波决定该数据是否使它们激活。
成组——由于采用了报文滤波,所有节点均可接受报文,并同时被相同的报文激活。
数据相容性——在can网络中,可以确保报文同时被所有的节点或者没有节点接受,因此,系统的数据相容性是借助于成组和出错处理达到的。
(3),位速率:can的数据传输率在不同的系统中是不同的,而在一个系统中是固定的速率。
(4),优先权:在总线访问期间,标示符定义了一个报文静态的优先权。
(5),远程数据请求:通过发送一个远程帧,需要数据的节点可以请求另一个节点发送相应的数据帧,该数据帧与对应的远程帧以相同的标示符id命名。
(6),多主站:当总线开放时,任何单元均可以开始发送报文,发送具有最高优先权报文的单元会赢得总线的访问权。
(7),仲裁:当总线开放时,任何单元均可以开始发送报文,若同时有两个或者更多的单元开始发送,总线访问冲突运用逐位仲裁规则,借助标示符id解决,这种仲裁规则可以使信息和时间均无损失,若具有相同标示符的一个数据帧和一个远程帧同时发送,数据帧优先于远程帧,仲裁期间,每个发送器都对发送位电平与总线上检测到的电平进行比较,若相同则该单元可以继续发送,当发送一个隐性电平,而在总线上检测为显性电平时,该单元退出仲裁,并不再传送后继位了。
(8),安全性:为了获得尽可能高的数据传输安全性,在每个can节点中均设有错误检测,标定和自检的强有力措施。
CAN基础知识3篇
CAN基础知识第一篇:CAN总线介绍及基本特性CAN(Controller Area Network)总线,是一种串行通信总线,广泛应用于建筑自动化、工业自动化、汽车电子和其他控制领域。
CAN总线的优势在于其高速性、高可靠性和实时性能。
本文将介绍CAN总线的基本特性,包括CAN的基本架构、CAN的帧格式和通讯协议、CAN的通讯速率和传输距离,以及常用的CAN总线标准和应用场景。
1. CAN总线架构CAN总线的基本架构由控制器、节点、总线和转换器组成。
其中,控制器负责CAN通讯协议的实现,节点通过总线与控制器进行通讯,并根据通讯协议执行相应的功能。
总线是连接控制器和节点的传输介质,通常采用双绞线作为传输介质,以保证传输信号的可靠性。
转换器主要负责将CAN总线转换为其他串行通讯协议或者其他传输介质。
2. CAN帧格式和通讯协议CAN总线通讯采用基于帧的数据传输方式,每一帧包含一个控制帧和若干个数据帧。
控制帧用于驱动CAN总线工作,包含开始、结束、错误等信息,数据帧用于传输节点之间的数据。
CAN总线通讯协议采用事件驱动机制,控制帧在总线上产生中断事件,通知节点进行相应的操作。
节点产生数据帧时,需要先向控制器进行请求,控制器则决定该帧是否能够传输。
3. CAN总线通讯速率和传输距离CAN总线通讯速率通常在1Mbps到1Kbps之间,不同的CAN总线标准也有所不同。
例如,CAN2.0B标准规定了1Mbps和500Kbps两种通讯速率。
CAN总线的传输距离基于总线的负载和传输介质的质量而定,一般而言,CAN总线的传输距离约为40m至500m之间。
4. CAN总线标准和应用场景目前常用的CAN总线标准有CAN 2.0A、CAN 2.0B、CAN FD等。
CAN 2.0A和CAN 2.0B协议是基于11位标识符的,而CAN FD协议则支持29位标识符和更高的带宽传输。
CAN总线广泛应用于汽车电子、建筑自动化、工业自动化等领域。
CAN总线心得总结(不可多得).doc
CAN总线心得总结(不可多得) CAN总线学习心得zlg关于can帖子汇总SJA1000的常用标准波特率设置,为什么基本上都是单次采样即使是低速的时候也是这样的,既然TSEG1的设置周期都很大,比如都大于10了,为什么不让他采样三次呢答是不好理解,但那是CiA推荐的值。
用51系列芯片和两个SJA1000接口还要外扩一个RAM,请问51的ALE能否同时与三个芯片的ALE管脚相连地址不同有哪位高手做过双SJA1000冗余的请指教答能同时连接。
请问CAN总线在想传输1000m的情况下,最快的速度能到多少呢答50kbps 1300m。
如果一个网络中只有2个节点,其中一个处于监听模式,另一个节点发送报文会使处于监听模式的节点进入中断吗答能进入接收中断,你自己的试验也可以证明。
想组建一个简单的CAN网络,已经有两个节点,我想问CAN总线如何组建,终端电阻安装在哪里小弟还没有入门,大虾们指点一下。
答1直接将节点CANH和CANL连到总线上,终端电阻接在总线两端,大约120欧。
答2 推荐北航出版现场总线CAN原理与应用技术,研读一下。
请问各位老师我是一名can总线的新手,我正在做can 总线的开发,控制器用sja1000t我自己两个控制板互通,但我在发送数据后将出现总线关闭,我看到发送错误计数器在不断增加,直到0xff,最后恢复到0x7f,谢谢各位老师帮我解答这个问题。
或者对我给与启发答1;首先调通单个节点。
答2这是单节点发送没有成功或者由于网络中其他节点没有收到帧并在响应场响应;建议参考网站CAN应用方案。
我想请教各位can远程贞有何作用如何应用在什么情况下才需要用到远程贞谢谢了答远程幀的用与不用完全取决你自己的协议,can有远程幀的功能,是可用可不用的用网站提供的计算波特率的工具算出的数,12k以上的都正确,无论是自接收还是两个节点通讯都没有任何问题。
但是12k以下的数据一个都不能用,两个节点通讯没有成功的,自接收有10k的几个数据成功。
can总线知识点
can总线知识点一、Can总线简介1.Can总线的发展历程Can总线(控制器局域网,Controller Area Network)最早由德国的Robert Bosch GmbH公司于1980年代研发,用于汽车电子设备的通信。
随着技术的不断发展,Can总线逐渐成为了一种广泛应用于各个领域的通信协议。
2.Can总线的应用领域Can总线起初主要用于汽车电子设备之间的通信,如发动机控制、刹车系统、仪表盘等。
如今,Can总线已广泛应用于工业自动化、智能建筑、医疗设备、交通运输等多个领域。
二、Can总线的基本原理1.Can总线的通信模式Can总线采用多主通信模式,即网络中的每个节点(设备)都可以主动发送或接收数据,不存在固定的主从关系。
通过这种方式,保证了通信的实时性和高效性。
2.Can总线的数据传输速率Can总线的数据传输速率一般在1Mbps左右,适用于实时性要求较高的场景。
同时,Can总线支持高速、中速和低速三种传输速率,可以根据实际应用需求进行选择。
三、Can总线的硬件结构1.Can控制器Can控制器是Can总线的核心部分,负责处理报文发送、接收、错误检测等功能。
常见的Can控制器有82C200、82C500等。
2.Can总线驱动器Can总线驱动器负责将Can控制器发出的信号转换为实际的电信号,驱动Can总线传输。
常见的Can总线驱动器有TJA1020、MCP2003等。
3.Can总线传输介质Can总线的传输介质主要有两种:一种是双绞线,另一种是光纤。
双绞线传输速率较低,但成本较低;光纤传输速率较高,但成本较高。
四、Can总线的软件协议1.Can总线的报文格式Can总线的报文格式包括起始符、仲裁字段、控制字段、数据字段、CRC 字段、应答位和结束符。
其中,仲裁字段包含了发送优先级,保证了高优先级的消息优先发送。
2.Can总线的通信规则Can总线的通信规则主要包括报文发送、报文接收、错误检测与处理等方面。
CAN-CANFD总线概述学习笔记
CAN总线概述2022.03.24多节点同时访问CAN总线采用非破坏性仲裁机制多个节点同时访问CAN总线1.开始逐位进行比较帧起始位仲裁场:11位ID值2.逐位线与机制:全1,bus=1否则bus=0帧起始位仲裁场:11位ID值帧起始位仲裁场:11位ID 值3.各个TX(发送节点)回读Bus 位值-相同:确认仲裁成功,继续发送-不同:确认仲裁失败,停止发送,转换为RX(收节点)等待下次CAN 总线空闲再重新进行仲裁。
4.继续逐位进行比较帧起始位仲裁场:11位ID值帧起始位仲裁场:11位ID 值5.各个节点回读Bus 位值: -相同:确认仲裁成功,继续发送-不同:确认仲裁失败,停止发送,转换为接收节点等待下次CAN 总线空闲再重新进行仲裁6.节点B发送完自己的仲裁场,开始发送后面的数据信息帧起始位仲裁场:11位ID值7. CAN总线进入空闲,其他节点可(重新)开始新一轮的仲裁,或有节点加入开始新一轮的仲裁……帧起始位仲裁场:11位ID值ID场数值越小,则优先级越高ID场数值越大,则优先级越低11 BitCAN数据帧仲裁场长度:11 Bit数据场长度:0-8 BytesCAN仲裁场长度:数据场长度:CAN数据帧(拓展)仲裁场长度:29 Bit数据场长度:0-8 Bytes(商务车中使用得多)常用不常用SOF 起始帧位仲裁场控制场数据场校验场应答场EOF 结束应答场DLC :控制数据场携带的有效字节长度CRC :对前面数据的校验保护CAN 总线帧的格式CAN总线帧的格式-SOFSOF起始帧位,1Bit固定值为 0,因为CAN总线在空闲的时候是 1接收节点在检测到SOF帧之后,会跟CAN总线的时钟进行同步(硬同步)CAN总线帧的格式-Identifier仲裁场:11bit,对ID值进行仲裁,接收过滤。
高有效位在前,逐位发送。
CAN总线帧的格式-RTRRTR:远程帧的格式指示位,0->数据帧,1->远程帧→CAN-FD_RRS页面跳转SSR:是固定位,值为r:保留位,值为0(CAN总线帧的格式-DLC 和 Data FieldDLC:长度4bit,指示数据场字节长度。
CAN总线学习心得 摘抄
CAN总线学习心得摘抄.txt54就让昨日成流水,就让往事随风飞,今日的杯中别再盛着昨日的残痕;唯有珍惜现在,才能收获明天。
原文来自:/my/space.php?uid=80086&do=blog&id=28342问:第一,接收信息的工作节点需要什么响应来确认?第二,接收的子程序未调好是否意味收发两方均无法调试?如何确认发送成功?答:网络上同一速率的正常工作节点响应:1、已设定速率;2、在工作状态。
完全是由硬件(比如:SJA1000芯片)完成ACK确认。
问:请问单个can 节点可以进行调试吗?是一块一路的can适配卡,使用端口地值300h,我使用winio进行读写的,可为什么,所有的单元读出来得数据都是ff?是因为只使用了单个节点can控制器不能正常工作吗?答:sja可实现单节点调试;ff应该是地址空间错误;问:我还是不太明白,你说的地址空间错误,是说sja1000的地址没有选通,地址没有指向sja1000的寄存器吗?答:首先把读写片选信号产生了再去管sja1000吧。
问:我用验收滤波器来选择接收CAN2.0B的一帧数据,29位中只对其中几位进行判别,其他位又不是定值,请问这该怎么办?可不可以掩住不关心的位?用范围应该也可以实现,不过那样感觉不好,请教大家,谢谢!答:相关/不相关位最终都可以转化为范围描述。
问:请教关于2119 can验收过滤器的问题请问:1、在canstarter-ii应用指南第42页中提到的“fullcan标准地址”与“标准单个地址”有何区别?2、第45页表2.34的“值”“字”“行”“id索引”是什么概念?答:fullcan标准地址放置的是需要自动执行接收存储的id索引表格(fullCAN功能,查看相关的介绍);标准单个地址仅仅是AF接收/屏蔽标准id的索引表格,即和一般的接收过滤理解一致。
答:fullcan模式下自动把符合的帧放在后面的ram里标准单个把符合的数据放在接收寄存器中问:将“LPC 系列ARM 微控制器的CAN 接收过滤设置”一文中的LTU.hpp加入原来的工程中(原来是用c做的),编译时有好多错误,用的确实是C++编译器,可感觉它对c++中的关键词不认识,请大家指教,谢谢!答:里头好像仅仅作用域符号“::”不是C的之外没什么特别之处。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CAN总线学习笔记一:基本概念/684/11215.aspx题记:在这信息爆炸的年代,学习一样新的知识,尤其是IT技术的学习,网络是必不可少的。
一阵狂搜过后,发现基于CAN总线的介绍确实不少,但是大多好像都雷同了,也许是不断转贴的结果吧。
而且这些知识点也都太零散了,让人看了,尤其是初学者有点找不着北的感觉。
所以,本着谦虚好学脚踏实地的菜鸟精神,决定把网上搜的,书上看的,再添油加醋的做一番比较系统的整理。
算是为学习CAN总线理清思路,快速上手打基础吧。
一、什么是CAN总线?CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。
最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。
比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。
一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。
实际应用中,节点数目受网络硬件的电气特性所限制。
例如,当使用Philips P82C250作为CAN收发器时,同一网络中允许挂接110个节点。
CAN 可提供高达1Mbit/s 的数据传输速率,这使实时控制变得非常容易。
另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
二、CAN 总线是如何发展的?CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。
当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。
提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。
于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。
1993年,CAN 已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。
1、制定组织主要高层协议2、CiA CAL协议3、CiA CANOpen协议4、ODVA DeviceNet 协议5、Honeywell SDS 协议6、Kvaser CANKingdom协议八、什么是标准格式CAN和扩展格式CAN?标准CAN的标志符长度是11位,而扩展格式CAN的标志符长度可达29位。
CAN 协议的2.0A版本规定CAN控制器必须有一个11位的标志符。
同时,在2.0B 版本中规定,CAN控制器的标志符长度可以是11位或29位。
遵循CAN2.0B协议的CAN控制器可以发送和接收11位标识符的标准格式报文或29位标识符的扩展格式报文。
如果禁止CAN2.0B,则CAN 控制器只能发送和接收11位标识符的标准格式报文,而忽略扩展格式的报文结构,但不会出现错误。
目前,Philips公司主要推广的CAN独立控制器均支持CAN2.0B协议,即支持29位标识符的扩展格式报文结构。
九、CAN的报文格式:(关于这部分内容,对于我下一步要进行编程实验控制CAN总线是很重要的一个知识点。
很郁闷的是搜了老半天只看见有文字叙述这部分内容的,不仅说得不系统完整,而且远没有贴图说明来的具体直观。
不过还好,搜到了一份E文版的CAN总线资料,再把这个资料详细看了下,再做了整理,还是用图来说明CAN 传输的报文格式比较容易理解。
老外写的东西确实比国内的好,这个不是我吹出来的,有兴趣下了看看就知道了,见附件下载。
)CAN通信是一种点对多点的传输协议,不是基于地址的传统的点对点传输协议。
当一个点传输数据时,总线上的其它点都可以为接受方,它们可以通过ID 来作出对总线上传送数据的处理(接收或者丢弃)。
并且当数据被正确接收到以后,接收方便会作出应答响应。
CAN协议还有一个很实用的功能,就是总线上的任一个节点可以请求其它节点向其发送数据,这被称作远程发送请求(RTR)。
除此以外,CAN协议还有一个优点,当总线新加入一个节点进行通信时无需更改原有的程序,新节点只要通过ID就可以知道是接收还是丢弃数据。
CAN协议定义了四种不同的帧。
1、数据帧,这个帧被用于当一个节点把信息传送给系统的任何其它节点。
数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束。
2、远程帧,此帧是基于数据帧格式,只要把RTR位设置成远程发送请求(Remote Transmit Request),并且没有数据场。
总线上发送此帧后,表示请求接收与该帧ID相符的数据帧。
远程帧由6个不同的位场组成,即帧起始、仲裁场、控制场、CRC场、应答场、帧结束。
3、错误帧,任何单元监测到错误时就发送错误帧。
错误帧由两个不同的场组成。
第一个场是错误标志,用做为不同站提供错误标志的叠加;第二个场是错误界定符。
4、超载帧,节点需要增加时间来处理接收到的数据时便发送过载帧。
超载帧包括两个位场:超载标志和超载界定符。
图1 帧起始位CAN总线传输的起始帧如图1。
帧起始标志数据帧或远程帧的起始,由一个单独的“显性”位(0)组成。
由控制芯片完成。
图2 标准数据帧格式图3 扩展数据帧格式由图2和图3可以看到数据帧的两种不同格式,两种格式的差别只是它们的ID位数不同。
1、帧起始。
2、仲裁场,仲裁场包括标识符和远程发送请求位(RTR)。
对于CAN2.0A标准,标识符的长度为11位。
RTR位在数据帧中必须是显性位,而在远程帧必须为隐性位。
对于CAN2.0,标准格式和扩展格式的仲裁场不同。
在标准格式中,仲裁场由11位标识符和远程发送请求位组成。
在扩展格式中,仲裁场由29位标识符和替代远程请求位(SRR)、标志位(IDE)和远程发送请求位组成。
仲裁场的作用之一是说明数据帧或远程帧发送目的地;之二是指出是数据帧还是远程帧。
3、控制场,控制场由6个位组成,说明数据帧中有效数据的长度。
标准帧的最高位是IDE位,扩展帧的最高位是保留位RB1,它们的次高位都是保留位RB0。
低四位是DLC(Data Length Code)位,标识传送的数据字节数(0-8字节)。
4、数据场,数据场由数据帧中的发送数据组成。
它可以为0-8个字节。
5、CRC场,CRC场包括CRC序列,这部分由SJA1000控制芯片完成。
6、应答场,应答场长度为两个位,包括应答间隙和应答界定符。
由SJA1000控制芯片自动完成。
7、帧结束,每一个数据帧和远程帧均由一标志序列界定,这个标志序列由7个“隐性”位组成。
这部分由SJA1000控制芯片自动完成。
仲裁场、控制场、数据场由软件编程配置SJA1000完成;帧起始、CRC场、应答场、帧结束由CAN总线控制芯片SJA1000自动完成。
十、CAN的数据错误检测:不同于其它总线,CAN协议不能使用应答信息。
事实上,它可以将发生的任何错误用信号发出。
CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。
1、循环冗余检查(CRC)在一帧报文中加入冗余检查位可保证报文正确。
接收站通过CRC可判断报文是否有错。
2、帧检查这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。
3、应答错误如前所述,被接收到的帧由接收站通过明确的应答来确认。
如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。
CAN协议也可通过位检查的方法探测错误。
4、总线检测有时,CAN中的一个节点可监测自己发出的信号。
因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。
5、位填充一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。
然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。
为保证同步,同步沿用位填充产生。
在五个生。
在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。
例如,五个连续的低电平位后,CAN自动插入一个高电平位。
CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。
如果至少有一个站通过以上方法探测到一个或多个错误,它将发送出错标志终止当前的发送。
这可以阻止其它站接收错误的报文,并保证网络上报文的一致性。
当大量发送数据被终止后,发送站会自动地重新发送数据。
作为规则,在探测到错误后23个位周期内重新开始发送。
在特殊场合,系统的恢复时间为31个位周期。
但这种方法存在一个问题,即一个发生错误的站将导致所有数据被终止,其中也包括正确的数据。
因此,如果不采取自监测措施,总线系统应采用模块化设计。
为此,CAN协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。
这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。
6、CAN可靠性为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。
如果数据传输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。
从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。
残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。
它描述了传送数据被破坏和这种破坏不能被探测出来的概率。
残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。
计算残余错误概率要求能够对数据错误进行分类 ,并且数据传输路径可由一模型描述。
如果要确定CAN的残余错误概率,我们可将残留错误的概率作为具有80~90位的报文传送时位错误概率的函数,并假定这个系统中有5~10个站,并且错误率为1/1000,那么最大位错误概率为10—13数量级。
例如,CAN网络的数据传输率最大为1Mbps,如果数据传输能力仅使用50%,那么对于一个工作寿命4000小时、平均报文长度为 80位的系统,所传送的数据总量为9×1010。
在系统运行寿命期内,不可检测的传输错误的统计平均小于10—2量级。
换句话说,一个系统按每年365 天,每天工作8小时,每秒错误率为0. 7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。
CAN总线学习笔记二:CAN自收发程序解读花了一整个下午的时间,彻头彻尾的把PIAE小组提供的CAN自收发源程序解读了一遍。
解读别人的程序是一件挺费时费力的一件事,但是在对某项技术或者说某个芯片的入门阶段参考别人的程序又是一项必不可少的任务。
对于这个程序,头一个任务当然是把头文件先浏览一遍,能弄明白的还是先弄明白,对后面程序的解读有好处。
C文件里给出了三个头文件:#include#include#include第一个reg52.h我就不废话了,下一个intrins.h我在上一篇日志里也详细的作了说明,这里也不提了。