范文一:can通讯简介
CAN 全称为 Controller Area Network,即控制器局域网,由德国 Bosch 公司最先提出,是国 际上应用最广泛的现场总线之一。 最初 CAN 被设计作为汽车环境中的通讯, 在汽车电子控 制装置之间交换信息形成汽车电子控制网络。 由于其卓越的性能、 极高的可靠性和低廉的价 格现已广泛应用于工业现场控制、医疗仪器等众多领域。
CAN 协议是建立在 OSI 7层开放互连参考模型基础之上的。 但 CAN 协议只定义了模型的最 下面两层 :数据链路层和物理层,仅保证了节点间无差错的数据传输。 CAN 的应用层协议必 须由 CAN 用户自行定义,或采用一些国际组织制订的标准协议。应用最为广泛的是 DeviceNet 和 CANopen , 分别广泛应用于过程控制和机电控制领域。 但此类协议一般结构比 较复杂,更适合复杂大型系统的应用。笔者在研制一种基于 CAN 总线的分布式高频开关电 源充电机系统的过程中设计了一种适合于小型控制系统的 CAN 总线高层通信协议。
2 CAN的特点
CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、抗电磁干扰性, 而且要能够检测出总线的任何错误。当信号传输距离达 10km 时 ,CAN 仍可提供高达 50kbps 的数据传输速率。
CAN 具有十分优越的特点 :
(1) 较低的成本与极高的总线利用率 ;
(2) 数据传输距离可长达 10km ,传输速率可高达 1Mbps[7];
(3) 可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发 ;
(4) 节点在错误严重的情况下具有自动退出总线的功能 ;
(5) 报文不包含源地址或目标地址,仅用标志符来指示功能信息和优先级信息。
3 CAN的技术规范
(1) 帧类型
在 CAN 总线中,有四种不同的帧类型 [4][5]:
·数据帧 (Data Frame) 数据帧带有应用数据 ;
·远程帧 (Remote Frame) 通过发送远程帧可以向网络请求数据,启动其他资源节点传送他们 各自的数据,远程帧包含 6个不同的位域 :帧起始、仲裁域、控制域、 CRC 域、应答域、帧 结尾。仲裁域中的 RTR 位的隐极性表示为远程帧 ;
·错误帧 (Error Frame)错误帧能够报告每个节点的出错, 由两个不同的域组成, 第一个域是不 同站提供的错误标志的叠加,第二个域是错误界定符 ;
·过载帧 (Overload Frame)如果节点的接收尚未准备好就会传送过载帧, 由两个不同的域组成, 第一个域是过载标志,第二个域是过载界定符。
(2) 数据帧结构
数据帧由以下 7个不同的位域 (Bit Field)组成 :帧起始、仲裁域、控制域、数据域、 CRC 域、 应答域、帧结尾。
[4]
·帧起始 :标志帧的开始, 它由单个显性位构成, 在总线空闲时发送, 在总线上产生同步作用。 ·仲裁域 :由 11位标识符 (ID10-ID0)和远程发送请求位 (RTR)组成, RTR 位为显性表示该帧为 数据帧,隐性表示该帧为远程帧 ; 标识符由高至低按次序发送,且前 7位 (ID10-ID4)不能全 为显性位。 标识符 ID 用来描述数据的含义而不用于通信寻址, CAN 总线的帧是没有寻址功 能的。标识符还用于决定报文的优先权, ID 值越低优先权越高,在竞争总线时,优先权高
的报文优先发送,优先权低报文退出总线竞争。 CAN 总线竞争的算法效率很高,是一种非 破坏性竞争。
·控制域 :为数据长度码 (DLC3-DLC0),表示数据域中数据的字节数,不得超过 8。
·数据域 :由被发送数据组成,数目与控制域中设定的字节数相等,第一个字节的最高位首先 被发送。其长度在标准帧中不超过 8个字节。
·CRC 域 :包括 CRC(循环冗余码校验 ) 序列 (15位 ) 和 CRC 界定符 (1个隐性位 ) ,用于帧校验。 l 应答域 :由应答间隙和应答界定符组成,共两位 ; 发送站发送两个隐性位,接收站在应答间 隙中发送显性位。应答界定符必须是隐性位。
·帧结束 :由 7位隐性位组成。
4 自订 CAN 高层协议
CAN 的高层协议也可理解为应用层协议,是一种在现有的底层协议 (物理层和数据链路层 ) 之上实现的协议。 由于充电机系统的结构比较简单, 网络规模也比较小。 因此我们自行制订 了一种简单而有效的高层通信协议。
技术规范 CAN2.0A 规定标准的数据帧有 11位标识符, 用户可以自行规定其含义, 将所需要 的信息包含在内。 在充电机系统中, 每一个节点都有一个唯一的地址, 地址码和模块一一对 应, 通过拨码开关设定, 总线上数据的传送也是根据地址进行的。由于本系统规模较小, 节 点数少于 32个,因此为每个模块分配一个 5位的地址码,同一系统中地址码不得重复,系 统初始化时由外部引脚读入。将标识符 ID9-ID5定义为源地址, ID4-ID0定义为目的地址, 本协议中从模块的目的地址全填 0,表示数据是广播数据,所有节点都可接收,主模块中目 的地址根据要进行通信目的模块的地址确定。
理论上源地址和目的地址的范围都是 0~31,但由于 CAN 协议中规定标识符前 7位不能全 为显性位, 所以源地址不能为 31, 这时实际节点只有 31个 (0~30) 。 因此每个系统所含的模 块不超过 31个。所以源地址和目的地址的范围缩减到 0~30。同时上位监控机也要占用一 个地址,因此系统中的电源模块不超过 30个,设计时根据节点的优先权高低从小到大分配 节点地址。 ID10位定义为主模块识别码,该位主模块为隐性位,从模块为显性位,以保证 主模块通信优先。模块的地址码决定发送数据的优先级。主模块向总线发送的数据有两种 :一种是目的地址全部填 0的广播数据 ; 另一种是包含特定目的地址的非广播数据。
协议中一帧数据最多能传送 8个字节, 对于充电机控制系统来说已经足够用了, 本系统只用 到其中的前 5个字节,其余 3个节字可用于以后的扩展使用,因此未定义多帧传输方式。
从模块以广播形式向总线发送数据, 同时回收自己发送的数据, 若检测到所发送与所收到的 数据不符, 则立即重新发送上一帧数据。 从模块发送信息的顺序由主模块的发出的指令决定, 以免在总线通信繁忙时优先级较低的模块始终得不到总线通信权。 指令的发送顺序按照各从 模块的地址顺序进行,即地址较低的从模块首先获得指令,得以发送自己的地址码和电流、 温度采样值。 如发生冲突, 则由 CAN 控制器自动根据模块的优先级调整发送顺序, 在 CAN 的底层协议中有完善的优先级仲裁算法,因此应用层协议不必考虑此类问题。
对于每个模块,上电 1s 后若未收到任何通信信息,则按计算延时发送自身的地址码和温度 电流采样值。延时时间的计算为 [6]:
tdelay =T×ADD
其中 :tdelay-为延时发送时间 ;
T-为单位延时时间常数, 该值根据通信速率定义 ; 可以取 1个位周期, 在波特率为 100kHz 时 为 10μs;
ADD-为模块地址编码。
主模块是 ID10=0的模块,因此具有最高的优先级。上电后主模块首先向总线广播发送自身 的地址码和温度电流采样值, 然后即按顺序向从机发送指令, 等待从机的回答。 主机 1秒钟 后若未收到任何通信信息则认为该模块出错,发出报警。同样从机 1s 后若未收到主机任何 通信信息则认为主机出错, 按照源地址优先级由其余模块中地址最低的模块充当主模块, 并 将其 ID10由 1改为 0,以获得最高通信优先权。
各模块检测到自身故障时,将切断输出,退出通信,并向上位机报警,同时发出声光报警。
5 结束语
本文中所介绍的 CAN 高层通信协议, 结构简单、 使用灵活、 可靠性极高, 实现也比较容易。 很适合在节点数不多、 通信可靠性要求高、 控制结构较简单的小型控制系统中应用, 具有一 定的实用价值
范文二:can总线协议讲解
篇一:CAN总线协议学习笔记(一)
1,基本概念:(1),报文:总线上的信息以不同格式的报文发送,但长度有限。当总线开放时,任何连接的单元均可开始发送一个新报文。
(2),信息路由:在CAN系统中,一个CAN节点不使用有关系统结构的任何信息,这里包含一些重要的概念:系统灵活性——节点 可以在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接于CAN网络。报文通信——一个报文的内容由其标示符ID命名,ID并不指出报文的目 的,但描述数据的含义,以便网络中的所有节点有可能借助报文滤波决定该数据是否使它们激活。成组——由于采用了报文滤波,所有节点均可接受报文,并同时被 相同的报文激活。数据相容性——在CAN网络中,可以确保报文同时被所有的节点或者没有节点接受,因此,系统的数据相容性是借助于成组和出错处理达到的。
(3),位速率:CAN的数据传输率在不同的系统中是不同的,而在一个系统中是固定的速率。
(4),优先权:在总线访问期间,标示符定义了一个报文
1
静态的优先权。
(5),远程数据请求:通过发送一个远程帧,需要数据的节点可以请求另一个节点发送相应的数据帧,该数据帧与对应的远程帧以相同的标示符ID命名。
(6),多主站:当总线开放时,任何单元均可以开始发送报文,发送具有最高优先权报文的单元会赢得总线的访问权。
(7),仲裁:当总线开放时,任何单元均可以开始发送报文,若同时有两个或者更多的单元开始发送,总线访问冲突运用逐位仲裁规 则,借助标示符ID解决,这种仲裁规则可以使信息和时间均无损失,若具有相同标示符的一个数据帧和一个远程帧同时发送,数据帧优先于远程帧,仲裁期间,每 个发送器都对发送位电平与总线上检测到的电平进行比较,若相同则该单元可以继续发送,当发送一个隐性电平,而在总线上检测为显性电平时,该单元退出仲裁, 并不再传送后继位了。
(8),安全性:为了获得尽可能高的数据传输安全性,在每个CAN节点中均设有错误检测,标定和自检的强有力措施。检测措施包括:发送自检,循环冗余校验,位填充,和报文格式检查。
(9),出错标注和恢复时间:已损坏的报文由检验出错的
2
节点进行标注。这样的报文将失效,并自动进行重发送。如果不存在新的错误,从检出错误到下一个报文开始发送的恢复实践最多为29个位时间。
(10),故障界定:CAN节点又能力识别永久性的故障和暂时扰动,可自动关闭故障节点。
(11),连接:CAN串行通信链路是一条众多单元均可被连接的总线,理论上单元数目是无限的,实际上,单元总数受限于延迟时间和总线的电器负载。
(12),应答:所有接收器均对接收报文的相容性进行检查,回答一个相容的报文,并标注一个不相容的报文。
2,CAN的特点:属于串行通信网络,(1),通信方式灵活。多主从方式工作,网络上任何节点均可以在任何时刻主动的向其他节点发送信息,不分主从。无需站地址等节点信息。可以构成多机备份系统。
(2),CAN网络上的节点信息分成不同的优先级,可以满足不同的实时要求。
(3),CAN采取非破坏性的总线仲裁技术,多个节点同时发送信息时,优先级低的节点会主动退出发送。
(4),CAN只需通过报文滤波就可以实现点对点,1点对多点及全局广播等几种方式传送接收,无需调度。
(5),CAN的直接通信距离最远可达10KM(5Kb/s),通信速率最高可达1Mb/s(40M)。
3
(6),CAN上的节点数目前可达110个;报文标示符可达2032种(CAN2.0A ),而CAN2.0B报文标示符几乎不受限制。
(7),CAN通信采用短帧格式,传输时间短,抗干扰强,极好的验错效果,每帧最多8B足以满足控制要求,不会占用过长总线时间,实时性强。
(8),CAN每帧都有CRC校验及其他验错措施。
(9),接口中集成了CAN协议的物理层和数据链路层。
(10),CAN的通信介质可为双绞线或同轴电缆,光纤。
(11),CAN节点在错误严重情况下具有自动关闭输出功能。
3,CAN总线基本规则:
(1),总线访问:采用载波监听多路访问,CAN控制器之恩能够在总线空闲时,就是节点侦听到网络上至少存在3个空闲位(隐性位)时开始发送,采用硬同步,所有的控制器同步都为与帧的起始的前沿。过了一定时间,并在一定条件后,重同步。
(2),仲裁:各节点向总线发电平时,也对总线上电平进行读取,并于自身发送的电平进行比较,相同则发下一位,直至全部发完。不同则说明网络上有更高优先级的信息帧正在发送,即停止发送,退出竞争。
(3),编码/解码:帧起始域,仲裁域,控制域,数据域
4
和CRC序列均使用位填充技术进行编码,就是5个连续的同状态电平插入一位与它相补的电平,还原时每5个同状态的电平后的相补电平被删除。
(4),出错标注:当检测到位错误,填充错误,形式错误或应答错误时,检测出错条件的CAN控制器将发送一个出错标志。
(5),超载标注,一些控制器会发送一个或多个超载帧以延迟下一个数据帧或远程帧的发送。
篇二:总线结构概述
发布于:2008-8-6 已被阅读: 180 次
PC的组成部件都是通过数据总、地址总线和控制总线这三组,总线连接在一起并完成和实现它们之间的通讯与数据传送的,因此总线的概念是理解PC和主板的组成结构、工作原理及部件之间相互关系统的基础。
一、概述
1.地址总线AB(Address Bus)
是用来传送地址信息的信号线,其特点是:
(1).地址信号一般都由CPU发出,当采用MDA(Direct
Memory Access,即直接内存访问)方式访问内存和I/O设备时,地址信号也可以由DMA控制器发生,并被送往各个有关的内存单元或I/O接口,实现CPU对内存或I/O设备的寻址(在PC中,内存和I/O设备的寻址都是采用统一编址
5
方式进行的),即采用单向传输,动态控制(在计算机中,由于采用二进制工作方式,一般只有两种状态,即“1”和“0”,但是当计算机各总线上,显示“0”状态时,在电气上的效果相当于总线脱离。
(2).CPU能够直接寻找内存地址的范围是由地址线的数目(由于一条地址总线一次传送一位二进制数的地址,故也叫地址总线的位数)决定的,即PC系统中所能安装内存容量上限由CPU的地址总线的数目决定。
CPU能够直接寻址的内存范围上限为2
2.数据总线DB(Data、Bus)
用来传送数据信息的信号线,这些数据信息可以是原始数据或程序。数据总线来往于CPU、内存和I/O设备之间,其特点是:
CPU的地址总线数目
(1).双向传输,三态控制:即可以由CPU送往内存或I/O设备,也可以由内存或I/O设备送往CPU。
(2).数据总线的数目称为数据宽度(由于一条数据线一次可传送一位二进制数,故也称位数),数据总线宽度决定了CPU一次传输的数据量,它决定了CPU的类型与档次。
3、控制总线CB(Control Bus)
是用来传送控制信息的信号线,这些控制信息包括CPU对内存和I/O接口的读写信号,I/O接口对CPU提出的中断
6
请求或DMA请求信号,CPU对这些I/O接口回答与响应信号,I/O接口的各种工作状态信号以及其他各种功能控制信号。控制总线来往于CPU、内存和I/O设备之间,其特点是:
在单向、双向、双态等种形态,是总线中最复杂、最灵活、功能最强的,其数量、种类、定义随机型不同而不同。
二、总线的分类
总线就是各种信号线的集合,是计算机各部件之间传送数据、地址和控制信息的公共通道。
1.按相对于CPU与其芯片的位置来分
(1).片内总线:指在CPU内部各寄存器、算术逻辑部件ALU,控制部件以及内部高速缓冲存储器之间传输数据所用的总线,即芯片内部总线。
(2).片外总线:通常所说的总线(BUS)指的外总线,是CPU与内存RAM、ROM和输入输出(I/O)设备接口之间进行通讯的数据通道,CPU通过总线实现程序存取命令,内存/外设的数据交换在CPU与外设一定的情况下,总线速度是限制计算机整体性能的最大因数。
2.按总线功能分
(1).地址总线:(AB)用来传递地址信息
(2).数据总线:(DB)用来传递数据信息
(3).控制总线:(CB)用来传送各种控制信号
3.按总线的层次结构分
7
(1).CPU总线:包括CPU地址线(CAB),CPU数据线(CDB)和CPU控制线(CCD),其用来连接CPU和控制芯片。
(2).存储器总线:包括存储器地址线(MAB)、存储器数据线(MDB)和存储器控制线(MCD),用来连接内存控制器(北桥)和内存。
(3).系统总线:(I/O扩展总线)也称为I/O通道总线或I/O扩展总线,包括系统地址线(SAB),系统数据线(SDB)和系统控制线(SCD),用来与I/O扩展槽上的各种扩展卡相连接。
(4).外部总线:(外围芯片总线)用来连接各种外设控制芯片,如主板上的I/O控制器(如硬盘接口控制器、软盘驱动控制器、串行/并行接口控制器等),和键盘控制器,包括外部地址线(XAB)、外部数据线(XMB)和外部控制线(XCB)。
4.系统总线(I/O扩展总线)又分为ISA、PCI、AGP等多种标准
(1).ISA(Industry standard architecture,工业标准结构)是IBM公司为286AT电脑制定的总线工业标准,也称为AT标准。
(2).PCI(peripheral component interconnet,外部设备互连)是SIG(spelial interest group)集团推出的总线结构。
(3).AGP(accelerated graphics port,加速图形端口)是一种为了提高视频带宽而设计的总线规范,因为它是点对点连接,即连接控制芯片和AGP显卡,因此严格说来,AGP也
8
是一种接口标准。
三、总线主要的技术指标
1、总线的带宽(总线数据传输速率)
总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:
总线的带宽,总线的工作频率*总线的位宽/82、总线的位宽
总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽。
3、总线的工作频率
总线的工作时钟频率以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。
四、总线命令含义
ADS#地址通讯 D/C数据/控制 M/IO#记忆器/IO W/R#读写 BRDY#总线就绪
STOP#停止 LOCK#锁存 DEVSEL#设备选择 PAR奇偶校验 REQ[2:0]请求
SMIACT#激活系统管理中断 TWE#TAG写效能 COE#CACHE输出效能 GNE[7:0]#全写效能 TIO[7:0]TAG地址 H-LINK主时钟输入 PCLINK时钟输入
9
ACAS[B:A]写功能 PC-LINK[15:0]PCI链锁 1+STB:[1:0]记忆器选通 MADV#MEHORY优先 PCMD[1:0]PCI命令 BOE#BOST输入功能 MOE#MEMY输入功能
EADS#外部地址选通 GNT[2:0]PCI允许 HZTM#中较正
RE23#/MREQ#
BOFF#退去 AHOLD地址保持 NA#下位地址
PHLD#PCI保持 AD地址/数据 POE#PLINK输入功能 MXSCSH多功能选择
PHLD#PCI保持响应 C/BE[3:0]命令/字节使能 RAS[3:0]行选
FRAME#结构 TRDY#目标就绪 IRDY#初始就绪
KEN#/ZNLCACHE效能 CAS[7:0]列选 CACHE#CACAHE效应 HLOCK#主锁存
MA内存地址 SRASA#SDRAM行选
五、ISA插槽
1、地址总线:SA0~SA19(I/O)和LA17~LA23(I/O)
2、数据总线:SD0~SD7(I/O)和SD8~SD15(I/O)
3、控制总线:BALE(0)---US Address latch enable:系统地址锁存允许
4、SYSCLK(0)---SYSTEM CLOCK系统时钟信号
5、IR23~7,9~12,15(Z)---这是用于I/O设备通过中断控制器向CPU发送的中断请求(interrupt request)信号
10
6、SMEMR#和SMEMW#(0)---这是命令内存将数据送至数据总线的信号
7、MEMR#和MEMW#(I/O)---内存读(MEMR)或内存写(MEMW#)信号
8、DRQ0~3,5~7(2)---这是DMA请求(DMA Requesc)信号
9、DACK0#~3,5~7(0)---(DMA Acknowledge,DMA响应)这是对DRQ0~3,5~7的响应信号
10、AEN(0)---地址允许(Address enable)信号
篇三:CAN总线协议
CAN总线协议编辑
本词条缺少概述、信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧~ 目录
?
?
1概述编辑
CAN总线发展
控制器局域网CAN( Controller Area Network)属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络。是由德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。由于其高性能、高可靠性以及独特的设计而越来越受到人们的重视,被广泛应用于诸多领域。而且能够检测出产生的任何错误。当信号传输距离达到
11
10km时,CAN仍可提供高达50kbit/s的数据传输速率。由于CAN总线具有很高的实时性能和应用范围,从位速率最高可达1Mbps的高速网络到低成本多线路的50Kbps网络都可以任意搭配。因此,CAN己经在汽车业、航空业、工业控制、安全防护等领域中得到了广泛应用。
随着CAN总线在各个行业和领域的广泛应用,对其的通信格式标准化也提出了更严格的要求。1991年CAN总线技术规范(Version2.0)制定并发布。该技术规范共包括A和B两个部分。其中2.0A给出了CAN报文标准格式,而2.0B给出了标准的和扩展的两种格式。美国的汽车工程学会SAE在2000年提出了J1939协议,此后该协议成为了货车和客车中控制器局域网的通用标准。
相关组织
依据国际标准化组织/开放系统互连(International
Standardi-zation
Organization/Open SystemInterconnection,ISO/OSI)参考模型,CAN的ISO/OSI参考模型的层结构。
概念和特征
下面对CAN协议的媒体访问控制子层的一些概念和特征做如下说明:
(1)报文(Message)总线上的数据以不同报文格式发送,但长度受到限制。当总线空闲时,任何一个网络上的节点都可以
12
发送报文。
(2)信息路由(Information Routing)在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。
(3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。信息以广播方式在网络上发送,所有节点都可以接收到。节点通过标识符判定是否接收这帧信息。
(4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。
(5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。
(6)优先权 由发送数据的报文中的标识符决定报文占用总线的优先权。标识符越小,优先权越高。
(7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。
(8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符的逐位仲裁可以解
13
决这个碰撞。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。
(9)总线状态 总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态与为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。CAN总线采用二进制不归零(NRZ)编码方式,所以总线上不是“0”,就是“1”。但是CAN协议并没有具体定义这两种状态的具体实现方式。
(10)故障界定(Confinement) CAN节点能区分瞬时扰动引起的故障和永久性故障。故障节点会被关闭。
(11)应答接收节点对正确接收的报文给出应答,对不一致报文进行标记。
(12)CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40米)。
(13)CAN总线上的节点数可达110个。通信介质可在双绞线,同轴电缆,光纤中选择。
(14)报文是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的校验机制,这些都保证了CAN通信的可靠性。
14
2协议内容编辑
CAN总线的物理层是将ECU连接至总线的驱动电路。ECU的总数将受限于总线上的电气负荷。物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据的编码/解码、位定时和同步的实施标准。 总线竞争的原则
BOSCH CAN基本上没有对物理层进行定义,但基于CAN的ISO标准对物理层进行了定义。设计一个CAN系统时,物理层具有很大的选择余地,但必须保证CAN协议中媒体访问层非破坏性位仲裁的要求,即出现总线竞争时,具有较高优先权的报文获取总线竞争的原则,所以要求物理层必须支持CAN总线中隐性位和显性位的状态特征。在没有发送显性位时,总线处于隐性状态,空闲时,总线处于隐性状态;当有一个或多个节点发送显性位,显性位覆盖隐性位,使总线处于显性状态。
在此基础上,物理层主要取决于传输速度的要求。从物理结构上看,CAN节点的构成如图7-8所示。在CAN中,物理层从结构上可分为三层:分别是物理信号层(Physical Layer Signaling,PLS)、物理介质附件(Physical MediaAttachment,PMA)层和介质从属接口(Media Dependent:Inter-face,MDI)层。其中PLS连同数据链路层功能由CAN控制器完成,PMA层功能由CAN收发器完
15
成,MDI层定义了电缆和连接器的特性。目前也有支持CAN的微处理器内部集成了CAN控制器和收发器电路,如MC68HC908GZl6。PMA和MDI两层有很多不同的国际或国家或行业标准,也可自行定义,比较流行的是ISOll898定义的高速CAN发送/接收器标准。
节点数量
理论上,CAN总线上的节点数几乎不受限制,可达到2000个,实际上受电气特性的限制,最多只能接100多个节点。
CAN的数据链路层
CAN的数据链路层是其核心内容,其中逻辑链路控制(Logical Link control,LLC)完成过滤、过载通知和管理恢复等功能,媒体访问控制(Medium Access control,MAC)子层完成数据打包/解包、帧编码、媒体访问管理、错误检测、错误信令、应答、串并转换等功能。这些功能都是围绕信息帧传送过程展开的。 3报文传输编辑
报文类型
在CAN2(0B的版本协议中有两种不同的帧格式,不同之处为标识符域的长度不同,含有11位标识符的帧称之为标准帧,而含有29位标识符的帧称为扩展帧。如CAN1(2版本协议所描述,两个版本的标准数据帧格式和远程帧格式分别是等效的,而扩展格式是CAN2(0B协议新增加的特性。为使控制器设计相对简单,并不要求执行完全的扩展格式,
16
对于新型控制器而言,必须不加任何限制的支持标准格式。但无论是哪种帧格式,在报文传输时都有以下四种不同类型的帧: 帧类型
(1)数据帧(Data ) 数据帧将数据从发送器传输到接收器。
(2)远程帧(Remote ) 总线单元发出远程帧,请求发送具有同一标识符的数据帧。
(3)错误帧(Error ) 任何单元检测到总线错误就发出错误帧。
(4)过载帧(Overload ) 过载帧用在相邻数据帧或远程帧之间提供附加的延时。 数据帧或远程帧与前一个帧之间都会有一个隔离域,即帧间间隔。数据帧和远程帧可以使用标准帧及扩展帧两种格式。
4应用领域编辑
使用范围
CAN总线最初是德国BOSCH为汽车行业的监测,控制而设计的。现已应用到铁路、交通、国防、工程、工业机械、纺织、农用机械、数控、医疗器械机器人、楼宇、安防等方面。
发展趋势
目前大多数CAN控制器只做到链路层,然而随着CAN的发展和应用,应用层的硬件设计也成为硬件厂商的考虑范畴。
17
哈佛结构编辑
本词条缺少信息栏
,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧~
哈佛结构是一种存储器结构。使用哈佛结构的处理器有:AVR、
ARM9、ARM10、ARM11等。
目录
2相关编辑
哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。
哈佛结构是指程序和数据空间独立的体系结构,目的是为了减轻程序运行时的访存瓶颈。
例如最常见的卷积运算中,一条指令同时取两个操作数,在流水线处理时, 同时还有一个取指操作,如果程序和数据通过同一条总线访问,取指和取数必会产生冲突,而这对大运算量的循环的执行效率是很不利的。
哈佛结构能基本上解决取指和取数的冲突问题。而对另一个操作数的访问, 就只能采用Enhanced 哈佛结构了,例如像TI那样,数据区再split,并多一组总线。 或向AD 那样, 采用指令cache,指令区可存放一部分数据。
18
3比较编辑 哈佛结构与冯?诺依曼结构处理器相比,处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
改进的哈佛结构,其结构特点为:
使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储
模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU
之间的数据传输;两条总线由程序存储器和数据存储器分时共用。
冯?诺依曼结构编辑
本词条缺少信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧~
冯?诺依曼结构也称普林斯顿结构
,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位
19
宽。
目录
20
范文三:汽车can总线协议
篇一:史上最全can总线协议规则
一、CAN总线简介
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。在建立之初,CAN总线就定位于汽车内部的现场总线,具有传输速度快、可靠性高、灵活性强等优点。上世纪90年代CAN总线开始在汽车电子行业内逐步推广,目前已成为汽车电子行业首选的通信协议,并且在医疗设备、工业生产、楼宇设施、交通运输等领域中取得了广泛的应用。
二、CAN总线技术及其规范
2.1性能特点
(1) 数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,通信方式灵活,且无需站地址等节点信息;
(2) CAN网络上的节点信息分成不停的优先级,可满足不同的实时要求,高优先级节点信息最快可在134μs内得到传
1
输;
(3) 采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而高优先级的节点可不受影响的继续发送数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下也不会出现网络瘫痪的情况;
(3) 通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M);
(4) 通信的硬件接口简单,通信线少,传输介质可以是双绞线,同轴电缆或光缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。
(5) 采用短帧结构,传输时间短,受干扰概率低,每帧信息都有CRC校验及其他检验措施,数据出错率极低;
(6) 节点在严重错误的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受影响。
(7) CAN总线使用两根信号线上的差分电压传递信号,显性电平可以覆盖隐形电平。
2.2技术规范
2.2.1CAN的分层结构
图1 CAN的分层结构
逻辑链路控制子层(LLC)的功能:为数据传送和远程数
2
据请求提供服务,确认由LLC子层接收的报文实际上已被接收,为恢复管理和通知超载提供信息。在定义目标处理时,存在许多灵活性。
介质访问控制子层(MAC)的功能:主要是传送规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。MAC子层也要确定当开始一次新的传送时,总线是否开放或者是否马上开始接收。位定时特性也是MAC子层的一部分。
2.2.2CAN的报文传送和帧结构
报文传送由以下四种不同的帧类型所表示和控制。
?数据帧:数据帧携带数据从发送器至接收器;
?远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧; ?错误帧:任何单元检测到一总线错误时发出的错误帧;
?超载帧:超载帧用来在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
数据帧或远程帧通过帧空间与前述的各种帧分开。
2.2.2.1数据帧
数据械是用来传输数据的帧,由7个位场组成:1.帧起始位场、2.仲裁场、
3.控制场、4.数据场、5.CRC场、6.应答场、7帧结尾。数据帧的组成如图2所示。
3
CAN2.0B中存在两种不同的帧格式,其主要区别在于仲裁场的标示符长度。具有11位标示符的帧称为标准帧,包括29位标示符的帧称为扩展帧。标准帧和扩展帧的仲裁场格式如图3所示。
图3 标准帧和扩展帧的仲裁场格式
?帧起始
帧的起始场仅仅包含一个显性位,当CAN总线空闲时,总线保持隐性位,出现一个显性位即表示总线开始数据传输。CAN总线上的节点只能在总线空闲时发送数据,而检测到起始位之后节点就进入接收状态。
?仲裁场
仲裁场由标识符和远程发送请求位(RTR位)组成。RTR位在数据帧中为显性,在远程帧中为隐性。其结构如图4所示。
图4 CAN总线数据帧仲裁场结构
对于CAN2.0B标准,标准格式帧与扩展格式帧的仲裁场标识符格式不同。标准格式里,仲裁场由11位识别符和RTR(RTR=0)位组成。识别符位由ID.28~ID.18组成。而在扩展格式里,仲裁场包括29位识别符、替代远程请求位SRR、标识位IDE、远程发送请求位RTR(RTR=1)。其识别符由ID.28~ID.0组成,其格式包含两个部分:11位(ID.28~ID.18)基本ID、18位(ID.17~ID.0)扩展ID。扩展格式里,基本
4
ID首先发送,其次是SRR位和IDE位。扩展ID的发送位于SRR位和IDE位之后。
SRR的全称是“替代远程请求位(Substitute Remote
Request BIT)”,SRR
是一隐性位。它在扩展格式的标准帧RTR位上被发送,并代替标准帧的RTR位。因此,如果扩展帧的基本ID和标准帧的识别符相同,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的。
IDE的全称是“识别符扩展位(Identifier Extension Bit)”,对于扩展格式,IDE位属于仲裁场;对于标准格式,IDE位属于控制场。标准格式的IDE位为“显性”,而扩展格式的IDE位为“隐性”。
?控制场
控制场由6个位组成,包括数据长度码和两个将来作为扩展用的保留位。其结构如图5所示。
图5 CAN总线数据场结构图 标准格式和扩展格式的控制场格式不同。标准格式里的帧包括数据长度代码、IDE位(为显性位)及保留位r0。扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的任何组合。
?数据场
数据场由数据帧里的发送数据组成。它可以为0~8个字
5
节,每字节包含了8个位,首先发送最高有效位(MSB)。
?CRC场
CRC场由15位CRC序列和1位隐性CRC界定符组成,,其结构如图6所示。
图6 CAN总线CRC场结构图
CRC序列用于检测报文传输错误,CRC校验是由硬件完成的。
?应答场
应答场长度为两个位,包含 应答间隙(ACK slot)和应答界定符(ACK delimiter
),其结构如图7所示。
图7 CAN总线应答场结构图
在应答场里,发送站发送两个“隐位”。当接收器正确的接收到有效的报文时,接收器就会在应答间隙期间(发送ACK信号)向发送器发送一“显性”位以示应答。所接收到匹配CRC序列的站会在应答间隙期间用一“显性”位写入发送器的“隐性”位来做出回答。 ACK界定符是ACK场的第二个位,并且必须为隐位。因此应答间隙被两个“隐性”位所包围,也就是CRC界定符和ACK界定符。
?帧结束
每一个数据帧或远程帧均由一串七个隐性位的帧结束域结尾。这样,接收节点可以正确检测到一个帧的传输结束。
6
2.2.2.2远程帧
通过发送远程帧,作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置。远程帧由6个不同的位场组成,即帧起始、仲裁场、控制场、
CRC场、应答场、帧结束。其结构如图8所示。
图8 CAN总线远程帧结构
与数据帧相比,远程帧的RTR位为隐性,没有数据域,数据长度编码域可以是0,8个字节的任何值,这个值是远程帧请求发送的数据帧的数据域长度。当具有相同仲裁域的数据帧和远程帧同时发送时,由于数据帧的RTR位为显性,所以数据帧获得优先。发送远程帧的节点可以直接接收数据。 2.2.2.3错误帧
错误帧由两个不同的域组成:第一个域是来自控制器的错误标志;第二个域为错误分界符。其结构如图9所示。
篇二:面向汽车的CAN 通信协议
面向汽车的CAN 通信协议
摘要
CAN总线是为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。对于汽车工业而言,它的实时性、灵活性、可靠性、低成本以及良好的故障珍断和纠错能力都有着很大的吸引力及市场
7
空间。CAN作为控制器联网的手段,已广泛应用于各品牌汽车。在控制发动机、变速箱、ABS等车身安全模块,都是以CAN网为主网。相信CAN技术将会成为汽车领域发展的新途径。
关键字CAN总线 通信协议 网络 现场总线 总线结构
引言
CAN是控制器局域网络(Controller Area Network, CAN)
的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO 11898)。是国际上应用最广泛的现场总线之一。由于其高性能,高可靠性,及独特的设计,CAN总线越来越受到人们的重视。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
本文主要对CAN总线技术的介绍,深入研究面向汽车的CAN通信协议的特点,优势,应用等。
1 基本概念
CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间
8
通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的
CAN 通信协议。此后,CAN 通过ISO11898 及
ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。
CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
2 优势
CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之许多RS-485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:
2.1网络各节点之间的数据通信实时性强
首先,CAN控制器工作于多种方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除
9
了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;
2.2缩短了开发周期
CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会在出现在RS-485网络中的现象,即当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是仅有电气协议的RS-485所无法比拟的。
2.3已形成国际标准的现场总线
另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国
10
际标准的现场总线。这些也是CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。
2.4最有前途的现场总线之一
CAN 即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并
(10)故障界定
(Confinement) CAN节点能区分瞬时扰动引起的故障和永久性故障。故障节点会被关闭。
(11)应答接收对正确接收的给出应答,对不一致报文进行标记。
(12)CAN通讯距离最大是10公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离为40米)。
11
(13)CAN总线上的节点数可达110个。通信介质可在双绞线,同轴电缆,光纤中选择。
(14)是短帧结构,短的传送时间使其受干扰概率低,CAN有很好的校验机制,这些都保证了CAN通信的可靠性。
特点
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率最高可达1Mbps。
篇三:J1939 汽车CAN总线协议 中文
J1939协议简介
型号: PXF0945
J1939协议简介
缩写
ACK Acknowledgment:应答
BAM Broadcast Announce Message:广播通知消息 CAN ontroller Area Network:控制器局域网 CRC Cyclic Redundancy Check:循环冗余校验 CTS Clear-To-Send:清除发送
DA Destination Address:目标地址 DLC Data Length
Code:数据长度代码 DP Data Page:数据页
EOF End of Frame:框架结束或帧结束 IDIdentifier:
12
标志符
IDEIdentifier Extension Bit:标志符扩展位 LLCLogical Link Control:逻辑连接控制 LSB Least Significant Byte
or Least Significant Bit:最小有意义位或字节
MAC Medium Access Control:媒体通道控制 MF Manufacturer:制造商
MSB Most Significant Byte or Most Significant Bit:最大有意义位或字节
NA not Allowed:不应答
NACKNegative-Acknowledgment:错误应答 PPriority:优先级
PDU Protocol Data Unit:协议数据单元 PF PDU Format:协议数据单元格式 PGN Parameter Group
Number:参数组代码 PS PDU Specific:协议数据单元细节 GE Group Extension:组扩展
DA Destination Address:目标单元地址 RReserved:保留
RTR Remote Transmission Request:远程传输请求
RTS Request-To-Send:发送请求 SA Source Address:原地址 SOF Start of Frame:帧开始
SRR Substitute Remote Request:替代远程请求
TP Transport Protocol:传送协议 Th Hold Time:保
13
持时间 Tr
Response Time:响应时间
un Undefined:没有定义
CAN2.0B包含两种格式的说明:标准格式和扩展格式。SAE J1939必须使用扩展格式。在CAN网络上也可以有标准格式
图1:标准格式
图2:扩展格式
SAE J1939信息框架格式――CAN扩展格式信息,如图2所示,包含了一个协议数据单元(PDU)。PDU包含7个预先定义的部分:优先级、保留位、数据页、PDU格式、PDU细节、原地址和数据部分。
表1:
29位标志符11位标志符 11位标志符 29位标志符 J1939 位的位置 CAN J1939(1) CAN
SOF SOF(2) 1 SOF SOF(2) ID28 P3 2 ID11 P3
DI27 P2 3 ID10 P2
ID26 P1 4 ID9 P1
ID25 R1 5 ID8 SA8
ID24 DP 6 ID7 SA7
ID23 PF8 7 ID6 SA6
ID22 PF7 8 ID5 SA5
14
ID21 PF6 9 ID4 SA4
ID20 PF5 10 ID3 SA3
ID19 PF4 11 ID2 SA2
ID18 PF3 12 ID1 SA1
SRR(r) SRR(r) (2) 13 RTR(x) RTR(2)(d) IDE(r) IDE(r) (2)
14 IDE(d) IDE(2) ID17 PF2 15 r 0 r 0(2) ID16 PF1 16 DLC4
DLC4 ID15 PS8 17 DLC3 DLC3 ID14 PS7 18 DLC2 DLC2
ID13 PS6 19 DLC1 DLC1 ID12 PS5 20
ID11 PS4 21
ID10 PS3 22
ID9 PS2 23
ID8 PS1 24
ID7 SA8 25
ID6 SA7 26
ID5 SA6 27
ID4 SA5 28
ID3 SA4 29
ID2 SA3 30
ID1 SA2 31
ID0 SA1 32
RTR(r) RTR(r)(2)(d) 33 r 1 r 1(2) 34
r 0 r 0(2) 35
15
DLC4 DLC4 36
DLC3 DLC3 37
DLC2 DLC2 38 DLC1 DLC1 39
1. 11位标志位要求的格式
2. CAN定义位,在SAE J1939里面没有改变
3. 注释:
SOF - Start of Frame Bit :框架开始
位 ID## - Identifier Bit #n:标志符
位
SRR - Substitute Remote Request :替代远程请求RTR - Remote Transmission Request Bit :远程传送请求
IDE - Identifier Extension
Bit :标志符扩展位 r# - CAN Reserved Bit
#n:CAN保留位
DLC# - Data Length Code Bit #n :数据长度代码位
(d) - dominant bit :显性位
(r) - recessive bit :影性位
(x) - bit state dependent on message :位状态,有信息决定
P# - SAE J1939 Priority Bit #n :SAE J1939优先级位
R# - SAE J1939 Reserved Bit #n:SAE J1939保留位
SA# - SAE J1939 Source Address Bit#n:SAE J1939原地
16
址位 DP - SAE J1939 Data Page :SAE J1939数据页
PF# - SAE J1939 PDU Format Bit #n:SAE J1939 PDU 格式位
PS# - SAE J1939 PDU Specific Bit #n :SAE J1939 PDU详细位
表1 显示了29位标志符CAN、J1939,11位标志符的CAN、J1939仲裁和控制字段。在5。2章节里面定义了每一个SAE J1939的完整定义。
参数组代码:PGN。
在CAN数据框架内有必要标志一个参数组,参数组代码用24位表示。PGN参数组代码是一个24位的值,由如下要素组成:保留位、数据页位、PDU格式域和组扩展域。将域位转换成PGN参数组代码有如下规格。如果PF的值小于240(F0),PGN的低字节设置为0。
注意并不是所有的131071个组合都是可用的。
表2:PGN参数组代码
PGN PGN PGN PGN PGN BYTE1 BYTE1 BYTE 2
BYTE3
BYTE1
Bits R DP PF PS PGN PGN 8-3 Bit2 Bit1 Bits 8-1 Bits 8-1
Dec10 Hex16
0 0 0 0 0 0 000000 239 239 SAE 0 0 0 238 0 60928
17
00EE00
0 0 0 239 0 61184 00EF00 1 240 MF 0 0 0 240 0 61440
0F000 SAE3840
0 0 0 254 255 65279 00FEFF 4080
0 0 0 255 0 65280 00FF00256MF 0 0 0 255 255 65535
00FFFF 4336
0 0 1 0 0 65536 010000240SAE 0 0 1 239 0 126720 01EF00
4576
0 0 1 240 0 126976 01F0004096SAE 0 0 1 255 255 131071
01FFFF 8672
8672 8672Protocol Data Unit (PDU):协议数据单元
应用层或网络层会对PDU进行处理。SAE J1939协议数
据单元由7部分组成,他们分别是优先级、保留位、数据页、
PDU格式、PDU细节(可以是目标单元地址、组扩展或所
有权)、原地址和数据段。这7个部分会被封装成一个或多
个CAN数据框架并且通过物理层发送给其他的网络设备。
每一个CAN数据框架只有一个PDU。需要注意的是一些
PGN定义需要多个CAN数据框架去发送相应的数据。
CAN数据框架中的一些段并没有定义在PDU里面,因为他
们是由CAN规格定义的,对于数据链接层之上的OSI层是
不可见的。这些字段是由CAN协议定义的在SAE J1939里
面没有改变。这些字段包括:SOF、SRR、IDE、RTR、CRC、
18
ACK、EOF。 在图3中显示了这7个字段。在PDU中的每一个字段在后来的应用中都有定义。 图3
P:优先级
R:保留位
DP:数据页
PF:PDU格式
PS:PDU细节
SA:原地址
Date Field:数据字段
P优先级:有三个位用来表示信息发送到总线的优先级。对于接收者来说这三个位应该都认为0,被忽略掉。信息的优先级可以设置为0,最高,或者7,最低。所有控制信息默认的优先级是3,所有的其他的优先级默认为6。
R保留位:SAE为了以后应用保留下来的,暂时无意义。
DP数据页:对于参数组描述选色一个辅助的页。请参考图4。
PDU Format(PF):协议数据单元格式。PF是一个8位的字段,由这8个位决定了PDU的格式。这8个位是决定PGN参数组代码字段的一部分。PGN参数组代码是用来确定或者标志命令、数据、一些请求、应答或不应答。PGN参数组代码确
19
20
范文四:can 2.0b 协议
CAN -bus 规范 V2.0版本
引言
随着串行通讯进入更多应用领域,因此,在一些应用里,需要对通讯功能的报文识别位提出分配标准 化的要求。原先的地址范围由 11个识别位定义,如果地址范围扩大,则这些应用就可以更好地由 CAN 来 实现。
因此引入了第二种报文格式(‘扩展格式’ )的概念,其定义的地址范围更宽,由 29位定义。系统设计 者将从考虑定义良好的结构命名方案中得到解放。有的用户不需要由扩展格式提供的识别符范围,可以继 续沿用常规的 11位识别符范围(‘标准格式’ ) ,在这种情况下,可以采用市场上可用的 CAN 仪器,或使 用兼容这两种模式的新控制器类仪器。
为了区别标准格式和扩展格式,按 CAN 1.2规范定义,使用了 CAN 报文格式的第一个保留位。因为 CAN1.2定义的信息格式相当于标准格式,因此仍然是有效的。此外,由于扩展格式已经定义,因此网络 中会共存标准格式和扩展格式的报文。
这本 CAN 规范技术规范由两部分组成:
? A部分:CAN 的报文格式说明(按 CAN1.2规范定义)。
? B部分:标准格式和扩展格式的说明。
为了兼容 CAN2.0,要求 CAN 的仪器应兼容 A 部分或 B 部分。
注意:
只要没有用到扩展格式,那么,根据 A 部分或 CAN 旧版本设计的仪器可以和根据 B 部分设计的仪器 相互间进行通讯。
A 部分
目录
1.介绍 .............................................................................................................................................................3
2.基本概念 .....................................................................................................................................................3
3.报文传输 .....................................................................................................................................................6
3.1帧类型 ...................................................................................................................................................6 3.1.1 数据帧 ............................................................................................................................................6 3.1.2 远程帧 ............................................................................................................................................9 3.1.3 错误帧 ..........................................................................................................................................10 3.1.4 过载帧 .......................................................................................................................................... 11 3.1.5 帧间空间 ...................................................................................................................................... 11 3.2发送器 /接收器的定义 .........................................................................................................................12
4.报文校验 ...................................................................................................................................................12
5.编码 ...........................................................................................................................................................13
6.错误处理 ...................................................................................................................................................13
6.1错误检测 .............................................................................................................................................13 6.2错误标定 .............................................................................................................................................13
7.故障界定 ...................................................................................................................................................13
8.位定时要求 ...............................................................................................................................................15
9 增加 CAN 振荡器容差 ...............................................................................................................................16 9.1协议修改 .............................................................................................................................................17
1.介绍
控制器局域网(CAN )为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。 CAN 的应 用范围很广,从高速的网络到低价位的多路接线都可以使用 CAN 。在汽车电子行业里,使用 CAN 连接发 动机控制单元、传感器、防刹车系统、等等,其传输速度可达 1 Mbit/s。同时,可以将 CAN 安装在卡车本 体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。
这本技术规范的目的是为了在任何两个 CAN 仪器之间建立兼容性。 可是, 兼容性有不同的方面, 比如 电气特性和数据转换的解释。为了达到设计透明度以及实现柔韧性, CAN 被细分为以下不同的层次:? CAN对象层(the object layer)
? CAN传输层(the transfer layer)
? 物理层(the phyical layer)
对象层和传输层包括所有由 ISO/OSI模型定义的数据链路层的服务和功能。对象层的作用范围包括: z查找被发送的报文。
z确定由实际要使用的传输层接收哪一个报文。
z为应用层相关硬件提供接口。
在这里,定义对象处理较为灵活。传输层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错 误检测、出错标定、故障界定。总线上什么时候开始发送新报文及什么时候开始接收报文,均在传输层里 确定。位定时的一些普通功能也可以看作是传输层的一部分。理所当然,传输层的修改是受到限制的。 物理层的作用是在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内,物 理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。
这本技术规范的目的是定义传输层, 并定义 CAN 协议于周围各层当中所发挥的作用 (所具有的意义) 。
2.基本概念
CAN 具有以下的属性:
? 报文的优先权
? 保证延迟时间
? 设置灵活
? 时间同步的多点接收
? 系统宽数据的连贯性
? 多主机
? 错误检测和标定
? 只要总线一处于空闲,就自动将破坏的报文重新传输
? 将节点的暂时性错误和永久性错误区分开来,并且可以自动关闭错误的节点
应用层
对象层
- 报文滤波
- 报文和状态的处理
- 传输层
- -
故障界定
- -
错误检测和标定
- -
报文校验
- -
应答
- -
仲裁
- -
报文分帧
- -
传输速率和定时
物理层
- 信号电平和位表示
- 传输媒体
z物理层定义实际信号的传输方法。本技术规范没有定义物理层,以便允许根据它们的应用,对发 送媒体和信号电平进行优化。
z传输层是 CAN 协议的核心。 它把接收到的报文提供给对象层, 以及接收来自对象层的报文。 传输 层负责位定时及同步、报文分帧、仲裁、应答、错误检测和标定、故障界定。
z对象层的功能是报文滤波以及状态和报文的处理。
这本技术规范的目的是为了定义传输层及定义 CAN 协议在周围各层中所发挥的作用 (所具有的意义) 。 报文(Messages )
总线上的信息以不同的固定报文格式发送,但长度受限(见第 3节的报文传输)。当总线空闲时任何 连接的单元都可以开始发送新的报文。
信息路由(Information Routing)
在 CAN 系统里,节点不使用任何关于系统配置的信息(比如,站地址) 。以下是几个重要的概念。 z系统灵活性:不需要改变任何节点的应用层及相关的软件或硬件, 就可以在 CAN 网络中直接添加 节点。
z报文路由:报文的内容由识别符命名。识别符不指出报文的目的地,但解释数据的含义。因此, 网络上所有的节点可以通过报文滤波确定是否应对该数据做出反应。
z多播:由于引入了报文滤波的概念,任何数目的节点都可以接收报文, 并同时对此报文做出反应。 z数据连贯性:在 CAN 网络内,可以确保报文同时被所有的节点接收(或同时不被接收)。因此, 系统的数据连贯性是通过多播和错误处理的原理实现的。
位速率(Bit rate):
不同的系统, CAN 的速度不同。可是,在一给定的系统里,位速率是唯一的,并且是固定的。
优先权(Priorities ):
在总线访问期间,识别符定义一静态的报文优先权。
远程数据请求(Remote Data Request):
通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由 相同的识别符(IDENTIFIER )命名的。
多主机(Multimaster ):
总线空闲时,任何单元都可以开始传送报文。具有较高优先权报文的单元可以获得总线访问权。
仲裁(Arbitration ) :
只要总线空闲,任何单元都可以开始发送报文。如果 2个或 2个以上的单元同时开始传送报文,那么 就会有总线访问冲突。通过使用识别符的位形式仲裁可以解决这个冲突。仲裁的机制确保信息和时间均不 会损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发 送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发 送的是一“隐性”电平而监控视到一“显性”电平(见总线值) ,那么该单元就失去了仲裁,必须退出发送 状态。
安全性(Safety ):
为了获得最安全的数据发送, CAN 的每一个节点均采取了强有力的措施以进行错误检测、错误标定及 错误自检。
错误检测(Error Detection) :
为了检测错误,必须采取以下措施:
- 监视(发送器对发送位的电平与被监控的总线电平进行比较)
- 循环冗余检查
- 位填充
- 报文格式检查
错误检测的执行(Performance of Error Detection) :
错误检测的机制要具有以下的属性:
- 检测到所有的全局错误
- 检测到发送器所有的局部错误
- 可以检测到一报文里多达 5个任意分布的错误
- 检测到一报文里长度低于 15(位)的突发性错误
- 检测到一报文里任一奇数个的错误
对于没有被检测到的错误报文,其残余的错误可能性概率低于:报文错误率 * 4.7 * 10 –11。
错误标定和恢复时间(Error Sinalling and Recovery Time):
任何检测到错误的节点会标志出已损坏的报文。此报文会失效并将自动地开始重新传送。如果不再出 现新错误的话,从检测到错误到下一报文的传送开始为止,恢复时间最多为 29个位的时间。
故障界定(Fault Confinement):
CAN 节点能够把永久故障和短暂扰动区分开来。永久故障的节点会被关闭。
连接(Connections ):
CAN 串行通讯链路是可以连接许多单元的总线。理论上,可连接无数多的单元。但由于实际上受延迟 时间以及 /或者总线线路上电气负载的影响,连接单元的数量是有限的。
单通道(Single Channel):
总线是由单一进行双向位信号传送的通道组成。通过此通道可以获得数据的再同步信息。要使此通道 实现通讯,有许多的方法可以采用,如使用单芯线(加上接地)、 2条差分线、光缆等等。这本技术规范 不限制这些实现方法的使用,即未定义物理层。
总线值(Bus value):
总线可以具有两种互补的逻辑值之一:“显性”或“隐性” 。 “显性”位和“隐性”位同时传送时,总 线的结果值为“显性” 。比如,在执行总线的“线与”时,逻辑 0代表“显性”等级,逻辑 1代表“隐性” 等级。本技术规范不给出表示这些逻辑电平的物理状态(比如,电压、光) 。
应答(Acknowledgment ):
所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答;对于不连贯的报文,接收器作出标 志。
睡眠模式/唤醒(Sleep Mode / Wake-up):
为了减少系统电源的功率消耗, 可以将 CAN 器件设为睡眠模式以便停止内部活动及断开与总线驱动器 的连接。 CAN 器件可由总线激活,或系统内部状态而被唤醒。唤醒时,虽然传输层要等待一段时间使系统 振荡器稳定,然后还要等待一段时间直到与总线活动同步(通过检查 11个连续的“隐性”的位),但在总 线驱动器被重新设置为“总线在线”之前,内部运行已重新开始。为了唤醒系统上正处于睡眠模式的其他 节点,可以使用一特殊的唤醒报文,此报文具有专门的、最低等级的识别符。(rrr rrrd rrrr; r =‘ ’ 隐性’ d = ‘显性’)
3.报文传输
3.1 帧类型
报文传输由以下 4个不同的帧类型所表示和控制:
- 数据帧:数据帧携带数据从发送器至接收器。
- 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。
- 错误帧:任何单元检测到一总线错误就发出错误帧。
- 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
数据帧(或远程帧)通过帧间空间与前述的各帧分开。
3.1.1 数据帧
数据帧由 7个不同的位场组成:
帧起始、仲裁场、控制场、数据场、 CRC 场、应答场、帧结尾。数据场的长度可以为 0。
帧起始
它标志数据帧和远程帧的起始,由一个单独的“显性”位组成。
只在总线空闲(参见“总线空闲”)时,才允许站开始发送(信号)。所有的站必须同步于首先开始 发送信息的站的帧起始前沿(参见“硬同步”)。
Interframe Space Interframe Space
Start of Frame
Arbitration Field
C ont rol Field
Data Field
C R C F ield
ACK Field End of Frame
or Overload Frame
DATA FRAME
仲裁场
仲裁场包括识别符和远程发送请求位(RTR ) 。
识别符:识别符的长度为 11位。这些位的发送顺序是从 ID-10到 ID-0。最低位是 ID-0。最高的 7位 (ID-10到 ID-4)必须不能全是“隐性”。
RTR 位:该位在数据帧里必须为“显性” ,而在远程帧里必须为“隐性” 。
Interframe Space
S t art
of Frame
Identifier
R T R B it
C ont rol F ie ld ARB I TRATION FIELD
控制场
控制场由 6个位组成, 包括数据长度代码和两个将来作为扩展用的保留位。 所发送的保留位必须为 “显 性” 。接收器接收所有由“显性”和“隐性”组合在一起的位。
数据长度代码:数据长度代码指示了数据场中字节数量。 数据长度代码为 4个位, 在控制场里被发送。
r1r0DLC 3DLC 2DLC 1DLC 0 or C R C Field
Arbitration F i eld
Data F i eld
C ONTR O L FIELD
Data Length Code
reserved
bits
数据长度代码中数据字节数的编码(DATA LENGTH CODE ):缩写:d —“显性”
r —“隐性”
0 1 2 3 4 5 6 7 8
d
d
d
d
d
d
d
d
r
d
d
d
d
r
r
r
r
d
d
d
r
r
d
d
r
r
d
d r d r d r d r d DLC 3DLC 2DLC 1DLC 0
Number of Data
B ytes
Data Length Code
数据帧:允许的数据字节数:{0,1,....,7,8}。其他的数值不允许使用。
数据场
数据场由数据帧中的发送数据组成。它可以为 0~8个字节,每字节包含了 8个位,首先发送 MSB 。 CRC 场
CRC 场包括 CRC 序列(CRC SEQUENCE),其后是 CRC 界定符(CRC DELIMITER)。
Data
or
C o ntrol
F ie ld
C R C S equence C R C Del imiter Ack F ie ld
C R C F IELD
CRC 序列:由循环冗余码求得的帧检查序列最适用于位数低于 127位〈 BCH 码〉的帧。为进行 CRC
计算,被除的多项式系数由无填充位流给定,组成这些位流的成分是:帧起始、仲裁场、控制场、数据场
(假如有),而 15个最低位的系数是 0。将此多项式被下面的多项式发生器除(其系数以 2为模):
X 15 + X 14+ X 10+ X 8 + X 7+ X 4 + X 3+ 1
这个多项式除法的余数就是发送到总线上的 CRC 序列(CRC SEQUENCE)。为了实现这个功能,
可以使用 15位的位移寄存器 CRC_RG(14:0)。如果用 NXTBIT 标记指示位流的下一位,它由从帧的起
始到数据场末尾都由无填充的位序列给定。
CRC 序列(CRC SEQUENCE)的计算如下:
CRC_RG =0; // 初始化移位寄存器
REPEAT;
CRCNXT = NXTBIT EXOR CRC_RG(14) ;
CRC_RG(14:1) =CRC_RG(13:0) ; // 寄存器左移 1位
CRC_RG(0) = 0;
IF CRCNXT THEN
CRC_RG(14:0) =CRC_RG(14:0) EXOR (4599hex ) ;
ENDIF
UNTIL (CRC 序列开始或存在一个错误条件)
在传送 /接收数据场的最后一位以后, CRC_RG包含有 CRC 序列。 CRC 序列之后是 CRC 界定符 , 它 包含一个单独的“隐性”位 。
应答场
应答场长度为 2个位,包含应答间隙(ACK SLOT)和应答界定符(ACK DELIMITER)。在应答场 里, 发送站发送两个 “隐性” 位。 当接收器正确地接收到有效的报文, 接收器就会在应答间隙 (ACK SLOT) 期间(发送 ACK 信号)向发送器发送一“显性”的位以示应答。
C R C
Field
ACK Sl ot ACK Delimiter
End of
F r ame
ACK FIELD
应答间隙:所有接收到匹配 CRC 序列(CRC SEQUENCE)的站会在应答间隙(ACK SLOT)期间 用一“显性”的位写入发送器的“隐性”位来作出回答。
ACK 界定符:ACK 界定符是 ACK 场的第二个位,并且是一个必须为“隐性”的位。因此,应答间隙 (ACK SLOT) 被两个 “隐性” 的位所包围, 也就是 CRC 界定符 (CRC DELIMITER) 和 ACK 界定符 (ACK DELIMITER )。
帧结尾
每一个数据帧和远程帧均由一标志序列界定。这个标志序列由 7个“隐性”位组成。
3.1.2 远程帧
通过发送远程帧,作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置。
远程帧由 6个不同的位场组成:
帧起始、仲裁场、控制场、 CRC 场、应答场、帧末尾。
与数据帧相反, 远程帧的 RTR 位是 “隐性” 的。 它没有数据场, 数据长度代码的数值是不受制约的 (可 以标注为容许范围里 0...8的任何数值)。此数值是相应于数据帧的数据长度代码。
Inter
Space
Inter Space Start of Frame
Arbitration Field
C on trol Field
C R C F ield
ACK Field
End of Frame
or Overload Frame
REMOTE FR AME
Frame F rame
RTR 位的极性表示了所发送的帧是一数据帧(RTR 位“显性”)还是一远程帧(RTR “隐性”)。
3.1.3 错误帧
错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志(ERROR FLAG)的叠加。第二 个场是错误界定符。
Data F rame
Error Flag
Error Delimiter
Interframe Space orER R O R F RAME
Overload F rame
superposition ofError Flags
为了能正确地终止错误帧,一“错误被动”的节点要求总线至少有长度为 3个位时间的总线空闲(如 果“错误被动”的接收器有本地错误的话) 。因此,总线的载荷不应为 100%。
有两种形式的错误标志,主动错误标志(Active error flag)和被动错误标志(Passive error flag)。 主动错误标志由 6个连续的“显性”位组成。被动错误标志由 6个连续的“隐性”的位组成,除非被其他 节点的“显性”位重写。
检测到错误条件的“错误主动”的站通过发送主动错误标志,以指示错误。错误标志的形式破坏了从 帧起始到 CRC 界定符的位填充规则(参见“编码”),或者破坏了应答场或帧末尾场的固定形式。所有 其他的站由此检测到错误条件并与此同时开始发送错误标志。因此,“显性”位(此“显性”位可以在总 线上监视)的序列导致一个结果,这个结果就是把各个单独站发送的不同的错误标志叠加在一起。这个顺 序的总长度最小为 6个位,最大为 12个位。
检测到错误条件的“错误被动”的站试图通过发送被动错误标志,以指示错误。“错误被动”的站等 待 6个相同极性的连续位(这 6个位处于被动错误标志的开始)。当这 6个相同的位被检测到时,被动错 误标志的发送就完成了。
z报文路由:报文的内容由识别符命名。识别符不指出报文的目的地,但解释数据的含义。因此, 网络上所有的节点可以通过报文滤波确定是否应对该数据做出反应。
z
z数据连贯性:应确保报文在 CAN 网络里同时被所有的节点接收(或同时不被接收)。因此,系统 的数据连贯性是通过多播和错误处理的原理实现的。
位速率(Bit rate):
不同的系统, CAN 的速度不同。可是,在一个给定的系统里,位速率是唯一的,并且是固定的。
优先权(Priorities ):
在总线访问期间,识别符定义一个静态的报文优先权。
远程数据请求(Remote Data Request) :
通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由 相同的识别符命名的。
多主机(Multimaster ):
总线空闲时,任何单元都可以开始传送报文。具有较高优先权报文的单元可以获得总线访问权。
仲裁(Arbitration ):
只要总线空闲,任何单元都可以开始发送报文。如果 2个或 2个以上的单元同时开始传送报文,那么 就会有总线访问冲突。通过使用了识别符的逐位仲裁可以解决这个冲突。仲裁的机制确保了报文和时间均 不损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发 送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发 送的是一“隐性”电平而监视的是一“显性”电平(见总线值) ,那么单元就失去了仲裁,必须退出发送状 态。
安全性(Safety ):
为了获得最安全的数据发送, CAN 的每一个节点均采取了强有力的措施以便于错误检测、错误标定及 错误自检。
错误检测:
要进行检测错误,必须采取以下措施:
- 监视(发送器对发送位的电平与被监控的总线电平进行比较)
- 循环冗余检查
- 位填充
- 报文格式检查
错误检测的执行:
错误检测的机制要具有以下的属性:
- 检测到所有的全局错误
- 检测到发送器所有的局部错误
- 可以检测到报文里多达 5个任意分布的错误
- 检测到报文里长度低于 15(位)的突发性错误
- 检测到报文里任一奇数个的错误
对于没有被检测到的错误报文,其剩余的错误可能性概率低于:报文错误率 * 4.7 * 10 –11。
- 21 -
错误标定和恢复时间:
任何检测到错误的节点会标志出损坏的报文。此报文会失效并将自动地开始重新传送。如果不再出现 错误的话,从检测到错误到下一报文的传送开始为止,恢复时间最多为 31个位的时间。
故障界定(Fault Confinement):
CAN 节点能够把永久故障和短暂扰动区别开来。故障的节点会被关闭。
连接(Connections ):
CAN 串行通讯链路是可以连接许多单元的总线。理论上,可连接无数多的单元。但由于实际上受延迟 时间以及 /或者总线线路上电气负载的影响,连接单元的数量是有限的。
单通道(Single Channel):
总线包括有一单独的通道。通过此通道可以获得数据的再同步报文。要使此通道实现通讯,有许多的 方法可以采用,如使用单芯线(加上接地)、 2条差分线、光缆等等。这本技术规范不限制这些实现方法 的使用。
总线值(Bus values):
总线有一个补充的逻辑值:“显性”或“隐性” 。 “显性”位和“隐性”位同时传送时,总线的结果值为 “显性” 。比如,在总线的“写 -与”执行时,逻辑 0代表“显性”等级,逻辑 1代表“隐性”等级。本技 术规范不包括表示逻辑等级的物理状态(比如,电压、灯光) 。
应答(Acknowledgment ):
所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答,对于不连贯的报文,接收器作出标 志。
睡眠模式/唤醒(Sleep Mode / Wake-up):
为了减少系统电源的功率消耗, 可以将 CAN 器件设为睡眠模式以便停止内部活动及断开与总线驱动器 的连接。 CAN 器件可由总线激活,或系统内部状态而被唤醒。唤醒时,虽然 MAC 子层要等待一段时间使 振荡器稳定,然后还要等待一段时间直到与总线活动同步(通过检查 11个连续的“隐性”的位),但在总 线驱动器被重新设置为“总线在线”之前,内部运行已重新开始。
振荡器容差(Oscillator Tolerance):
位定时要求允许凭经验地把陶瓷谐振器使用在传输率高达 125kbit/s的应用里。有关更多准确的评估, 请参考:
Dais, S; Chapman, M;
“Impact of Bit Representation on Transport Capacity and Clock Accuracy in Serial Data Streams”, SAE Technical Paper Series 890532, Multiplexing in Automobiles SP-773 March 1989
为了满足 CAN 协议的整个总线速度范围,需要使用晶振。
3.报文传输
3.1 帧格式
有两种不同的帧格式, 不同之处为识别符场的长度不同:具有 11位识别符的帧称之为标准帧。 而含有 29位识别符的帧为扩展帧。
- 22 -
3.2 帧类型
报文传输由以下 4个不同的帧类型所表示和控制:
数据帧:数据帧将数据从发送器传输到接收器。
远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。
错误帧:任何单元检测到总线错误就发出错误帧。
过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
数据帧和远程帧可以使用标准帧及扩展帧两种格式。它们用一个帧间空间与前面的帧分隔。
3.2.1 数据帧(Data Frame)
数据帧由 7个不同的位场组成:
帧起始(Stsrt of Frame)、仲裁场(Arbitration Frame)、控制场(Control Frame)、数据场(Data Frame )、 CRC 场(CRC Frame)、应答场(ACK Frame)、帧结尾(End of Frame)。数据场的长度 可以为 0。
Interframe Space Interframe Space
Start of Frame
Arbitration Field
C ont rol Field
Data Field
C R C F ield
ACK Field End of Frame
or Overload Frame
DATA FRAME
帧起始(标准格式和扩展格式)
帧起始(SOF )标志数据帧和远程帧的起始,仅由一个“显性”位组成。
只在总线空闲(参见“总线空闲”)时才允许站开始发送(信号)。所有的站必须同步于首先开始发 送报文的站的帧起始前沿(参见“硬同步”)。
仲裁场
标准格式帧与扩展格式帧的仲裁场格式不同。
- 标准格式里,仲裁场由 11位识别符和 RTR 位组成。识别符位由 ID-28…ID-18。
- 扩展格式里,仲裁场包括 29位识别符、 SRR 位、 IDE 位、 RTR 位。其识别符由 ID-28... ID-0。 为了区别标准格式和扩展格式,前版本 CAN 规范 1.0-1.2的保留位 r1现表示为 IDE Bit。
- 23 -
- 24 -
11 bitIDENTIFIER C ont rol Field Arbitration Field
Data Field
S
O T I D r 0DLC
S ta ndard For mat
11 bitIDENTIFIER C on trol F i eld Arbitration Field
Data Field
S O S R R I D E
r 1DLC
E x tended For mat
r 0T 18 bitIDENTIFIER
识别符
识别符— 标准格式
识别符的长度为 11位, 相当于扩展格式的基本 ID (Base ID) 。 这些位按 ID-28到 ID-18的顺序发送。 最低位是 ID-18。 7个最高位(ID-28 - ID-22)必须不能全是“隐性”。
识别符— 扩展格式
和标准格式形成对比,扩展格式由 29位组成。其格式包含两个部分:11位 基本 ID 、 18位 扩展 ID 。 基本 ID :基本 ID 包括 11位。它按 ID-28到 ID-18的顺序发送。它相当于标准识别符的格式。基本 ID 定义扩展帧的基本优先权。
扩展 ID :扩展 ID 包括 18位。它按 ID-17到 ID-0顺序发送。
标准帧里,识别符其后是 RTR 位。 RTR 位(标准格式以及扩展格式)
RTR 的全称为“远程发送请求位(Remote Transmission Request BIT)”。 RTR 位在数据帧里必须为“显性” ,而在远程帧里必须为“隐性”
扩展格式里,基本 ID 首先发送,其次是 IDE 位和 SRR 位。扩展 ID 的发送位于 SRR 位之后。 SRR 位(扩展格式)
SRR 的全称是“替代远程请求位(Substitute Remote Request BIT)”。
SRR 是一隐性位。它在扩展格式的标准帧 RTR 位位置,因此代替标准帧的 RTR 位。
因此,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的,扩展帧的基本 ID (参 见以下的“扩展识别符” )如同标准帧的识别符。
IDE 位(扩展格式)
IDE 的全称是“识别符扩展位(Identifier Extension Bit)” IDE 位属于:
- 扩展格式的仲裁场 - 标准格式的控制场
标准格式里的 IDE 位为“显性” ,而扩展格式里的 IDE 位为“隐性” 。
控制场(标准格式以及扩展格式)
控制场由 6个位组成。 标准格式的控制场格式和扩展格式的不同。 标准格式里的帧包括数据长度代码、 IDE 位(为显性位,见上文) 、及保留位 r0。扩展格式里的帧包括数据长度代码和两个保留位:r1和 r0。 其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的组合。
IDE / r1r0DLC3DLC2DLC1DLC0 or CR C F ie ld
Arbitration Fi eld
Data F i eld CO NTR O L FIELD
Data Length Code
res erved
bits
Standard Format and ExtendedFormat
数据长度代码(标准格式以及扩展格式)
数据长度代码指示了数据场里的字节数量。数据长度代码为 4个位,它在控制场里发送。 数据长度代码中数据字节数的编码
缩写:d —“显性”
r —“隐性”
0 1 2 3 4 5 6 7 8
d
d
d
d
d
d
d
d
r
d
d
d
d
r
r
r
r
d
d
d
r
r
d
d
r
r
d
d r d r d r d r d DLC 3DLC 2DLC 1DLC 0
Number of Data
Bytes
Data Length Code
数据帧:允许的数据字节数:{0,1,....,7,8}。
其他的数值不允许使用。
数据场(标准格式以及扩展格式)
数据场由数据帧里的发送数据组成。它可以为 0~8个字节,每字节包含了 8个位,首先发送 MSB 。
CRC 场(标准格式以及扩展格式)
CRC 场包括 CRC 序列(CRC SEQUENCE),其后是 CRC 界定符(CRC DELIMITER)。
- 25 -
Data or
C o ntrol F ie ld
C R C S equence C R C Del imiter Ack F ield
C R C F IELD
CRC 序列(标准格式以及扩展格式)
由循环冗余码求得的帧检查序列最适用于位数低于 127位〈 BCH 码〉的帧。
为进行 CRC 计算,被除的多项式系数由无填充位流给定,组成这些位流的成分是:帧起始、仲裁场、 控制场、数据场(假如有),而 15个最低位的系数是 0。将此多项式被下面的多项式发生器除(其系数以 2为模):
X 15 + X 14 + X 10 + X 8 + X 7 + X 4 + X 3 + 1
这个多项式除法的余数就是发送到总线上的 CRC SEQUENCE(CRC 序列)。为了实现这个功能, 可以使用 15位的位移寄存器— CRC_RG(14:0)。 如果 NXTBIT 指示位流的下一位, 那么从帧的起始到数据 场末尾都由没有填充的位顺序给定。 CRC 序列(CRC SEQUENCE)的计算如下:
CRC_RG = 0; // 初始化移位寄存器
REPEAT
CRCNXT = NXTBIT EXOR CRC_RG(14);
CRC_RG(14:1) = CRC_RG(13:0); // 寄存器左移一位
CRC_RG(0) = 0;
IF CRCNXT THEN
CRC_RG(14:0) = CRC_RG(14:0) EXOR (4599hex);
ENDIF
UNTIL (CRC序列起始或有一错误条件 )
在传送 /接收数据场的最后一位以后, CRC_RG包含有 CRC 顺序。
CRC 界定符(标准格式以及扩展格式)
CRC 序列之后是 CRC 界定符,它包含一个单独的“隐性”位 。
应答场(标准格式以及扩展格式)
应答场长度为 2个位,包含应答间隙(ACK SLOT)和应答界定符(ACK DELIMITER)。在 ACK 场 (应答场)里,发送站发送两个“隐性”位。
当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK SLOT)期间(发送 ACK 信号)向 发送器发送一“显性”位以示应答。
- 26 -
CR C Field
ACK Sl ot ACK Delimiter
End of
F r ame
ACK FIELD
应答间隙
所有接收到匹配 CRC 序列(CRC SEQUENCE)的站会在应答间隙(ACK SLOT)期间用一“显性” 的位写入发送器的“隐性”位来作出回答。
应答界定符
应答界定符是应答场的第二个位,并且是一个必须为“隐性”的位。因此,应答间隙(ACK SLOT) 被两个 “隐性” 的位所包围, 也就是 CRC 界定符 (CRC DELIMITER) 和应答界定符 (ACK DELIMITER) 。
帧结尾(标准格式以及扩展格式)
每一个数据帧和远程帧均由一标志序列定界。这个标志序列由 7个“隐性”的位组成。
3.2.2 远程帧
通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。
远程帧也有标准格式和扩展格式,而且都由 6个不同的位场组成:
帧起始、仲裁场、控制场、 CRC 场、应答场、帧结尾。
与数据帧相反, 远程帧的 RTR 位是 “隐性” 的。 它没有数据场, 数据长度代码的数值是不受制约的 (可 以标注为容许范围里 0...8的任何数值)。此数值是相应于数据帧的数据长度代码。
Inter Space Inter Space
Start of Frame
Arbitration Field
C on trol Field
CR C Field
ACK Field
End of Frame
or Overload Frame
REMOTE FR AME
Frame F rame RTR 位的极性表示了所发送的帧是一数据帧(RTR 位“显性”)还是一远程帧(RTR “隐性”)。
- 27 -
- 28 -
3.2.3 错误帧
错误帧由两个不同的场组成。第一个场用是不同站提供的错误标志(ERROR FLAG)的叠加。第二个 场是错误界定符。
Data
F rame
Error Flag
Error Delimiter
Interframe Space orER R O R F RAME
Overload F rame
superposition ofError Flags
为了能正确地终止错误帧,一“错误被动”的节点要求总线至少有长度为 3个位时间的总线空闲(如 果“错误被动”的接收器有局部错误的话) 。因此,总线的载荷不应为 100%。
错误标志
有两种形式的错误标志:主动的错误标志和被动的错误标志。
1. 主动的错误标志由 6个连续的“显性”位组成。
2. 被动的错误标志由 6个连续的“隐性”的位组成,除非被其他节点的“显性”位重写。 检测到错误条件的“错误激活”的站通过发送主动错误标志指示错误。错误标志的形式破坏了从帧起 始到 CRC 界定符的位填充的规则(参见“编码”),或者破坏了 ACK 场或帧结尾场的固定形式。所有其 他的站由此检测到错误条件并与此同时开始发送错误标志。因此,“显性”位(此“显性”位可以在总线 上监视)的序列导致一个结果,这个结果就是把个别站发送的不同的错误标志叠加在一起。这个序列的总 长度最小为 6个位,最大为 12个位。
检测到错误条件的“错误被动”的站试图通过发送被动错误标志指示错误。“错误被动”的站等待 6个相同极性的连续位(这 6个位处于被动错误标志的开始)。当这 6个相同的位被检测到时,被动错误标 志的发送就完成了。
错误界定符
错误界定符包括 8个“隐性”的位。
错误标志传送了以后,每一站就发送“隐性”的位并一直监视总线直到检测出一个“隐性”的位为止。 然后就开始发送其余 7个“隐性”位。
3.2.4 过载帧
过载帧包括两个位场:过载标志和过载界定符。
有三种过载的情况,这三种情况都会引发过载标志的传送:
1. 接收器的内部情况(此接收器对于下一数据帧或远程帧需要有一延时)。 2. 在间歇的第一和第二字节检测到一个“显性”位。
3. 如果 CAN 节点在错误界定符或过载界定符的第 8位(最后一位)采样到一个显性位,节点
会发送一个过载帧(不是错误帧) 。错误计数器不会增加。
根据过载情况 1而引发的过载帧只允许起始于所期望的间歇的第一个位时间,而根据情况 2和情况 3引发的过载帧应起始于所检测到“显性”位之后的位。
通常为了延时下一个数据帧或远程帧,两种过载帧均可产生。
- 29 -
End of Frame or
Overload Overload Delimiter
Inter Space orOVE R LOAD FRAME
Overload F r ame
superposition ofOverload Flags
F l ag
F r ame Error Delimiter orOverload Delimiter
过载标志(Overload Flag)
过载标志由 6个“显性”的位组成。过载标志的所有形式和主动错误标志的一样。
过载标志的形式破坏了间歇场的固定形式。因此,所有其他的站都检测到过载条件并与此同时发出过 载标志。如果有的节点在间歇的第 3个位期间检测到“显性”位,则这个位将解释为帧的起始。
备注:
基于 CAN1.0 和 CAN1.1版本的控制器对第 3个位有另一解释,如下:
有的节点在间歇的第 3个位期间于本地检测到一“显性”位,则其他的节点将不能正确地解释过载标 志,而是将这 6个“显性”位中的第一个位解释为帧的起始。这第 6个“显性”的位破坏了产生错误条件 的位填充的规则
过载界定符(Overload Delimeter) 过载界定符包括 8个“隐性”的位。
过载界定符的形式和错误界定符的形式一样。过载标志被传送后,站就一直监视总线直到检测到一个 从“显性”位到“隐性”位的跳变。此时,总线上的每一个站完成了过载标志的发送,并开始同时发送其 余 7个“隐性”位。
3.2.5 帧间空间
数据帧(或远程帧)与先行帧的隔离是通过帧间空间实现的,无论此先行帧类型如何(数据帧、远程 帧、错误帧、过载帧) 。所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空 间隔离的。
帧间空间(Interframe Space)
帧间空间包括间歇、总线空闲的位场。如果“错误被动”的站已作为前一报文的发送器时,则其帧空 间除了间歇、总线空闲外,还包括称作挂起传送(SUSPEND TRANSMISSION)的位场。
对于已作为前一报文发送器的“错误被动”的站,其帧间空间如下图所示:
:
Frame
Bus Idle
INTERFRAME SPAC E
Intermission F r ame
对于已作为前一报文发送器的“错误主动”的站,其帧间空间如下图所示:
Frame
Bu s Idle INTER F R A ME SPACE
Intermissi on Frame
Suspend Transmission
间歇(Intermission )
间歇包括 3个“隐性”的位。
间歇期间,所有的站均不允许传送数据帧或远程帧,唯一要做的是标示一个过载条件。
备注:
如果 CAN 节点有一报文等待发送并且节点在间歇的第三位采集到一显性位, 则此位被解释为帧的起始 位,并从下一个位开始发送报文的识别符首位,而不用首先发送帧的起始位或成为一接收器。
总线空闲(Bus IDLE)
总线空闲的时间是任意的。只要总线被认定为空闲,任何等待发送报文的站就会访问总线。在发送其 他报文期间,有报文被挂起,对于这样的报文,其传送起始于间歇之后的第一个位。
总线上检测到的“显性”的位可被解释为帧的起始。
挂起传送(Suspend Transmission)
“错误被动”的站发送报文后,站就在下一报文开始传送之前或总线空闲之前发出 8个“隐性”的位 跟随在间歇的后面。如果与此同时另一站开始发送报文(由另一站引起),则此站就作为这个报文的接收 器。
3.3 关于帧格式的符合性
标准格式相当于在 CAN1.2规范中描述的数据 /远程帧。而扩展格式是 CAN 协议的一新特色。为了使 控制器的设计相对地简单,不要求扩展格式的仪器达到它的满扩展(比如,在扩展格式里发送报文或接收 来自于报文的数据 )。但是,仪器必须无条件地支持标准格式。
如果新的控制器至少具有以下属性 (这些属性与 3.1和 3.2定义的帧格式有关) , 则被认为是符合 CAN 规范:
- 每一新的控制器支持标准格式
- 每一新的控制器可以接收扩展格式的报文。这需要扩展格式不因其格式而被破坏。可是,不要求新 的控制器非得支持扩展格式。
3.4 发送器 /接收器的定义
发送器(Transmitter )
产生报文的单元被称之为报文的“发送器”。此单元保持作为报文发送器直到总线出现空闲或此单元 失去仲裁(ARBITRATION )为止。
接收器(Receiver )
如果有一单元不作为报文的发送器并且总线也不空闲,则这一单元就被称之为报文的“接收器”。
- 30 -
4.报文滤波
报文滤波取决于整个识别符。允许在报文滤波中将任何的识别符位设置为“不考虑”的可选屏蔽寄存 器,可以选择多组的识别符,使之被映射到隶属的接收缓冲器里。
如果使用屏蔽寄存器,它的每一个位必须是可编程的,即,他们能够被允许或禁止报文滤波。屏蔽寄 存器的长度可以包含整个识别符,也可以包含部分的识别符。
5 报文校验
校验报文有效的时间点,发送器与接收器各不相同。
发送器(Transmitter )
如果直到帧的末尾位均没有错误,则此报文对于发送器有效。如果报文破损,则报文会根据优先权自 动重发。为了能够和其他报文竞争总线,重新传输必须在总线空闲时启动。
接收器(Receiver )
如果直到一最后的位(除了帧末尾位)均没有错误,则报文对于接收器有效。帧末尾最后的位被置于 “不重要”状态,如果是一个“显性”电平也不会引起格式错误(参见 7.1章节)。
6.编码
位流编码(Bit Stream Coding)
帧的部分,诸如帧起始、仲裁场、控制场、数据场以及 CRC 序列,均通过位填充的方法编码。无论 何时,发送器只要检测到位流里有 5个连续相同值的位,便自动在位流里插入一补充位。
数据帧或远程帧(CRC 界定符、应答场和帧结尾)的剩余位场形式固定,不填充。错误帧和过载帧的 形式也固定,但并不通过位填充的方法进行编码。
其报文里的位流根据“不返回到零”(NRZ )之方法来编码。这就是说,在整个位时间里,位的电平 要么为“显性”,要么为“隐性”。
7.错误处理
7.1 错误检测
有以下 5种不同的错误类型(这 5种错误不会相互排斥)
? 位错误(Bit Error)
单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间 里检测到一个位错误。但是在仲裁场(ARBITRATION FIELD)的填充位流期间或应答间隙(ACK SLOT) 发送一“隐性”位的情况是例外的—— 此时,当监视到一“显性”位时,不会发出位错误。当发送器发送 一个被动错误标志但检测到“显性”位时,也不视为位错误。
? 填充错误(Struff Error)
如果在使用位填充法进行编码的信息中, 出现了第 6个连续相同的位电平时, 将检测到一个填充错误。 ? CRC错误(CRC Error)
CRC 序列包括发送器的 CRC 计算结果。接收器计算 CRC 的方法与发送器相同。如果计算结果与接 收到 CRC 序列的结果不相符,则检测到一个 CRC 错误。
? 形式错误(Form Error)
当一个固定形式的位场含有 1个或多个非法位,则检测到一个形式错误。 (备注:接收器的帧末尾最后 一位期间的显性位不被当作帧错误 )
? 应答错误(Acknowledgment Error)
只要在应答间隙(ACK SLOT)期间所监视的位不为“显性”,则发送器会检测到一个应答错误。
7.2 错误标定
检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误 标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。站检测到无论是位错误、填充错误、 形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。
只要检测到的错误的条件是 CRC 错误,错误标志的发送开始于 ACK 界定符之后的位(其他的错误条 件除外)。
8.故障界定
至于故障界定,单元的状态可能为以下三种之一:
? ‘ 错误主动 ’
? ‘ 错误被动 ’
? ‘ 总线关闭 ’
“错误主动”的单元可以正常地参与总线通讯并在错误被检测到时发出主动错误标志。
“错误被动”的单元不允许发送主动错误标志。“错误被动”的单元参与总线通讯,在错误被检测到 时只发出被动错误标志。而且,发送以后,“错误被动”单元将在初始化下一个发送之前处于等待状态。 (见“挂起发送”)
“总线关闭”的单元不允许在总线上有任何的影响(比如,关闭输出驱动器)。
在每一总线单元里使用两种计数以便故障界定:
1) 发送错误计数
2) 接收错误计数
这些计数按以下规则改变(注意,在给定的报文发送期间,可能要用到的规则不只一个):
1. 当接收器检测到一个错误,接收错误计数就加 1。在发送主动错误标志或过载标志期间所检测到的 错误为位错误时,接收错误计数器值不加 1。
2. 当错误标志发送以后,接收器检测到的第一个位为“显性”时,接收错误计数值加 8。
3. 当发送器发送一错误标志时,发送错误计数器值加 8
例外情况 1:
发送器为“错误被动”,并检测到一应答错误(注:此应答错误由检测不到一“显性” ACK 以及当发 送被动错误标志时检测不到一“显性”位而引起)。
例外情况 2:
发送器因为填充错误而发送错误标志(注:此填充错误发生于仲裁期间。引起填充错误是由于:填充 位〈填充位〉位于 RTR 位之前,并已作为“隐性”发送,但是却被监视为“显性”)。
例外情况 1和例外情况 2时,发送错误计数器值不改变。
4. 发送主动错误标志或过载标志时,如果发送器检测到位错误,则发送错误计数器值加 8。
5. 当发送主动错误标志或过载标志时,如果接受器检测到位错误(位错误),则接收错误计数器值加 8。
6. 在发送主动错误标志、被动错误标志或过载标志以后,任何节点最多容许 7个连续的 “显性”位。 以下的情况,每一发送器将它们的发送错误计数值加 8,及每一接收器的接收错误计数值加 8:
当检测到第 14个连续的“显性”位后;
在检测到第 8个跟随着被动错误标志的连续的“显性”位以后;
在每一附加的 8个连续“显性”位顺序之后。
7. 报文成功传送后 (得到 ACK 及直到帧末尾结束没有错误) , 发送错误计数器值减 1, 除非已经是 0。
8. 如果接收错误计数值介于 1和 127之间, 在成功地接收到报文后 (直到应答间隙接收没有错误, 及
成功地发送了 ACK 位) , 接收错误计数器值减 1。 如果接收错误计数器值是 0, 则它保持 0, 如果大于 127, 则它会设置一个介于 119到 127之间值。
9. 当发送错误计数器值等于或超过 128时,或当接收错误计数器值等于或超过 128时,节点为“错 误被动”。让节点成为“错误被动”的错误条件致使节点发出主动错误标志。
10. 当发送错误计数器值大于或等于 256时,节点为“总线关闭”。
11. 当发送错误计数器值和接收错误计数器值都小于或等于 127时, “错误被动” 的节点重新变为 “错 误主动”。
12. 在总线监视到 128次出现 11个连续“隐性”位之后,“总线关闭”的节点可以变成“错误主动” (不再是“总线关闭”),它的错误计数值也被设置为 0。
备注:
一个大约大于 96的错误计数值显示总线被严重干扰。最好能够预先采取措施测试这个条件。
备注:
起动 /睡眠:如果起动期间内只有 1个节点在线,以及如果这个节点发送一些报文,则将不会有应答, 并检测到错误和重复报文。由此,节点会变为“错误被动”,而不是“总线关闭”。
9 振荡器容差
由于给定的最大的振荡器容差为 1.58%,因此凭经验可将陶瓷谐振器使用在传输率高达 125 kbit/s的 应用里。有关更多准确的评估,请参考:
Dais, S; Chapman, M;
“Impact of Bit Representation on Transport Capacity and Clock Accuracy in Serial Data Streams”, SAE Technical Paper Series 890532, Multiplexing in Automobiles SP-773 March 1989
为了满足 CAN 协议的整个总线速度范围,需要使用晶振。
具有最高振荡准确度要求的芯片,决定了其他节点的振荡准确度。
备注:
使用这个版本 CAN 规约的控制器以及使用前版本 V1.0和 V1.1控制器,当它们在一个网络中共同作 用时, 所有的控制器必须配备石英晶振。 这就是说, 陶瓷谐振器只能用于所有节点都为 CAN 协议规范 V1.2或更晚版本的网络。
10.位定时要求
标称位速率
标称位率为一理想的发送器在没有重新同步的情况下每秒发送的位数量。
标称位时间
标称位时间 = 1 /标称位速率
可以把标称位时间划分成了几个不重叠时间的片段,它们是:
- 同步段 (SYNC_SEG)
- 传播时间段 (PROP_SEG)
- 相位缓冲段 1(PHASE_SEG1)
- 相位缓冲段 2(PHASE_SEG2)
S a mple Po int
同步段(SYNC SEG)
位时间的同步段用于同步总线上不同的节点。这一段内要有一个跳变沿。
传播段(PROP SEG)
传播段用于补偿网络内的物理延时时间。它是总线上输入比较器延时和输出驱动器延时总和的两倍。
相位缓冲段 1、相位缓冲段 2(PHASE SEG1、 PHASE SEG2)
相位缓冲段用于补偿边沿阶段的误差。这两个段可以通过重新同步加长或缩短。
采样点(SAMPLE POINT)
采样点是读总线电平并解释各位的值的一个时间点。 采样点位于相位缓冲段 1(PHASE_SEG1) 之后。
信息处理时间(INFORMATION PROCESSING TIME)
信息处理时间是一个以采样点作为起始的时间段。采样点用于计算后续位的位电平。
时间份额(TIME QUANTUM)
时间份额是派生于振荡器周期的固定时间单元。存在有一个可编程的预比例因子,其整体数值范围为 1— 32的整数,以最小时间份额为起点,时间份额的长度为:
时间份额(TIME QUANTUM)= m * 最小时间份额(MINIMUM TIME QUANTUM)
(m 为预比例因子)
时间段的长度(Length of Time Segments )
同步段(SYNC_SEG)为 1个时间份额; 传播段(PROP_SEG)的长度可设置为 1, 2, … , 8个 时间份额;缓冲段 1 (PHASE_SEG1)的长度可设置为 1, 2, … , 8个时间份额;相位缓冲段 2 (PHASE_SEG2) 的 长 度 为 阶 段 缓 冲 段 1( PHASE_SEG1) 和 信 息 处 理 时 间 (INFORMATION PROCESSING TIME)之间的最大值; 信息处理时间少于或等于 2个时间份额。
一个位时间总的的时间份额值可以设置在 8— 25的范围。
备注:
人们通常不想在控制单元的现场 CPU 和它的通讯器件里使用不同的振荡器。因此, CAN 器件的的振 荡频率趋向于现场 CPU 的振荡频率, 而且取决于控制单元的需求。 为了得到所需的比特率, 位定时的可设 置性是有必要的。另一方面,由于这些器件允许选择外部的振荡器以便于被调整到合适的比特率,因此, 对于这些部件,可配置性不是必要的。
但是,应该将所有节点的采样点选择于共有的位置。为此, SLIO 器件必须兼容以下的位时间定义。
硬同步(HARD SYHCHRONIZATION):
硬同步后,内部的位时间从同步段重新开始。因此,硬同步强迫由于硬同步引起的沿处于重新开始的 位时间同步段之内。
重新同步跳转宽度(RESYHCHRONIZATION JUMP WIDTH)
重新同步的结果使相位缓冲段 1增长,或使相位缓冲段 2缩短。相位缓冲段加长或缩短的数量有一个 上限,此上限由重新同步跳转宽度给定。重新同步跳转宽度应设置于 1和最小值之间(此最小值为 4, PHASE_SEG1)
可以从一位值转换到另一位值的过渡过程得到时钟信息。这里有一个属性,即:只有后续位的一固定 最大数值才具有相同的数值。这个属性使总线单元在帧期间重新同步于位流成为可能。可用于重新同步的 两个过渡过程之间的最大的长度为 29个位时间。
一个沿的相位误差(PHASE ERROR of an edge)
一个沿的相位误差由相关于同步段的沿的位置给出,以时间额度量度。相位误差定义如下:
? e = 0 如果沿处于同步段里(SYNC_SEG)。 .
? e > 0 如果沿位于采集点(SAMPLE POINT)之前。 .
? e < 0="" 如果沿处于前一个位的采集点(sample="">
重新同步(RESYHCHRONIZATION )
当引起重新同步沿的相位误差的幅值小于或等于重新同步跳转宽度的设定值时,重新同步和硬件同步 的作用相同。当相位错误的量级大于重新同步跳转宽度时:
? 如果相位误差为正,则相位缓冲段 1被增长。增长的范围为与重新同步跳转宽度相等的值。
? 如果相位误差为负,则相位缓冲段 2被缩短。缩短的范围为与重新同步跳转宽度相等的值。
同步的原则(SYHCHRONIZATION RULES)
硬同步和重新同步都是同步的两种形式,遵循以下规则:
1. 在一个位时间里只允许一个同步。
2. 仅当采集点之前探测到的值与紧跟沿之后的总线值不相符合时,才把沿用作于同步。
3. 总线空闲期间,有一“隐性”转变到“显性”的沿,无论何时,硬同步都会被执行。
4. 符合规则 1和规则 2的所有从“隐性”转化为“显性”的沿可以用作为重新同步。有一例外情况, 即,当发送一显性位的节点不执行重新同步而导致一“隐性”转化为“显性”沿,此沿具有正的相位误差, 不能用作于重新同步。
区别
这本技术规范的 B 部分已经包括了 CAN1.2的修改。以下各个内容替换的地方用星号标注。
B part
关于故障界定第 6个规则的更改
B part
根据 ISO/OSI的参考模型,通过不同层来说明 CAN 的层结构
B part
包含在“振荡器容差”里的注释
B part
识别符的位数已修改
B part
根据振荡器容差,介绍了第三种产生过载帧的条件。
B part
增加了一个注释。因为有关间歇最后一个位的解释已被修改。
B part
有一注释的介绍,因为关于帧的起始有另一解释。
B part
3.3章节“关于帧格式的符合性”
B part
第 4章,最近介绍了“报文滤波”
B part
关于根据振荡器容差修改的协议兼容性
B part
关于没有本地 CPU 的 ECUs 实现的位定时注释
译自 BOSCH 公司《CAN Specification V2.0》
范文五:史上最全can总线协议规则
一、 CAN 总线简介
CAN 是 控制器局域网 络 (Controller Area Network, CAN)的简称,是由研 发和生产汽车电子产品著称的 德国 BOSCH 公司开发了的,并最终成为国际标准 (ISO11898) 。是国际上应用最广泛的 现场总线 之一。在建立之初, CAN 总线就 定位于汽车内部的现场总线, 具有传输速度快、 可靠性高、 灵活性强等优点。 上 世纪 90年代 CAN 总线开始在汽车电子行业内逐步推广,目前已成为汽车电子行 业首选的通信协议, 并且在医疗设备、 工业生产、 楼宇设施、 交通运输等领域中 取得了广泛的应用。
二、 CAN 总线技术及其规范
2.1性能特点
(1)数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个) 节点发起数据通信,通信方式灵活,且无需站地址等节点信息;
(2)CAN 网络上的节点信息分成不停的优先级,可满足不同的实时要求,高 优先级节点信息最快可在 134μs 内得到传输 ;
(3)采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先 级较低的节点会主动退出发送,而高优先级的节点可不受影响的继续发送数据, 从而大大节省了总线冲突仲裁时间。 尤其是在网络负载很重的情况下也不会出现 网络瘫痪的情况 ;
(3)通信距离最远可达 10KM(速率低于 5Kbps) 速率可达到 1Mbps(通信距离 小于 40M ) ;
(4)通信的硬件接口简单,通信线少,传输介质可以是双绞线,同轴电缆 或光缆。 CAN 总线适用于大数据量短距离通信或者长距离小数据量,实时性要求 比较高,多主多从或者各个节点平等的现场中使用。
(5)采用短帧结构,传输时间短,受干扰概率低,每帧信息都有 CRC 校验及 其他检验措施,数据出错率极低;
(6)节点在严重错误的情况下具有自动关闭输出的功能, 以使总线上其他节 点的操作不受影响。
(7)CAN 总线使用两根信号线上的差分电压传递信号,显性电平可以覆盖隐 形电平。
2.2技术规范
2.2.1CAN 的分层结构
图 1 CAN的分层结构
逻辑链路控制子层(LLC )的功能:为数据传送和远程数据请求提供服务, 确认由 LLC 子层接收的报文实际上已被接收,为恢复管理和通知超载提供信息。 在定义目标处理时,存在许多灵活性。
介质访问控制子层(MAC )的功能:主要是传送规则,即控制帧结构、执行 仲裁、错误检测、出错标定和故障界定。 MAC 子层也要确定当开始一次新的传送 时,总线是否开放或者是否马上开始接收。位定时特性也是 MAC 子层的一部分。 2.2.2CAN 的报文传送和帧结构
报文传送由以下四种不同的帧类型所表示和控制。
·数据帧:数据帧携带数据从发送器至接收器;
·远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧; ·错误帧:任何单元检测到一总线错误时发出的错误帧;
·超载帧:超载帧用来在先行的和后续的数据帧 (或远程帧) 之间提供一附 加的延时。
数据帧或远程帧通过帧空间与前述的各种帧分开。
2.2.2.1数据帧
数据械是用来传输数据的帧,由 7个位场组成:1. 帧起始位场、 2. 仲裁场、 3. 控制场、 4. 数据场、 5.CRC 场、 6. 应答场、 7帧结尾。数据帧的组成如图 2所 示。
CAN2.0B 中存在两种不同的帧格式,其主要区别在于仲裁场的标示符长度。 具有 11位标示符的帧称为标准帧, 包括 29位标示符的帧称为扩展帧。 标准帧和 扩展帧的仲裁场格式如图 3所示。
图 3 标准帧和扩展帧的仲裁场格式
·帧起始
帧的起始场仅仅包含一个显性位, 当 CAN 总线空闲时, 总线保持隐性位, 出 现一个显性位即表示总线开始数据传输。 CAN 总线上的节点只能在总线空闲时发 送数据,而检测到起始位之后节点就进入接收状态。
·仲裁场
仲裁场由标识符和远程发送请求位(RTR 位)组成。 RTR 位在数据帧中为显 性,在远程帧中为隐性。其结构如图 4所示。
图 4 CAN总线数据帧仲裁场结构
对于 CAN2.0B 标准, 标准格式帧与扩展格式帧的仲裁场标识符格式不同。 标 准格式里, 仲裁场由 11位识别符和 RTR (RTR=0) 位组成。 识别符位由 ID.28~ID.18组成。而在扩展格式里,仲裁场包括 29位识别符、替代远程请求位 SRR 、标识 位 IDE 、 远程发送请求位 RTR (RTR=1) 。 其识别符由 ID.28~ID.0组成, 其格式包 含两个部分:11位(ID.28~ID.18)基本 ID 、 18位(ID.17~ID.0)扩展 ID 。扩 展格式里,基本 ID 首先发送,其次是 SRR 位和 IDE 位。扩展 ID 的发送位于 SRR 位和 IDE 位之后。
SRR 的全称是“替代远程请求位(Substitute Remote Request BIT) ” , SRR
是一隐性位。它在扩展格式的标准帧 RTR 位上被发送,并代替标准帧的 RTR 位。 因此,如果扩展帧的基本 ID 和标准帧的识别符相同,标准帧与扩展帧的冲突是 通过标准帧优先于扩展帧这一途径得以解决的。
IDE 的全称是“识别符扩展位(Identifier Extension Bit) ” ,对于扩展格 式, IDE 位属于仲裁场;对于标准格式, IDE 位属于控制场。标准格式的 IDE 位 为“显性” ,而扩展格式的 IDE 位为“隐性” 。
·控制场
控制场由 6个位组成, 包括数据长度码和两个将来作为扩展用的保留位。 其 结构如图 5所示。
图 5 CAN总线数据场结构图
标准格式和扩展格式的控制场格式不同。标准格式里的帧包括数据长度代 码、 IDE 位 (为显性位) 及保留位 r0。 扩展格式里的帧包括数据长度代码和两个 保留位:r1和 r0。其保留位必须发送为显性,但是接收器认可“显性”和“隐 性”位的任何组合。
·数据场
数据场由数据帧里的发送数据组成。它可以为 0~8个字节,每字节包含了 8个位,首先发送最高有效位(MSB ) 。
·CRC 场
CRC 场由 15位 CRC 序列和 1位隐性 CRC 界定符组成, ,其结构如图 6所示。
图 6 CAN总线 CRC 场结构图
CRC 序列用于检测报文传输错误, CRC 校验是由硬件完成的。
·应答场
应答场长度为两个位,包含 应答间隙(ACK slot)和应答界定符(ACK delimiter
) ,其结构如图 7所示。
图 7 CAN总线应答场结构图
在应答场里,发送站发送两个“隐位” 。当接收器正确的接收到有效的报文 时,接收器就会在应答间隙期间(发送 ACK 信号)向发送器发送一“显性”位以 示应答。 所接收到匹配 CRC 序列的站会在应答间隙期间用一 “显性” 位写入发送 器的“隐性”位来做出回答。 ACK 界定符是 ACK 场的第二个位, 并且必须为隐位。 因此应答间隙被两个 “隐 性”位所包围,也就是 CRC 界定符和 ACK 界定符。
·帧结束
每一个数据帧或远程帧均由一串七个隐性位的帧结束域结尾。 这样, 接收节 点可以正确检测到一个帧的传输结束。
2.2.2.2远程帧
通过发送远程帧, 作为某数据接收器的站通过其资源节点对不同的数据传送 进行初始化设置。远程帧由 6
个不同的位场组成,即帧起始、仲裁场、控制场、 CRC 场、应答场、帧结束。其结构如图 8所示。
图 8 CAN总线远程帧结构
与数据帧相比, 远程帧的 RTR 位为隐性, 没有数据域, 数据长度编码域可以 是 0~8个字节的任何值,这个值是远程帧请求发送的数据帧的数据域长度。当 具有相同仲裁域的数据帧和远程帧同时发送时, 由于数据帧的 RTR 位为显性, 所 以数据帧获得优先。发送远程帧的节点可以直接接收数据。 2.2.2.3错误帧
错误帧由两个不同的域组成:第一个域是来自控制器的错误标志; 第二个域 为错误分界符。其结构如图 9所示。
图 9 CAN总线错误帧结构
错误标志:有两种形式的错误标志。 ①激活 (Active)错误标志。它由 6个 连续显性位组成。 ②认可 (Passive)错误标志。 它由 6个连续隐性位组成。 它可 由其他 CAN 控制器的显性位改写。
错误界定:错误界定符由 8个隐性位组成。 传送了错误标志以后, 每一站就 发送一个隐性位, 并一直监视总线直到检测出 1个隐性位为止, 然后就开始发送 其余 7个隐性位。
2.2.2.4超载帧
过载帧由两个区域组成:过载标识域及过载界定符域。 其结构如图 10所示。
图 10 CAN总线超载帧结构
下述三种状态将导致过载帧发送:
1) 接收方在接收一帧之前需要过多的时间处理当前的数据 (接收尚未准备 好 ) ;
2) 在帧空隙域检测到显性位信号;
3) 如果 CAN 节点在错误界定符或过载界定符的第 8位采样到一个显性位节点 会发送一个过载帧。
2.2.2.5帧空间
帧空间包括间歇场和总线空闲的位场。其结构如图 11所示。
图 11 CAN总线帧空间结构
对于数据帧或远程帧无论前面的帧为何种类型他与前面帧的隔离都是通过 帧空间实现的。 所不同的是过载帧和错误帧之间没有帧空间, 多个过载帧之间也 不是由帧空间隔离的。
2.2.3错误类型和故障界定
2.2.3.1错误检测
CAN 总线协议定义了 5种错误类型用于监测总线上的数据传输。 这五种错误 包括:
1. 位错误 (Bit Error):CAN 总线上的节点在发送数据的同时也在检测总线 上的电平。如果在仲裁域之外,所发送的数据与节点监测到的数据不一致,则 CAN 总线产生了一次位错误。但是,如果在发送 ACK 段或者被动错误标志时,节 点检测到总线上电平与发送值不一致,并不判定产生了位错误。
2. 填充规则错误 (Stuff Error) :在 CAN 总线传输中,报文的侦起始、仲裁 域、 控制域、 数据域以及 CRC 校验部分只要连续出现五个相同的位就需要额外插 入一个相反的位, 这是 CAN 总线位填充的机制。 在 CAN 总线通信中, 如果一个节 点检测到六个连续相同的电平就判断总线出现了位填充错误。
3.CRC 校验 (CRC Error) : CAN总线的数据帧自带了 CRC 校验,在发送数 据的同时也计算这一帧的 CRC 校验码, 将校验码在数据帧的末尾部分发送。 接收 节点接收到数据帧后计算接收到的数据帧中数据域的 CRC 码, 并与接收到的 CRC 校验码比较以确定接收到的数据是否准确,如果不正确,则出现了 一次 CRC 校 验错误。
4. 格式错误 (Form Error) :在固定格式的位场中出现了非法位,比如,在 本该是隐性位的 CRC 界定符中出现了显性电平, 则监控节点判断出现了一次格式 错误。
5. 应答错误 (Acknowledgement Error ):在 CAN 总线传输中,发送节点发 送的应答场为隐性位, 接收节点需要在应答场中向总线发送显性位覆盖隐性位以 表示接受完成。 如果发送节点监测到帧的应答场仍然是隐性位, 则表明出现了一 次应答错误,没有节点接收到数据,发送失败。
2.2.3.2错误界定
当节点检测到一个错误之后, 会向总线发送错误帧, 同时本地错误计数器递
增。 在 CAN 总线上的每个节点都设有两个错误寄存器:接收错误计数器和发送错 误计数器, 分别用来计数接收和发送错误。 检测到错误, 相应的错误计数器递增 ; 成功发送或者接收一愤消息,相应的错误计数器递减直到为 0。当错误计数器小 于 127时, 节点处于主动错误状态, 错误计数器在 127到 255时, 节点处于被动 错误状态, 错误计数器超过 255时, 节点进入离线状态, 处于离线状态的节点将 不再参与总线上的数据传输。
2.2.3.3错误标定
检测到错误条件的站通过发送错误标志指示错误。 对于错误主动节点, 错误 信息为主动错误标志; 对于错误被动的节点, 错误信息为被动错误标志。 站检测 到的错误无论是位错误、 填充错误、 形势错误、 还是应答错误, 这个站都会在下 一位时发送错误标志信息。 检测到 CRC 错误时, 错误标志的发送开始于 ACK 界定 符之后的位,除非其他错误标志已经开始发送。