第5章 CAN总线协议.ppt_第1页
第5章 CAN总线协议.ppt_第2页
第5章 CAN总线协议.ppt_第3页
第5章 CAN总线协议.ppt_第4页
第5章 CAN总线协议.ppt_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章CAN总线协议,第5章CAN总线协议的主要内容,1、CAN总线节点数与总线长度的关系2、CAN总线速率与总线长度的关系3、CAN总线的四种基本帧结构4、CAN总线的仲裁机制5、CAN总线的同步机制6、CAN总线的滤波机制,第5章CAN总线协议,CAN(ControllerAreaNetwork)控制器局域网,可以归属于工业现场总线的范畴,是目前国际上应用广泛的开放式现场总线之一。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性(非破坏性仲裁)、实时性(高优先级永远占优)和灵活性(无需事先指定从站地址),它在汽车领域应用最为广泛,世界著名汽车制造厂商BENZ(奔驰)、BMW(宝马)、VolksWagen(大众)等都采用了CAN总线来实现汽车内部控制系统与各检测单元和执行机构之间的数据通信。CAN总线仅定义物理层和数据链路层,基于CAN基础总线又开发了新的协议:如DeviceNet、SDS、CAN-open、CAN-LIN等应用层协议。,通信方式灵活,为多主工作方式。CAN网络上的节点信息分成不同优先级,满足不同实时要求。非破坏性的总线仲裁。只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”。IS011898标准规定直接通信距离最远可达10Km(速率5Kbps以下)、通信速率最高可达1Mbps(此时通信距离最长为40m)。,第5章CAN总线协议,节点数主要取决于总线驱动电路和通信线路阻抗以及长度,目前最大节点数可达110个;报文标识符可达2048(211)种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符536870912(229)几乎不受限制。采用短帧结构。每一帧的有效数据字节数为8个,传输时间短,受干扰概率低,具有极好的检错效果。每帧信息都有帧间CRC校验和帧内的确认检错措施,保证了数据出错率极低。,第5章CAN总线协议,通信介质可为屏蔽双绞线,同轴电缆或光纤,灵活选择。CAN节点在严重错误的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,具有较强的抗干扰能力。,第5章CAN总线协议,CAN总线初始在汽车上的作用CAN总线的作用就是将整车中各种不同的控制器连接起来,实现信息的可靠共享,以达到减少整车线束的数量。可以设想一种极端情况,如下图所示:如果整车上所有的用电设备都是一个独立的CAN总线节点,并且每一个节点都向外发送自己当前的状态,同时接收来自外部的信息。那么整车的控制只需要一条CAN总线控制线和电源线即可。,第5章CAN总线协议,CAN总线的基本工作原理,CAN总线的通信通过一种类似于“会议”的机制实现的,只不过会议的过程并不是由一方(节点)主导,而是,每一个会议参加人员都可以自由的提出会议议题(多主通信模式),会议与总线之间的对应关系如下表:,第5章CAN总线协议,CAN总线的基本工作原理,第5章CAN总线协议,CAN总线网络结构,第5章CAN总线协议,CAN总线网络层次结构,第5章CAN总线协议,CAN总线网络层次结构,LLC功能:为数据传送和远程数据请求提供服务,完成报文接收、恢复管理和通知超载提供信息。MAC子层的功能:控制帧结构,执行仲裁,错误检测,出错标定和故障界定。物理层功能:定义信号怎样进行发送,涉及位定时、位编码和同步描述,第5章CAN总线协议,CAN节点中的CAN收发器,按照IS011898CAN总线标准将0或1逻辑信号转换为标准中规定的电平,同时具有反馈功能。,第5章CAN总线协议,CAN总线上的电平,CAN2.0A/B标准规定:总线空闲时,CAN_H和CAN_L上的电压为2.5V在数据传输时:显性电平(逻辑0):典型值CAN_H3.5VCAN_L1.5V隐性电平(逻辑1):典型值CAN_H2.5VCAN_L2.5V,第5章CAN总线协议,CAN总线节点数与长度的关系,第5章CAN总线协议,总线节点数与长度的关系,第5章CAN总线协议,利用基尔霍夫分压原理求出接收节点的电压,总线长度与节点数的关系,第5章CAN总线协议,总线长度与节点数的关系,第5章CAN总线协议,总线的最大节点数,第5章CAN总线协议,计算方法:第1个节点后的所有节点内阻应大于的驱动器所能驱动最大阻抗:,传输速率对总线长度的影响,CAN总线通信的应答机制,即成功接收到一帧报文的节点必须在应答场的”应答间隙”期间发送一位“显性位0”,表示成功接收到一帧数据。如通信速率为250Kbit/s,传送一个bit所需时间为:1/(2501000)=4s。那么应答间隙就是2s,该信号在总线上的延时时间必须小于2s才能保证发送节点成功的在应答间隙期间接收到该“显性电平0”。任何一对传输导线都可以简化为下图所示的电路模型,模型由电感和电容组成,因此,电流在其中传输并不是光速,而是有相位延迟。对于双绞线而言,信号在其中的传播延时时间约为,5ns/m(典型值)。当通信速率达到最高的1Mbit/s时,以40米长的总线为例,其延时时间(5ns*40)就达到200ns,而1Mbit/s的总线允许延时时间最长为500ns左右,那么超过40米的总线长度时,发送方就收不到应答间隙信号。,第5章CAN总线协议,总线长度与速率之间的制约因素,(1)总线通信速率越高,通信距离越短(单bit时间短,要求延迟就要小),对物理传输线的要求就越高,在双绞线、屏蔽线还是其他的传输线选择上,通信速率是一个很关键的参数;(2)信号在节点CPU内部的延时时间(取决于CPU的处理速度);(3)振荡器的容差(各个节点CPU内部晶振频率的差别,需要进行容差调整,这部分时间也需要加入延迟时间中);这三者因素加起来就综合决定了CAN总线的通信线缆长度与速度直接的制约因素。,第5章CAN总线协议,CAN总线的位编码方式,采用全宽单极性非归零码(NonReturnZero)非归零码的特点是:信道带宽即是允许的信号传输带宽,第5章CAN总线协议,CAN总线的位填充法则,位填充:在每五个连续的同电位(或逻辑)之后,嵌入一个位的反相电位(或逻辑),其目的是进行帧内的重同步。如传输数据=11000000001,第5章CAN总线协议,报文总线上的报文以不同的固定报文格式发送,其长度遵守报文类型来限制。当总线空闲时任何连接的单元都可以开始发送新的报文。报文路由:在不使用任何系统结构信息的条件下,同时在不要求所有节点及其应用层改变任何软件和硬件的情况下,报文被接收于CAN网络中。报文通信的标识:一个报文的内容由其标识符ID命名。报文的成组:采用报文滤波,可以让节点只接收网络中一部分报文。报文的相容性:可以使报文同时被所有节点或者零节点接收。,第5章CAN总线协议,3位速率不同的系统,CAN的速度不同。在一个给定的系统里,位速率是唯一的,并且是固定的。4优先权在总线访问期间内,识别符需定义一个静态的报文优先权。5远程数据请求通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧具有相同的标识符。,第5章CAN总线协议,6仲裁只要总线空闲,任何单元都可以开始发送报文。具有较高优先权报文的单元可以获得总线访问权。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。仲裁的机制确保了报文和时间均不损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性1”电平而监视的是一“显性0”电平,那么单元就失去了仲裁,必须退出发送状态。,第5章CAN总线协议,7错误检测位错误(BitError):发送的位值和总线监视的位值不相符合时,总线控制器将检测到一个位错误(其中仲裁场、应答场除外);填充错误(StuffError):如果在使用位填充编码的位流中,出现了第六个连续相同的位电平,将检测到一个位填充错误;形式错误(FormError):当一个固定形式的位场含有一个或多个非法位时,将检测到一个形式错误;应答错误(AcknowledgmentError):在应答间隙(ACKSLOT)所监视的位不为“显性0”,则会检测到一个应答错误;CRC错误(CRCError):如果接收器的CRC结果和发送器的CRC结果不同,将检测到一个CRC错误。,第5章CAN总线协议,7错误检测(1)通过位帧听监视检测位错误:当节点赢得总线发送权后,会对总线电平进行检测,当发送的电平和检测到的总线电平不一致时,认为错误。帧听就是发出去的数据再采样回来,比较采样回来的数据是否和发出的数据一致!,第5章CAN总线协议,7错误检测(2)帧校验检测(循环冗余检查CRC):接收数据的节点按照与发送数据的节点相同的方法计算数据的CRC校验值,如果接收节点的计算结果与数据包中CRC场的数据不一致,认为是CRC错误。,第5章CAN总线协议,7错误检测(3)位填充检测(bitstuffing):出现6个连续相同的电平时,认为是填充错误。(连续5个相同电平时,必须插入一个反相位电平),第5章CAN总线协议,7错误检测(4)报文格式检查控制场:包括两位保留位(必须为0),和数据长度位(DLC0DLC3)。数据场:包括最多8个字节的数据。CRC场:数据帧进行CRC校验,共15bit,其后跟了一位CRC界定符固定为隐性电平1。应答场:为两个隐性位1,其中第1位为应答间隙,第2位为应答界定符。成功接收到数据的节点必须在第1位发送1显性位0来应答该发送节点,接收节点必须在应答间隙期间(半个位时间宽度内)将总线电平由隐性位变成显性位以告知发送节点。帧结尾:7个连续的隐性电平1构成。,第5章CAN总线协议,7错误检测错误检测的执行:通过帧听、位填充、应答错误、固定位错误、CRC校验错误、报文格式检查等6种错误检测机制。发送节点和接收节点均可以检测到总线上的错误,并通过错误次数的累加来实现总线节点的关闭或挂起等操作,确保正确节点之间的数据通讯。,第5章CAN总线协议,8故障界定CAN节点能够把永久故障和短暂扰动区别开来。永久故障的节点会被关闭BusOff。9总线值CAN总线具有两种逻辑状态,隐性和显性。显性表示逻辑”0”,隐性表示逻辑”1”。显性0状态下,VCAN_H和VCAN_L两者差分电压大于2V。隐性1状态下,VCAN_H和VCAN_L两者电压差为0。“显性”位和“隐性”位同时传送时,总线的结果值为“显性”。10应答所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答,对于不连贯的报文,接收器作出错误标志。,第5章CAN总线协议,总线访问仲裁编码/解码出错标注超载标注,第5章CAN总线协议,CAN报文的帧结构报文传输由4个不同类型的帧表示和控制:数据帧(DataFrame):数据帧携带数据从发送器至接收器。总线上传输的大部分为此类帧。远程帧(RemoteFrame):由需求数据的总线单元发出,请求发送具有同一识别符的数据帧。其中数据帧和远程帧,它们是通过帧间空间与其他各帧进行分隔。错误帧(ErrorFrame):任何总线单元一旦检测到总线错误,就立刻发出错误帧。过载帧(OverloadFrame):过载帧用在先行数据帧(或远程帧)和后续数据帧(或远程帧)之间提供一附加的延时。以增大帧间间隔时间。,第5章CAN总线协议,数据帧数据帧由7个不同的位场(bitField)组成:帧起始(StartofFrame)、仲裁场(ArbitrationField)、控制场(ControlField)、数据场(DataField)、CRC场(CRCField)、应答场(ACKField)、帧结尾(EndofFrame)。数据场的长度可以为0。,第5章CAN总线协议,数据帧帧起始帧起始(SOF)标志数据帧和远程帧的起始,仅由一个“显性0”位组成。只在总线空闲时才允许站点开始发送。所有站必须同步于最先开始发送报文的站点的帧起始前沿(后面内容要讲解的硬同步)。,第5章CAN总线协议,数据帧仲裁场:标准格式帧:11位标识符(ID-28ID-18)和远程发送请求位(RTR)。扩展格式帧:包括29位标识符(ID-28ID-0)、替代远程请求(SubstituteRemoteRequest-SRR)、IDE(IDentifierExtensionbit)位、RTR位。区分标准帧和扩展帧:标准帧的IDE为0,扩展帧为1。,第5章CAN总线协议,数据帧标准格式标识符:长度为11位(ID-28到ID-18)顺序发送。最低位是ID-18相当于扩展格式的基本ID(BaseID)。其中7个最高位(ID-28ID-22)不能全是“隐性1”,目的是为了帧内的重同步使用。扩展格式标识符:扩展格式由(11+18=29)位组成。其格式包含两个部分:11位基本ID、18位扩展ID。基本ID包括11位,它按ID-28到ID-18的顺序发送,等同于标准帧的标识符格式。基本ID定义了扩展帧的基本优先权。扩展ID:扩展ID包括18位,按ID-17到ID-0顺序发送。,第5章CAN总线协议,数据帧-识别符SRR替代远程请求:SubstituteRemoteRequest只在扩展帧中出现,它是固定为隐性位1。它所处的位置相对应于标准帧的RTR位置,因此取名为替代远程请求位。当标准帧和扩展帧具有相同的基本标识符,标准帧优先于扩展帧(这是为什么?)。IDE:(IdentifierExtensionBit)标识符扩展位,标准帧的IDE位为显性0,而扩展帧的IDE位为隐性1。该位的目的:用于区分当前为标准帧还是扩展帧。,第5章CAN总线协议,重要标识位说明SRR:隐性位1,只出现于扩展格式。相对于标准帧,其占用标准帧RTR位置,因此代替标准帧的RTR位。当标准帧和扩展帧具有相同的基本标识符,标准帧优先于扩展帧。IDE:标识符扩展位(IdentifierExtensionBit),标准帧的IDE位为“显性0”,而扩展帧的IDE位为“隐性1”。RTR:远程发送请求位(RemoteTransmissionRequestBIT),在标准格式帧里,标识符后面是RTR位。RTR在数据帧里为显性0,在远程帧里为隐性1,这里就规定了数据帧要优先于远程帧。,第5章CAN总线协议,数据帧-控制场控制场由6个位组成标准格式:IDE位(为显性0)、保留位r0、数据长度。扩展格式:保留位r1,r0、数据长度。其中r1和r0为显性0。但是实际中,由于会出现数据长度为0的情况,发送的时候将其变成显性0和隐性1位的组合,就保证了后续不是连续5个显性位0的组合,避免了位填充错误的出现。,第5章CAN总线协议,数据帧-控制场控制场的数据长度,第5章CAN总线协议,数据帧-CRC场CRC场:由帧起始、仲裁域、控制场、数据域(远程帧无数据域),它们组成的二进制序列作为信息元。进行CRC校验。CRC序列之后,它包含一个单独的隐性位(1)作为CRC界定符。,第5章CAN总线协议,数据帧-CRC场生成多项式为:X15+X14+X10+X8+X7+X4+X3+1生成多项式对应二进制序列16位:1100010110011001CRC场=15位CRC校验序列+CRC界定符隐性位(1)计算方法采用移位方法。,第5章CAN总线协议,数据帧-CRC场计算过程生成多项式为:X15+X14+X10+X8+X7+X4+X3+1CRC多项式码=1100010110011001CRC场=15位CRC校验序列+CRC界定符隐性位(1),第5章CAN总线协议,数据帧-应答场应答场:(ACKnowledgeField)包含应答间隙(ACKSlot)和应答界定符(ACKDelimiter),在应答域里,发送站发送2个隐性位1。当接收器正确收到有效的报文时,接收器就会在应答间隙期间(发送ACK信息)向发送器发送一显性位(0)以示应答。,第5章CAN总线协议,数据帧-帧结束帧结束:每个数据帧和远程帧均由7个隐位1组成标志序列界定,第5章CAN总线协议,远程帧远程帧的目的:通过发送远程帧,向远程节点请求数据以初始化其资源。远程帧分为:标准格式和扩展格式。都由帧起始、仲裁场、控制场、CRC场、应答场、帧结尾等6个不同的位场组成。,第5章CAN总线协议,远程帧与数据帧相反,远程帧的RTR位是“隐性1”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0.8的任何数值)。RTR位的极性表示了所发送的帧是一数据帧(RTR位“显性0”)还是一远程帧(RTR“隐性1”)。从该极性即可判别其仲裁的优先级。,第5章CAN总线协议,错误帧错误帧由两个场构成。第一个场用是不同站提供的错误标志(ERRORFLAG)的叠加。第二个场是错误界定符。任何站点检测到总线上出错,即从下一位开始发送错误帧,即通知发送端停止发送。错误标志:主动报错和被动报错主动报错:标志由6个连续的显性位0组成。被动报错:标志由6个连续的隐性位1组成。其中被动报错的标志有可能被主动报错的显性位0所覆盖。,第5章CAN总线协议,错误帧对于主动报错的站点:检测到错误条件后,通过发送“主动报错标志”来指示错误,即发送连续的6个显性位(0)。(1)错误标志本身就违背了从帧的起始到CRC界定符的语法规则,即破坏了从帧起始到ACK域或结尾域的固定格式。(2)还未判断出错误的其他站点就会收到主动报错的站点发出的错误,并且开始发送被动报错的错误标志。(3)因此,错误标志位序列是由各个站点发送的不同的错误标志叠加在一起的结果。错误标志为6位,错误标志叠加位为12位。思考:为什么是12位呢?12位错误叠加位的目的:保证在第一个发现错误的站点发出的最末1位错误标志时,别的站点才发现错误,发现错误后,它也发送6个标志位,所以一共为12个标志位。),第5章CAN总线协议,错误帧对于被动报错的站点:检测到主动报错的站点发出的错误标志后后,试图通过发送“被动报错标志”来指示错误。即发送连续6个隐性位1。“被动报错”的站点从“被动报错标志”的开头起,等待6个连续的相同极性的位。当6个相同的位被监测到时,“被动报错标志”就算完成了。,第5章CAN总线协议,错误帧错误界定符:包括8个隐性位1。发送了错误标志后,主动报错的站点就发送一个隐性位1,(有可能别的主动报错的站点才发现错误,所以会发显性位0,那么总线上电平依然为显性电平0)。并一直监视总线,直到检测出一个隐性位为止,然后开始发送其余7个隐性位1。,第5章CAN总线协议,帧间空间数据帧与远程帧和之前帧,是通过帧间空间(InterFrameSpace)来实现的。不论前面的帧是数据帧、远程帧、错误帧、还是过载帧。特例(1)过载帧与错误帧之间无帧间空间。(2)过载帧之间无帧间空间。帧空间包括“间歇Intermission(3个隐性位1)”和“总线空闲”。发送前一报文的“被动报错”站点:帧间空间由(间歇intermission3隐性位+挂起传送suspendtransmission8隐性位)构成。其含义为:既然是你是上次发出报文的站点,同时发送出去的报文有错误,同时自己还没发现错误,让别的站点发现了并提醒了你,你才知道自己发出去的报文有错误,所以相当于自己把下次发送报文的机会让给别的站点。若在这8个隐性位期间,有别的站点发送数据,那么你只有成为接收站。,第5章CAN总线协议,帧间空间对于“主动报错”的站点作为无错误时的前一报文的接收器的站点其帧间空间为:,第5章CAN总线协议,其含义为:对于主动报错的站点,说明它具有较强发现错误的能力,让它下次发送数据时和别的站点在同一起跑线上和别的站点竞争。那么对于传输正确,没有出现错误时,肯定大家在下一次发送数据时都在同一起跑线上竞争。,超载帧过载帧包括:过载标志和过载界定符,在以下三种情况需要需要发送过载帧:接收器的内部原因要求缓发下一个数据帧或远程帧时。在帧间间歇(Intermission)的第1位或第2位检测到1个显性位0。如果CAN节点在错误帧界定符或超载帧界定符的第8位采样到一个显性位0,因为错误帧界定符或超载帧界定符的第8位之后还应该有帧间空间,为3个隐性1。这时可能别的节点误认为是帧空间间隔。则节点会发送一个过载帧(不是错误帧)。错误计数器不会增加。,第5章CAN总线协议,超载帧对于(1)接收器的内部原因要求缓发下一个数据帧或远程帧时。只允许起始于所期望的间歇的第1个位时间开始发送超载帧。对于(2)在间歇(Intermission)的第1位或第2位检测到1个显性位0。(3)在错误帧界定符或过载帧界定符的第8位采样到一个显性位0。在检测到显性位0之后立刻发送超载帧。过载标志由6个显性位0组成,和主动报错的错误标志一样。超载标志破坏了间歇域的固定格式,因此所有其他节点也会发出超载帧。超载标志叠加长度为12。过载界定符由8个隐性位组成。和错误界定符一样。过载标志传送后,站点一直监视总线,直到出现一个由显性位0到隐性位1的跳变为止,接着发送余下7位隐性位1。,第5章CAN总线协议,区分错误帧和超载帧超载帧的发送时刻:(1)正常帧结束,主动要求延迟发送时;(2)间歇(Intermission)的第1位或第2位检测到1个显性位0时;(3)错误帧或超载帧的第8位隐性位1变为显性位0时。错误帧的发送时刻:从控制场帧结尾期间,如果随时发现错误,随时就发送错误帧。综上比较:其发送时刻的起始点是不一样的。,第5章CAN总线协议,站点存在的三种状态主动错误(ActiveError):“主动错误”的站点可以正常地参与总线通讯,并在错误被检测到时发出主动错误标志。被动错误(PassiveError):“被动错误”的单元参与总线通讯,在错误被检测到时,只发出被动错误标志。总线关闭(Busoff):“总线关闭”的单元不允许在总线上有任何的影响(即关闭输出驱动器)。不能参与发送数据,也不参与发送错误标志,只是默默的记时钟个数。,第5章CAN总线协议,三种错误的通俗解释将“ActiveError主动错误”叫做“主动报错”将“PassiveError被动错误”叫做“被动报错”。,第5章CAN总线协议,ActiveError主动报错主动报错站点只要检查到错误,它立即“主动地”发出错标识(连续的6个显性位0)。所谓“出错标识”,它本身就是一个“错误的位序列”(连续的6个显性位0,不满足CAN协议的“最多5个连续的同性位”要求),目的是“主动地”告诉大家:即使你们没有发现“刚才我已发现”的错误,现在我“以身作则”发出一个错误,你们就都可以看到这个错误了。,第5章CAN总线协议,PassiveError被动报错被动报错站点如果检查到错误,它只能干瞪眼“被动地”等别人(主动报错站点)报错,等待的时候它可不能去动总线,直到检测出由主动报错站点发出的“错误的位序列”后,它才松了一口气:终于有人正式报错了!然后他发送错误界定符后,就可以再次去竞争总线。,第5章CAN总线协议,错误状态过程的转换出错标识本身没有什么优先级的问题。对于通过竞争得到总线使用权的发送站点来说,它在一边发一边听,有可能出现以下几种情况:(a)若发送站点自己发现自己错误了,它就干脆哗啦哗啦,乱发一气(连续的发6个显性位0)发送错误计数器增加。比喻:就象你小时候在幼儿园练习写字,写错一个笔画你自己就不耐烦了,在纸上哗啦哗啦乱画一气。目的就是告诉别人(别的站点):出错了!,第5章CAN总线协议,错误状态过程的转换(b)若发送站点自己没有发现错误,但作为主动报错的接收站点发现了错误,发现错误的这个站点就会立即哗啦哗啦往总线上乱发一气(连续的发6个显性位0)接收错误计数器增加。比喻:就象你小时候在幼儿园练习写字,写错一个笔画你自己没发现,可老师(主动报错站点)发现了就不耐烦了,在你的纸上哗啦哗啦乱画一气。目的就是告诉你自己以及告诉别人(发送站点和别的站点):出错了!,第5章CAN总线协议,错误状态过程的转换(C)如果发送站点自己没有发现错误,但作为”被动报错“的接收站点发现了错误接收错误计数器增加。发现错误的这个被动报错的站点只能慢慢的等待,等待别的主动报错站点报错。如果别的“主动报错”站点没发现错误,那就继续等,一直等到该发ACK的时候不给发送站发这个显性的ACK信号,当然了其他站点可能会发这个ACK,那说明其他站点没有发生错误,没办法,别人能通信,你不能通信!然后积攒到一定的时候,你就脱离总线吧!再继续等待一段时间,脱胎换骨,重新回到总线上(这个时候错误记录都清0了,你就成为主动报错的站点了)。比喻:如果你幼儿园的同学练习写字,写错字了他自己没发现,但被你(“被动报错站点”)发现了,但你不能说(老师不让乱说话)。你就只能等,等老师来发现他的错误(等待“主动报错”站点报错),如果老师发现错误,就确定你发现的错误是正确的,你也就自然得到纠正。如果老师没注意到,那么你就误认为同学写的没错,你就跟着他错下去了,长此以往,成绩就很差。什么时候变好呢,经过时间积累,降级了,成绩清零,从头开始。,第5章CAN总线协议,1、当接收器检测到1个错误,接收错误计数器REC就加1。在发送“主动报错”标志或过载标志期间所检测到的错误为位错误时,接收错误计数器REC不加1。2、在错误标志发送后,接收器检测到的第1个为显性0时,接收错误计数器REC加8。(说明有站点先于你发现错误)3、当发送器发送一错误标志时,发送错误计数器TEC加8。(自己发送的内容有错误,说明是错误的根源,要加8)4、当发送器发送“主动错误”标志或过载标志时,如果发送器检测到位错误,则发送错误计数器加8。(自己发送的内容有错误(发送本来是0,却读回来是1),或是在错误界定符中收到0,说明发送错误后,还没让第1时间让别的站点检测到错误,要加8)5、当接收器发送“主动错误”标志或过载标志时,如果接收器检测到位错误,则接收错误计数器REC加8。(作为主动报错站点发现错误后,发出的错误标志没有让别人发现,可能是自身接收器原因造成的,所以接收错误计数器要加8)6、在发送“主动错误“和”被动错误”标志或过载标志后,任何节点最多允许7个连续的显性位。当检测到14个连续的显性位后;或检测到第8个显性位跟在“”被动报错标志“后,每一个发送器的发送错误计数器TEC加8。每一个接收器的接收错误计数器REC加8。(说明发出错误标志后,许多站点都没检测到错误,问题不能确定是出在发送上还是接收上,所以都加8),错误状态过程的转换,第5章CAN总线协议,7、报文成功传送后(得到ACK以及直到帧末尾结束也没有错误)发送错误计数器TEC减1,除非已经是0。8、成功接收到报文后(直到应答间隙接收没有错误,以及成功发送了ACK位),如果接收错误计数器REC为1-127,则接收错误计数器REC-1,如果接收错误计数器REC值为0,则它保持为0,如果大于127,则它会设置为119-127之间的一个值。9、如果发送错误计数器TEC大于或等于128,或当接收错误计数器REC大于或等于128时,节点变为”被动报错“。10、当发送错误计数器TEC大于或等于256时,该节点处于”总线关闭“状态。11、当发送错误计数器TEC和接收错误计数器值都小于或等于127时,”被动报错”的节点重新变为“主动报错”站点。12、在总线上监视到128个连续隐性位之后,“总线关闭“的站点可以变成”主动报错“。同时它的TEC和REC都设置为0。,错误状态过程的转换,第5章CAN总线协议,第5章CAN总线协议,图中A和B节点的晶振频率完全一致(1)信号从A开始发送,经过T延时后才能到达节点B。(2)这时节点B就应该以收到A发来信息的开始时刻为基准进行位定时。(3)由于AB二者的时钟完全一致,因此,节点B的采样不会出现任何问题。即节点B总是能采样到A节点发出的总线电平。(一)这就是CAN的硬同步机制:硬同步只发送在一个帧的起始。,第5章CAN总线协议,提出问题,假设传输没有延时,但是节点A和节点B的晶振有误差虽然硬同步已经实现,正常A节点是采样第8个时钟的电平。但是节点B在采样第8个时钟时,却得不到和A相同的电平。而是A节点之后发送的电平了。原因是节点B的时间跑慢了。那么CAN如何处理各节点的时钟不同步问题呢?通过重同步的机制实现。,第5章CAN总线协议,提出问题,同步的概念CAN总线通过在一帧数据的传输过程进行重同步,保证一帧报文的顺利传输。重同步的本质为:增加或减少自己的位定时时间(如:增加12个时间片)来和总线上的其他节点同步。为了实现重同步,CAN总线控制器必须要通过位填充实现,即:如果CAN总线控制器发现报文里有5个连续相同的位,就会在第6位填充一位相反的数据位,那么总线上就会出现沿跳变,那么同步就发生在隐性电平(逻辑1)向显性电平(逻辑0)转换的跳变沿期间。,第5章CAN总线协议,标称位速率理想的发送器在没有重新同步的情况下每秒发送的位数量。正常位时间CAN总线的一个位时间可以分成四个部分:同步段传播时间段相位段缓冲1相位段缓冲2,第5章CAN总线协议,同步段同步段用于同步总线上的各个节点,在此段内期望有一个跳变沿出现。如果跳变沿出现在同步段之外,那么沿与同步段之间的长度叫做沿相位误差。采样点位于相位缓冲段1的末尾和相位缓冲段2开始处。传播时间段传播时间段用于补偿总线上信号传播时间和电子控制设备内部的延迟时间。因此,要实现与位流发送节点的同步,接收节点必须移相。,第5章CAN总线协议,采样点采样点是读总线电平并解释各位的值的一个时间点。采集点位于相位缓冲段1(PHASE_SEG1)之后。信息处理时间信息处理时间是一个以采样点作为起始的时间段。采集点用于计算后续位的位电平,预留的信息处理时间为相位缓冲段2(PHASE_SEG2),第5章CAN总线协议,时间段的长度,第5章CAN总线协议,硬同步硬同步只在总线空闲时通过一个下降沿(帧起始)来完成,此时不管有没有相位误差,所有节点的位时间重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段之内。重同步在消息帧的随后位中,每当有从“隐性位”到“显性位”的跳变,若该跳变落在了同步段之外,就会引起一次重同步。重同步机制可以根据跳变沿增长或者缩短位时间以调整采样点的位置,保证正确采样。,第5章CAN总线协议,硬同步就是由节点检测到的,来自总线的下降沿强迫节点立即确定出其内部位时间的起始位置,即同步段的起始时刻。硬同步的结果是:下降沿到来时刻的前一时刻(以时间份额tQ量度),即成为节点内部位时间同步段的起始时刻,并使内部位时间从同步段重新开始。硬同步一般用于帧的开始,即总线上的各个节点的内部位时间的同步段是由来自总线的一个报文帧的帧起始的前沿决定的。同步段的时间长度为1个时间份额。来自总线的引起硬同步的沿在t1时刻到来,则节点检测到该沿。将t1时刻的前一时刻t0(以tQ为周期)作为内部位时间同步段的起始时刻。,第5章CAN总线协议,重同步就是节点根据沿相位误差e的大小调整其内部位时间,以使节点内部位时间与来自总线的报文位流的位时间接近或相等。重同步的调整方法:PHASE-SEG1可被延长或PHASE-SEG2可被缩短,从而使节点能够正确地接收报文。重同步一般用于帧的位流发送期间,以补偿各个节点振荡器频率的不一致。这里涉及到沿相位误差e的概念。沿相位误差e由总线跳变沿相对于内部同步段的位置给定,以时间份额量度tQ,沿相位误差e的定义如下:,第5章CAN总线协议,沿相位误差e(1)若沿处于SYNC-SEG之内,则e=0;(2)若沿处于采样点之前(PS1内),则e0;(3)若沿处于前一位的采样点之后(PS2内),则e0)假定由于各节点振荡器频率的不一致,在t2时刻的跳变沿未处于节点第2位位时间的同步段SY内,而是处于PS1内,即有e0。这表明节点内部的位时间小于总线位流的位时间。为了使节点能从总线上通过采样得到正确的位数值,需使节点内部的位时间延长,以使节点内部位时间与总线位流位时间接近或相等。e0节点的重同步策略为:使PS1延长一定宽度(由同步跳转宽度SJW决定),图中PS1延长2个时间份额,即同步跳转宽度为大于等于2个时间份额,如为3个时间份额。,第5章CAN总线协议,沿相位误差(e0)当e0时,只是PS2会相应地缩短一定宽度(SJW决定)。就可以沿能落入SY段中。注意:相位缓冲段只在当前的位时间内被延长或缩短,在接下来的位时间内,只要没有重同步,各时间段将恢复编程预设值。,第5章CAN总线协议,典型的独立CAN控制器(SJA1000或PCA82C200)中,负责位定时的寄存器为总线定时寄存器0(BTR0确定CAN时钟分频)和总线定时寄存器1(BTR1确定相位缓冲段宽度),其结构如图寄存器中有关参数的计算公式如下:,第5章CAN总线协议,这些参数的范围在CAN中有较严格的规定,具体如表所示。为了优化网络性能,这些参数的设置往往需要考虑传输延迟、时钟偏频等因素。可以根据经验对其进行计算和设置。这里以一个时钟频率为20MHz、通信波特率为250Kb/s(位时间为4s)的系统为例,介绍与位定位有关的各参数的计算方法和步骤。,第5章CAN总线协议,第5章CAN总线协议,第5章CAN总线协议,在几个站同时需要发送数据时,要求快速地进行总线分配。实现无破坏性仲裁。CAN总线以报文为单位进行数据传送,报文的优先级存在于11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线发送冲突依靠标识符逐位仲裁来解决。,第5章CAN总线协议,只要总线空闲,任何单元都可以开始发送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论