现场总线与工业以太网CAN总线.ppt

上传人:max****ui 文档编号:14562412 上传时间:2020-07-24 格式:PPT 页数:113 大小:1.73MB
返回 下载 相关 举报
现场总线与工业以太网CAN总线.ppt_第1页
第1页 / 共113页
现场总线与工业以太网CAN总线.ppt_第2页
第2页 / 共113页
现场总线与工业以太网CAN总线.ppt_第3页
第3页 / 共113页
点击查看更多>>
资源描述
第4章 CAN 总 线,4.1 概述 4.2 CAN的的物理层 4.3 CAN协议规范 4.4 典型CAN总线器件及应用,第4章 CAN 总 线,CAN(Controller Area Network)即控制器局域网,可以归属于工业现场总线的范畴,通常称为CAN bus,即CAN总线,是目前国际上应用最广泛的开放式现场总线之一。 与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,它在汽车领域上的应用最为广泛,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、volkswagen (大众)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。 同时,由于CAN总线的特点,其应用范围目前已不仅局限于汽车行业,已经在自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域中得到了广泛应用。,4.1 概述,4.1.1 CAN工作原理、特点 4.1.2 发展背景及应用情况 4.1.3 一个典型的工程实例,4.1概述,CAN 最初出现在汽车工业中,80年代由德国Bosch公司最先提出。最初动机是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。1993年CAN 成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。 由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。随着应用领域的增多,CAN的规范从CAN 1.2 规范(标准格式)发展为兼容CAN 1.2 规范的CAN2.0规范(CAN2.0A为标准格式,CAN2.0B为扩展格式),目前应用的CAN器件大多符合CAN2.0规范。,4.1.1 CAN的工作原理、特点,1 CAN 的工作原理,当CAN 总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符(CAN2.0A),定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个节点发送具有相同标识符的报文。当一个节点要向其它节点发送数据时,该节点的CPU 将要发送的数据和自己的标识符传送给本节点的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。,CAN 芯片将数据根据协议组织成一定的报文格式发出,这时 网上的其它节点处于接收状态。 每个处于接收状态的节点对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。 由于CAN 总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN 总线中加进一些新节点而无需在硬件或软件上进行修改。当所提供的新节点是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。,2 CAN总线特点,CAN总线是一种串行数据通信协议,通信介质可以是双绞线、同轴电缆或光导纤维。最大通讯距离可达10km,最大通信速率可达1Mbps。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。 CAN总线特点如下: (1)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。利用这一特点也可方便地构成多机备份系统。,(2)网络上的节点(信息)可分成不同的优先级可以满足不同的实时要求。 (3)CAN总线采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,大大节省了总线冲突裁决时间;最重要的是在网络负载很重的情况下,也不会出现网络瘫痪的情况(以太网则可能)。 (4)可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。 (5)直接通信距离最远可达10km(速率5Kbps以下)。,(6)通信速率最高可达1MB/s(此时距离最长40m)。 (7)节点数实际可达110个。 (8)采用短帧结构,每一帧的有效字节数为8个,这样传输时间短,受干扰的概率低,且具有极好的检错效果。可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。 (9)每帧信息都有CRC校验及其他检错措施,保证了数据出错率极低。 (10)通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。 (11)节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响。,CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数据通讯。 CAN 控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN 协议废除了节点地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN 总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485 只能构成主从式结构系统,通信方式也只能以主节点轮询的方式进行,系统的实时性、可靠性较差; CAN 总线通过CAN 控制器接口芯片两个输出端的电平状态,可以保证不会出现象在RS-485网络中,当系统有错误,,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN 节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。 CAN 具有的完善的通信协议可由CAN 控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485 所无法比拟的。另外,与其它现场总线比较而言,CAN 总线是具有通信速率高、容易实现、低成本、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前CAN 总线应用于众多领域,具有强劲的市场竞争力的重要原因。,4.1.2 发展背景及应用情况,1. CAN(控制器局域网)的起源 1986年2月,德国Robert Bosch 公司介绍了一种新型的串行总线CAN控制器局域网。在此之前还没有一种现成的网络方案能够完全满足汽车工程师们增加新功能、减少电气连接线,使其能够用于产品,而非用于驱动技术的要求。 1987年中期,Intel交付了首枚CAN控制器82526,这是CAN方案首次通过硬件加以实现。不久之后,Philips 半导体推出了82C200。由于这两枚最先的CAN控制器在性能上各有千秋,因此形成Philips主推的BasicCAN 和Intel主推的FullCAN 两大阵营。今天的CAN控制器中,在同一模块中的验收滤波和报文控制方面仍有相当的不同。,今天,在欧洲几乎每一辆新客车均装配有CAN局域网。同样,CAN也用于其他类型的交通工具,甚至工业控制等领域也被大量使用。CAN已经成为全球范围内最重要的总线之一。2000年,全球市场销售超过1亿个CAN器件。 标准化与一致性 1990年,Bosch CAN 规范(CAN 2.0版)被提交给国际标准化组织,于1993年11月出版了CAN的国际标准ISO11898,除了CAN协议外,它也规定了最高至1Mbps波特率时的物理层。同时,在国际标准ISO11519-2中也规定了CAN数据传输中的容错方法。1995年,国际标准ISO11898进行了扩展,以附录的形式说明了29位CAN标识符。当前,修订的CAN规范正在标准化中。ISO11898-1称为“CAN数据链路层”,ISO11898-2称为“非容错CAN物理层”,ISO11898-3称为“容错CAN物理层”。国际标准ISO11992(卡车和拖车接口)和,ISO11783(农业和森林机械)都在美国标准J1939的基础上定义了基于CAN应用的子协议。 CAN的发展过程 尽管当初研究CAN的起点是应用于客车系统,但CAN的第一个市场应用却来自于其他领域。特别是在北欧,CAN早已得到非常普遍的应用。在荷兰,电梯厂商Kone在电梯上使用了CAN总线,Philips医疗系统也使用CAN构成X光机的内部网络,成为CAN的用户。 1992年5月,CiA“CAN in Automation”用户集团正式成立。CiA推荐仅使用遵循ISO11898的CAN收发器。现在,在当时的CAN网络中使用非常普遍但并不兼容的RS-485收发器已基本消失。 从1990年中期起,Infineon公司和Motorola公司等生产CAN模块集成器件的15家半导体厂商已向欧洲的汽车厂商提供,了大量的CAN控制器。从1990年后期起,亚洲的半导体厂商也开始提供CAN控制器。 从1992年起,奔驰公司开始在高级轿车中使用CAN技术。第一步使用电子控制器通过CAN对发动机进行管理;第二步使用控制器接收人们的操作信号。这就使用了2个物理上独立的CAN总线系统,它们通过网关连接。其他的汽车厂商在他们的汽车上也使用2套CAN总线系统。 现在,继Volvo、Saab、Volkswagen、BMW之后,Renault和Fiat也开始在他们的汽车上使用CAN总线。不仅如此,由于CAN总线的突出优势,其应用已经发展到了几乎涵盖所有的网络控制领域。,4.1.3 一个典型的工程实例,目前的汽车电子信息产品已经平均占到汽车总成本的1/3,并且这个比率正在不断被提高,有专家认为,未来10年内,这个比率将达到40。中高级轿车、客车甚至大型卡车上普遍采用了CAN总线,不仅提高了性能,节省大量电缆,而且给人们带来了更好的享受,提高了驾驭者的舒适程度。 一汽-大众汽车有限公司2001年12月上市的宝来(Bora)轿车,在动力传动系统和舒适系统中就装用了两套CAN数据传输系统,其中CAN数据传输舒适系统如图4.1所示。,接发电机 底盘网络,仪表单元,前门 单元,车身中央 控制单元,空调 单元,前座 单元,顶窗 单元,前座 单元,左前门 单元,后门 单元,后门 单元,后座 单元,后窗 单元,图4-1 CAN数据传输舒适系统CANZONGXIAN,图上较粗线代表CAN总线,它连接了传动装置控制中央单元、灯控单元、门控单元、座椅控制单元、空调单元以及仪表盘控制单元等等。较细线代表LIN总线,由LIN总线构成的LIN网络作为CAN网络的辅助网络,连接了车窗控制单元、雨刷控制单元、天窗控制单元等低速设备。 CAN数据传输舒适系统网络与动力传动系统网络通过网桥相互通信。 LIN网络(Local Interconnect Network),由汽车厂商为汽车开发,作为CAN网络的辅助网络,目标应用在低端系统,不需要CAN的性能、带宽以及复杂性。LIN的工作方式是一主多从,单线双向低速传送数据(最高20K位/秒),与CAN相比具有更低的成本,且基于UART接口,无需硬件协议控制器,使系统成本更低。,4.2 CAN的物理层,ISO 11898是一个使用CAN总线协议的汽车内高速通讯国际标准,这个标准的基本作用是定义了通讯链路的数据链路层和物理层,如图4.2所示物理层被细分成3个子层,它们分别是: l 物理信令位编码定时和同步 l 物理媒体连接驱动器和接收器特性 l 媒体相关接口总线连接器 收发器实现物理媒体连接子层。物理信令子层和数据链路层之间的连接是通过集成的协议控制器实现的,如:PCx82C200、SJA1000等。而媒体相关接口负责连接传输媒体譬如将总线节点连接到总线的连接器,如:PCA82C250、TJA1050等收发器。,图4.2 ISO11898标准数据链路层和物理层结构图,4.2 CAN的物理层,4.2.1 CAN的网络拓扑 4.2.2 CAN的媒体连接,4.2.1 CAN的网络拓扑,CAN以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。其网络拓扑形式大多是总线型结构,拓扑示意图见图4.3。,4.2.2 CAN的物理媒体连接,CAN总线物理层的物理媒体连接比较灵活,可以采用共地的单线式(汽车常用)、双线式、同轴电缆、双绞线、光缆等,理论上节点数目没有限制,实际可达110个。 电子信号在总线上会被信号线终端反射回来,避免信号的反射对节点正确读取总线电压非常重要。在总线的两个终端加上终端电阻以终结总线,可以避免信号反射。 CAN总线具有两种逻辑状态,隐性和显性。 隐性状态下,VCAN-H和VCAN-L被固定为平均电压电平,两者电压差为0。 显性状态下,VCAN-H和VCAN-L分别为3.5V和1.5V,两者差分电压大于2V。如图4.4所示。,图4.4 根据ISO 11898 的额定总线电平,4.3 CAN协议规范,4.3.1 基本术语 4.3.2 CAN的报文及结构 4.3.3 CAN的位仲裁技术,4.3 CAN协议规范,1.CAN规范中的对应ISO/OSI参考模型的网络层 CAN为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。在汽车电子行业里,使用CAN连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达1Mbit/s。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。 技术规范的目的是为了在任何两个CAN仪器之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。为了达到设计透明度以及实现灵活性,根据ISO/OSI参考模型,CAN 2.0规范细分为以下不同的层次:数据链路层和物理层(如图4.5所示)。,接收滤波,在以前版本的CAN规范中,数据链路层的LLC子层和MAC子层的服务及功能分别被解释为“对象层”和“传输层”。 逻辑链路控制子层(LLC)的作用范围如下: 为远程数据请求以及数据传输提供服务。 确定由实际要使用的LLC子层接收哪一个报文。 为恢复管理和过载通知提供手段。 在这里,定义对象处理较为自由。MAC子层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上什么时候开始发送新报文及什么时候开始接收报文,均在MAC子层里确定。位定时的一些普通功能也可以看作是MAC子层的一部分。理所当然,MAC子层的修改是受到限制的。,物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。同一网络的物理层对于所有的节点当然是相同的。尽管如此,在选择物理层方面还是很自由的。 这本技术规范的目的是定义数据链路层中MAC子层和一小部分LLC子层,以及定义CAN协议于周围各层当中所发挥的作用)。 2基本概念 CAN具有以下的属性: 报文的优先权 保证延迟时间 设置灵活 时间同步的多点接收, 系统内数据的连贯性 多主机 错误检测和错误标定 只要总线一处于空闲,就自动将破坏的报文重新传输 将节点的暂时性错误和永久性错误区分开来,并且可以自动关闭由OSI参考模型分层CAN结构的错误的节点。 依据ISO/OSI参考模型的层结构具有以下功能: 物理层定义信号是如何实际地传输的,因此涉及到位时间、位编码、同步的解释。本技术规范没有定义物理层的驱动器/接收器特性,以便允许根据它们的应用,对发送媒体和信号电平进行优化。 MAC 子层是CAN协议的核心。它把接收到的报文提供给LLC子层,并接收来自LLC子层的报文。MAC子层负责报文,分帧、仲裁、应答、错误检测和标定。MAC子层也被称作故障界定的管理实体监管。此故障界定为自检机制,以便把永久故障和短时扰动区别开来。 LLC子层涉及报文滤波、过载通知、以及恢复管理。,4.3.1 基本术语 1报文 总线上的报文以不同的固定报文格式发送,但长度受限。当总线空闲时任何连接的单元都可以开始发送新的报文。 2信息路由 在CAN 系统里,CAN 的节点不使用任何关于系统配置的报文(比如,节点地址)。这样不用依赖应用层以及任何节点软件和硬件的改变,就可以在CAN 网络中直接添加节点。提高系统灵活性。报文的内容由识别符命名。识别符不指出报文的目的地,但解释数据的含义。因此,网络上所有的节点可以通过报文滤波确定是否应对该数据做出反应。由于引入了报文滤波的概念,任何节点都可以接收报文,并与此同时对此报文做出反应。为确保报文在CAN 网络里同时被所有的节点接收(或同时不被接收)。因此,系统的数据连贯性是通过多播和错误处理的原理实现的。,3位速率 不同的系统,CAN 的速度不同。在一个给定的系统里,位速率是唯一的,并且是固定的。 4优先权 在总线访问期间,识别符定义一个静态的报文优先权。 5远程数据请求 通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由相同的识别符命名的。 6仲裁 只要总线空闲,任何单元都可以开始发送报文。具有较高优先权报文的单元可以获得总线访问权。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。,仲裁的机制确保了报文和时间均不损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监视的是一“显性”电平(见总线值),那么单元就失去了仲裁,必须退出发送状态。 7错误检测 为了获得最安全的数据发送,CAN 的每一个节点均采取了强有力的措施以便于错误检测、错误标定及错误自检。 要进行检测错误,必须采取以下措施: 监视(发送器对发送位的电平与被监控的总线电平进行比较) 循环冗余检查, 位填充 报文格式检查 错误检测的执行 错误检测的机制要具有以下的属性: 检测到所有的全局错误 检测到发送器所有的局部错误 可以检测到报文里多达5个任意分布的错误 检测到报文里长度低于15(位)的突发性错误 检测到报文里任一奇数个的错误 错误标定和恢复时间 任何检测到错误的节点会标志出损坏的报文。此报文会失效并将自动地开始重新传送。如果不再出现错误的话,从检测,到错误的节点会标志出损坏的报文。此报文会失效并将自动地开始重新传送。如果不再出现错误的话,从检测到错误到下一报文的传送开始为止,恢复时间最多为31个位的时间。 8故障界定 CAN 节点能够把永久故障和短暂扰动区别开来。故障的节点会被关闭。 9总线值 总线有二个互补的逻辑值:“显性”或“隐性”。“显性”位和“隐性”位同时传送时,总线的结果值为“显性”。比如,在总线的“写与”执行时,逻辑0代表“显性”等级,逻辑1代表“隐性”等级。 10应答 所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答,对于不连贯的报文,接收器作出标志。,4.3.2 CAN的报文及结构 在总线上的任意节点均可以作为发送器或接收器,那么我们就将发出报文的节点叫发送器,该节点在总线空闲或丢失仲裁前始终为发送器。如果一个节点不是发送器,且总线不是处于空闲状态,则该节点就叫接收器。报文由一个发送器发出,再由一个或多个接收器接收。 报文传输由4个不同类型的帧表示和控制: 数据帧:数据帧携带数据从发送器至接收器。总线上传输的大多是这个帧。 远程帧:由总线单元发出,请求发送具有同一识别符的数据帧。数据帧(或远程帧)通过帧间空间与其他各帧分开。 错误帧:任何单元一但检测到总线错误就发出错误帧。 过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。,1数据帧 数据帧由7个不同的位场组成:帧起始(Stsrt of Frame)、仲裁场(Arbitration Frame)、控制场(Control Frame)、数据场(DataFrame)、CRC 场(CRC Frame)、应答场(ACK Frame)、帧结尾(End of Frame)。数据场的长度可以为0。CAN 2.0A数据帧的组成如图4.6所示。,图4.6 数据帧的组成, 帧起始 帧起始(SOF)标志数据帧和远程帧的起始,仅由一个“显性”位组成。只在总线空闲时才允许站开始发送。所有站必须同步于首先开始发送报文的站的帧起始前沿。 仲裁场 仲裁场包括识别符和远程发送请求位(RTR )。见图4.7仲裁场结构示意图,图4.7 仲裁场结构示意图,图4.8 标准格式数据帧与扩展格式数据帧的仲裁场,图4.8 标准格式数据帧与扩展格式数据帧的仲裁场,识别符:,标准格式识别符的长度为11位,相当于扩展格式的基本ID(Base ID)。这些位按ID-28到ID-18的顺序发送。最低位是ID-18。7个最高位(ID-28-ID-22)必须不能全是“隐性”。 扩展格式识别符和标准格式形成对比,参见图4.8标准格式数据帧与扩展格式数据帧的仲裁场比较,扩展格式由29位组成。其格式包含两个部分:11位基本ID、18位扩展ID。基本ID包括11位,它按ID-28到ID-18的顺序发送。它相当于标准识别符的格式。基本ID定义扩展帧的基本优先权。扩展ID:扩展ID包括18位。它按ID-17到ID-0顺序发送。 标准帧里,识别符其后是RTR位。 RTR位: RTR的全称为“远程发送请求位(Remote Transmission Request BIT)”。,SRR是一隐性位。它在扩展格式的标准帧RTR位位置,因此代替标准帧的RTR位。 因此,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的,扩展帧的基本ID如同标准帧的识别符。 IDE位: IDE的全称是“识别符扩展位(Identifier Extension Bit)” 标准格式里的IDE位为“显性”,而扩展格式里的IDE位为“隐性”。 控制场 控制场由6个位组成。如图4.9所示。,图4.9 控制场示意图,标准格式里的帧包括数据长度代码、IDE位(为显性位)、及保留位r0。扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。 保留位:必须发送为显性,但是接收器认可“显性”和“隐性”位的组合。 数据长度代码:数据长度代码指示了数据场里的字节数量。数据长度代码为4个位,它在控制场里发送。数据长度代码中数据字节数的编码 缩写:d“显性” r“隐性”,数据帧允许的数据字节数:0,1,.,7,8。 其他的数值不允许使用。 数据场 数据场由数据帧里的发送数据组成。它可以为08个字节,每字节包含了8个位,首先发送MSB。 CRC场(见图4.10) CRC场包括CRC序列(CRC SEQUENCE),和CRC界定符(CRC DELIMITER)。,CRC序列: CRC序列是由循环冗余码求得的帧检查序列组成,最适用于位数低于127位BCH码的帧。为进行CRC计算,被除的多项式系数由无填充位流给定,组成这些位流的成分是:帧起始、仲裁场、控制场、数据场(假如有),而15个最低位的系数是0。将此多项式被下面的多项式发生器除(其系数以2为模): X15+X14+X10+X8+X7+X4+X3+1,这个多项式除法的余数就是发送到总线上的CRC序列。,图4.10 CRC场示意图,CRC 界定符 CRC 序列之后是CRC 界定符,它包含一个单独的“隐性”位。 应答场 应答场长度为2个位,包含应答间隙(ACK SLOT)和应答界定符(ACK DELIMITER)。见图4.11。,图4.11 应答场示意图,在应答场里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK SLOT)期间(发送ACK信号)向发送器发送一“显性”位以示应答。 应答间隙 所有接收到匹配CRC 序列(CRC SEQUENCE)的站会在应答间隙(ACK SLOT)期间用一“显性”的位写入发送器的“隐性”位来作出回答。 应答界定符 应答界定符是应答场的第二个位,并且是一个必须为“隐性”的位。因此,应答间隙(ACK SLOT)被两个“隐性”的位所包围,也就是CRC界定符(CRC DELIMITER)和应答界定符(ACK DELIMITER)。 帧结尾 每一个数据帧和远程帧均由一标志序列定界。这个标志序列由7个“隐性”的位组成。,2. 远程帧 通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。 远程帧也有标准格式和扩展格式,而且都由帧起始、仲裁场、控制场、CRC 场、应答场、帧结尾等6个不同的位场组成(如图4.12所示)。 与数据帧相反,远程帧的RTR位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0.8的任何数值)。此数值是相应于数据帧的数据长度代码。 RTR位的极性表示了所发送的帧是一数据帧(RTR位“显性”)还是一远程帧(RTR“隐性”)。,图4.12 远程帧的组成,3.错误帧 错误帧由两个不同的场组成(如图4.13所示)。第一个场用是不同站提供的错误标志(ERROR FLAG)的叠加。第二个场是错误界定符。 为了能正确地终止错误帧,“错误被动”的节点要求总线至少有长度为3个位时间的总线空闲(如果“错误被动”的接收器有局部错误的话)。因此,总线的载荷不应为100%。,图4.13 错误帧的组成,错误标志 有两种形式的错误标志:主动的错误标志和被动的错误标志。 1. 主动的错误标志由6个连续的“显性”位组成。 2. 被动的错误标志由6个连续的“隐性”的位组成,除非 其他节点的“显性”位重写。 检测到错误条件的“错误激活”的站通过发送主动错误标志指示错误。,错误标志的形式破坏了从帧起始到CRC界定符的位填充的规则,或者破坏了ACK场或帧结尾场的固定形式。所有其他的站由此检测到错误条件并与此同时开始发送错误标志。因此,“显性”位(此“显性”位可以在总线上监视)的序列导致一个结果,这个结果就是把个别站发送的不同的错误标志叠加在一起。这个序列的总长度最小为6个位,最大为12个位。 检测到错误条件的“错误被动”的站试图通过发送被动错误标志指示错误。“错误被动”的站等待6个相同极性的连续位(这6个位处于被动错误标志的开始)。当这6个相同的位被检测到时,被动错误标志的发送就完成了。 错误界定符 错误界定符包括8个“隐性”的位。,4. 过载帧 过载帧包括两个位场:过载标志和过载界定符(如图4.14所示)。 有三种过载的情况,这三种情况都会引发过载标志的传送: 1.接收器的内部情况(此接收器对于下一数据帧或远程帧需要有一延时)。 2.在间歇的第一和第二字节检测到一个“显性”位。 3.如果CAN节点在错误界定符或过载界定符的第8位(最后一位)采样到一个显性位,节点会发送一个过载帧(不是错误帧)。错误计数器不会增加。 根据过载情况1而引发的过载帧只允许起始于所期望的间歇的第一个位时间,而根据情况2和情况3引发的过载帧应起始于所检测到“显性”位之后的位。 通常为了延时下一个数据帧或远程帧,两种过载帧均可产生。,图4.14 过载帧的组成,过载标志: 过载标志由6个“显性”的位组成。过载标志的所有形式和主动错误标志的一样。 过载标志的形式破坏了间歇场的固定形式。因此,所有其他的站都检测到过载条件并与此同时发出过载标志。如果有的节点在间歇的第3个位期间检测到“显性”位,则这个位将解释为帧的起始。,过载界定符(Overload Delimeter) 过载界定符包括8个“隐性”的位。过载界定符的形式和错误界定符的形式一样。过载标志被传送后,站就一直监视总线直到检测到一个从“显性”位到“隐性”位的跳变。此时,总线上的每一个站完成了过载标志的发送,并开始同时发送其余7个“隐性”位。 5. 帧间空间 帧间空间是用于隔离数据帧(或远程帧)与先行帧(数据帧、远程帧、错误帧、过载帧)的。而过载帧与错误帧之前没有帧间空间,多个过载帧之间也不用帧间空间隔离。 帧间空间包括间歇场、总线空闲的位场。如果“错误被动”的站已作为前一报文的发送器时,则其帧空间除了间歇、总线空闲外,还包括称作挂起传送的位场。,间歇 间歇包括3个“隐性”的位。间歇期间,所有的站均不允许传送数据帧或远程帧,唯一要做的是标示一个过载条件。 总线空闲 总线空闲的时间是任意的。只要总线被认定为空闲,任何等待发送报文的站就会访问总线。在发送其他报文期间,有报文被挂起,对于这样的报文,其传送起始于间歇之后的第一个位。总线上检测到的“显性”的位可被解释为帧的起始。 挂起传送 “错误被动”的站发送报文后,站就在下一报文开始传送之前或总线空闲之前发出8个“隐性”的位跟随在间歇的后面。如果与此同时另一站开始发送报文(由另一站引起),则此站就作为这个报文的接收器。,4.3.3 CAN的位仲裁技术 要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。 CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。 如图4.15所示,当几个站同时发送报文时,站1的报文标识符为0111110000;站2的报文标识符为01001100000;站3的报文标识符为01001110000。,图4.15 位仲裁示意图,所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。,注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。 CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取(许可)控制,在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法,4.4 典型CAN总线器件及应用,4.4.1 SJA1000 CAN控制器 4.4.2 PCA82C250 CAN 收发器 4.4.3 CAN BUS节点设计举例,4.4 典型CAN总线器件及应用 4.4.1 SJA1000 CAN控制器 SJA1000是一个独立的CAN控制器,它在汽车和普通的工业应用上有先进的特征。由于它和PCA82C200在硬件和软件都兼容,因此它将会替代PCA82C200,SJA1000有一系列先进的功能,适合于多种应用特别在系统优化诊断和维护方面非常重要。 SJA1000在软件和引脚上都是与它的前一款PCA82C200独立控制器兼容的。在此基础上它增加了很多新的功能,为了实现软件兼容,SJA1000独立的CAN控制器有2个不同的操作模式: 1 BasicCAN模式:和PCA82C200兼容。BasicCAN模式是上电后默认的操作模式,因此用PCA82C200开发的已有硬件和软件,可以直接在SJA1000上使用而不用作任何修改。,2 PeliCAN模式:是新的操作模式。它能够处理所有CAN2.0B规范的帧类型。而且它还提供一些增强功能,使SJA1000能应用于更宽的领域。 工作模式通过时钟分频寄存器中的CAN模式位来选择,复位时默认模式是Basic CAN模式。 SJA1000控制器结构 SJA1000控制器可以分为CAN核心模块、接口管理逻辑、发送缓冲器、验收滤波器、接收FIFO等五个功能模块,SJA1000控制器结构图如图4.16所示。由主控制器进行管理控制、将欲收发的信息(报文),转换为CAN规范的CAN帧,通过CAN收发器,在CAN BUS上交换信息。,图4.16 SJA1000 控制器结构图,CAN核心模块:根据CAN规范控制CAN帧的发送和接收。收到一个报文时,CAN核心模块将串行位流转换成用于的并行数据,发送一个报文时则相反。 接口管理逻辑:用于连接外部主控制器。外部可以是微型控制器或任何其他器件,SJA1000通过复用的地址/数据总线,与主控制器联系。 发送缓冲器:用于存储一个完整的扩展的或标准的报文。当主控制器初始发送时,接口管理逻辑会使CAN核心模块从发送缓冲器读CAN报文。 验收滤波器:通过这个可编程的滤波器能确定主控制器要接收哪些报文。 接收FIFO:用于存储所有收到的报文,储存报文的多少由工作模式决定,最多能存储32个报文。因为数据超载可能性被大大降低,这使用户能更灵活地指定中断服务和中断优先级。 SJA1000控制器功能框图CAN 控制模块SJA1000功能框图如图4.17所示,由以下部分组成,图4.17 SJA1000 控制器功能框图,(1)接口管理逻辑(IML)接口管理逻辑解释来自CPU 的命令,控制CAN 寄存器的寻址,向主控制器提供中断信息和状态信息。由8位并行地址/数据总线和片选、读、写、时钟、使能等控制信号线与主控制CPU相连接。 (2)发送缓冲器(TXB) 发送缓冲器是CPU 和BSP(位流处理器)之间的接口,能够存储发送到CAN网络上的完整信息,缓冲器长13个字节,由CPU 写入、BSP 读出。 (3)接收缓冲器(RXB,RXFIFO) 接收缓冲器是验收滤波器和CPU之间的接口,用来储存从CAN 总线上接收的信息,接收缓冲器(RXB,13个字节)作为接收FIFO(RXFIFO,长64个字节)的一个窗口,可被CPU访问,CPU在此FIFO的支持下可以在处理信息的时候接收其它信息。 (4)验收滤波器(ACF) 验收滤波器把它其中的数据和接收的识别码的内容相比较,以决定是否接收信息。在纯粹的接收测试中,所有的信息都保存在RXFIFO中。,(5)位流处理器(BSP) 位流处理器是一个在发送缓冲器、RXFIFO 和CAN 总线之间,控制数据流的程序装置,它还在CAN 总线上执行错误检测、仲裁填充和错误处理。 (6)位时序逻辑(BTL) 位时序逻辑监视串口的CAN总线和处理与总线有关的位时序。它在信息开头的总线传输时同步CAN 总线位流(硬同步),接收信息时再次同步下一次传送(软同步)BTL 还提供了可编程的间段来补偿传播延迟时间、相位转换(例如:由于振荡漂移)和定义采样点和一位时间内的采样次数。 (7)错误管理逻辑(EML) EML负责传送层模块的错误管制。它接收BSP 的出错报告。通知BSP 和IML 进行错误统计。,图4.18 SJA1000 DIP28引脚图,SJA1000 控制器引脚 SJA1000 控制器有DIP28(塑质双列直插封装)和SO28(塑质小型外线封装)两种形式,DIP28引脚图如图4.18所示。SJA1000引脚排列与引脚功能见表4.2。,表4.2 SJA1000引脚排列与引脚功能表,表4.2 SJA1000引脚排列与引脚功能表,4. SJA1000的特征 SJA1000的特征可以分成3组: 与PCA82C200完全兼容的功能。特征有: 灵活的微处理器接口-允许接口大多数微型处理器或微型控制器。 可编程的CAN输出驱动器-对各种物理层的分界面。 CAN位频率高达1Mbit/s-SJA1000覆盖了位频率的所有范围,包括高速应用。 改良的PCA82C200功能,这组功能的部份已经在PCA82C200里实现,但是在SJA1000里这些功能在速度大小和性能方面得到了改良。特征有: CAN2.0B(passive)-SJA1000的CAN2.0B passive特征允许CAN控制器接收有29位标识符的报文。 64个字节接收FIFO-接收FIFO,可以存储高达21个报文,这延长了最大中断服务时间,避免了数据超载。,24MHz时钟频率-微处理器的访问更快和CAN的位定时选择更多。 接收比较器旁路-减少内部延迟,由于改进的位定时编程,使CAN总线长度更长。 PeliCAN模式的增强功能,在PeliCAN模式里SJA1000支持一些错误分析功能,支持系统诊断,系统维护,系统优化。而且这个模式里也加入了对一般CPU的支持和系统自身测试的功能。特征有: CAN2.0B active-CAN2.0B active支持带有29位标识符的网络扩展应用。 发送缓冲器-有11位或29位标识符的报文的单报文发送缓冲器。 增强的验收滤波器-两个验收滤波器模式,支持11位和29位标识符的滤波。 可读的错误计数器、可编程的出错警告界限、错误代码捕捉寄存器、出错中断-支持错误分析,在原型阶段和在正常操作期间可用于:诊断、系统维护、系统优化。,仲裁丢失捕捉中断-支持系统优化包括报文延迟时间的分析。 单次发送-使软件命令最小化和允许快速重载发送缓冲器。 仅听模式-SJA1000能够作为一个认可的CAN监控器操作,可以分析CAN总线通信或进行自动位速率检测。 自测试模式-支持全部CAN节点的功能自测试或在一个系统内的自接收。 5. BasicCAN模式 SJA1000是一种I/O设备基于内存编址的微控制器,与其它控制器(CPU)之间的操作是通过象RAM一样的片内寄存器读写来实现的。示意图如图4.19所示。,SJA1000的地址区包括控制段和信息缓冲区。信息缓冲区又分为发送缓冲器和接收缓冲器。 控制段在初始化时载入,是可以被编程来配置通讯参数的。例如:位时序。,微处理器 (CPU),CAN 收发器,控制寄存器,SJA1000 CAN控制器,命令寄存器,状态寄存器,中断寄存器,验收代码寄存器,验收屏蔽寄存器,.,.,CAN BUS,图4.19 CAN总线节点示意图,微控制器(CPU)通过这个段来控制CAN总线上的通讯的,在初始化时,CLKOUT信号可以被微控制器(CPU)编程指定一个值,应发送的信息会被写入发送缓冲器,成功接收信息后,微控制器(CPU)从接收缓冲器中读取接收的信息,然后释放空间以做下一步应用。 微控制器(CPU)和SJA1000之间状态、控制和命令信号的交换都是在控制段中完成的。表4.3 是BasicCAN 各寄存器地址表。 在以下两种不同的模式中访问寄存器是不同的。 复位模式:当硬件复位或控制器掉线总线状态位时会自动进入复位模式。 工作模式:是通过置位控制寄存器的复位请求位激活的。,表4.3 BasicCAN 地址表,(1) 控制寄存器(CR) 控制寄存器的各位内容(CR.0-CR.7)是用于改变CAN控制器的行为的,这些位可以被微控制器(CPU)设置或复位,微控制器(CPU)可以对控制寄存器进行读/写操作。 (2) 命令寄存器(CMR) 命令寄存器的各命令位(CMR.0-CMR.7)决定SJA1000传输层上的动作,命令寄存器对微控制器(CPU)来说是只写存储器。如果去读这个地址返回值是11111111,两条命令之间至少有一个内部时钟周期,内部时钟的频率是外部振荡频率的/。 (3) 状态寄存器(SR) 状态寄存器的各位内容(SR.0-SR.7)内容反映了SJA1000的状态。状态寄存器对微控制器(CPU)来说是只读存储器。,(4) 中断寄存器(IR) 中断寄存器各位内容(IR.0-IR.7)能够识别中断源,当寄存器的一位或多位被置位时,/INT(低电平有效)引脚就被激活了,寄存器被微控制器(CPU)读过之后,所有导致/INT引脚上的电平漂移的位被复位,中断寄存器对微控制器(CPU)来说是只读存储器。 (5) 发送缓冲器 发送缓冲器是用来存储微控制器(CPU)要SJA1000发送的信息的。可以分为描述符区和数据区,发送缓冲器的读/写只能由微控制器(CPU)在工作模式下完成,在复位模式下读出的值总是FFH。 1)描述符区 识别码 有11位(ID0-ID10)。ID10是最高位在仲裁过程中是最先被发送到总线上的识别码。就象信息的名字,它在接收器的验收滤波器中被用到,也在仲裁过程中决定总线访问的优先级。识别码的值越低,其优先级越高。这是因为在仲裁时有许多支配控制位开头的字节。,远程发送请求RTR 如果此位置1,总线将以远程帧发送数据,这意味着此段中没有数据字节,尽管如此也需要同识别码相同的数据帧来识别正确的数据长度。 如果RTR位没有被置,位数据将以数据长度码规定的长度来传送。 数据长度码DLC 信息数据区的字节数根据数据长度码编制。在远程帧传送中,因为RTR被置位,数据长度码是不被考虑的。这就迫使发送/接收数据字节数为0。总之,数据长度码必须正确设置,以避免两个CAN控制器用同样的识别机制启动远程帧传送而发生总线错误。数据字节数是0-8,是以如下方法计算的: 数据字节数=8DLC.3+4DLC.2+2DLC.1+DLC.0 为了保持兼容性,数据长度码不超过8。如果选择的值超过8,则按照DLC规定的8字节发送。,图4.20 RXFIFO中信息存储示例,2)数据区 传送的数据字节数由数据长度码决定。发送的第一位是地址12单元的数据字节1的最高位。,(6) 接收缓冲器 图4.20 RXFIFO中信息存储示例 用来存储从总线上接收道德信息。接收缓冲器与发送缓冲器类似,接收缓冲器是RXFIFO中可访问的部分,位于CAN地址的20-29之间。 识别码远程发送请求位和数据长度码,同发送缓冲器的相同,只不过是地址不同。,RXFIFO共有64字节的信息空间,图4.20 是 RXFIFO中信息存储示例,在任何情况下,FIFO中可以存储的信息数取决于各条信息的长度,如果RXFIFO中没有足够的空间来存储新的信息,CAN控制器会产生数据溢出。数据溢出发生时,已部分写入RXFIFO的当前信息将被删除。这种情况将通过状态位或数据溢出中断反应到微控制器(CPU)。 (7)验收滤波器 在验收滤波器的帮助下,CAN控制器能够允许RXFIFO只接收同识别码和验收滤波器中预设值相一致的信息。验收滤波器通过验收代码寄存器ACR和验收屏蔽寄存器AMR来定义。 1)验收代码寄存器(ACR) 复位请求位被置高(当前)时,这个寄存器是可以访问(读/写)的,如果一条信息通过了验收滤波器,的测试而且接收缓冲器有空间,那么描述符和数据将被分别顺次写入RXFIFO,当信息被正确的接收完毕。就会:,接收状态位置高(满) 接收中断使能位置高(使能)接收中断置高(产生中断)。 验收代码位(AC.7-AC.0)和信息识别码的高8位(ID.10-ID.3)相等,且与验收屏蔽位(AM.7-AM.0)的相应位相或为1。即如果满足以下方程的描述,则被接收。 (ID.10-ID.3)(AC.7-AC.0)(AM.7-AM.0) 11111111 2)验收屏蔽寄存器(AMR) 如果复位请求位置高(当前),这个寄存器可以被访问(读/写)。验收屏蔽寄存器定义验收代码寄存器的相应位对验收滤波器是“相关的”或“无影响的”(即可为任意值)。,(8) 总线定时寄存器0(BTR0) 总线定时寄存器0,定义了波特率预设值(BRP)和同步跳转宽度(SJW)的值。复位模式有效时这个寄存器是可以被访问(读/写)的。在BasicCAN模式中总是FFH。 波特率预设值(BRP) CAN系统时钟tSCL的周期是可编程的,而且决定了相应的位时序。CAN系统时钟由如下公式计算:tSCL=2tCLK(32BRP.5+16BRP.4+8BRP.3+4BRP.2+2BRP.1+BRP.0+1) 这里tCLK=XTAL的频率周期=1/fXTAL,同步跳转宽度(SJW) 为了补偿在不同总线控制器的时钟振荡器之间的相位偏移,任何总线控制器必须在当前传送的相关信号边沿重新同步。同步跳转宽度,定义了每一位周期可以被重新同步,缩短或延长的时钟周期的最大数目: tSJW=tSCL(2SJW.1+SJW.0+1) (9) 总线定时寄存器1(BTR1)) 总线定时寄存器1定义了每个位周期的长度、采样点的位置和在每个采样点的采样数目。在复位模式中,这个寄存器可以被读/写访问,在PeliCAN模式的工作模式中,这个寄存器是只读的,在BasicCAN模式中总是FFH。 (10) 时间段1(TSEG1)和时间段(TSEG2) TSEG1和TSEG2决定了每一位的时钟数目和采样点的位置。,(11) 输出控制寄存器(OCR) 输出控制寄存器实现了由软件控制不同输出驱动配置的建立。在复位模式中此寄存器可被读/写访问,在PeliCAN模式的工作模式中这个寄存器是只读的,在BasicCAN模式中总是FFH。 当SJA1000在睡眠模式中时TX0和TX1引脚根据输出控制寄存器的内容输出隐性的电平在复位 状态复位请求=1或外部复位引脚/RST被拉低时输出TX0和TX1悬空。发送的输出阶段可以有不同的模式。 SJA1000有四种输出模式,由OCR的BIT0和BIT1设置。 1).正常输出模式 正常模式中位序列(TXD)通过TX0和TX1送出输出驱动引脚TX0和TX1的电平取决于被OCTPx,OCTNx(悬空、上拉、下拉、推挽)编程的驱动器的特性和被OCPOLx编程的输出端极性。,2).时钟输出模式 TX0引脚在这个模式中和正常模式中是相同的。但是,TX1上的数据流被发送时钟(TXCLK)代替了。发送时钟(不翻转)的上升沿标志着一位的开始。时钟脉冲宽度是1tscl。 3).双相输出模式 相对于正常输出模式,这里的位代表着时间的变化和触发。如果总线控制器被发送器从总线上通电退耦,则位流不允许含有直流元件。 用TX0或TX1电平发送例如第一位在TX0上发送第二位在TX1上发送第三位在TX0上发送等等。 4).测试输出模式 在测试输出模式中,RX上的电平在下一个系统时钟的上升沿映射到TXn上,系统时钟(fOSC/2)与输出控制寄存器中定义的极性一致。,12时钟分频寄存器(CDR) 时钟分频寄存器为微控制器控制CLKOUT的频率以及屏蔽CLKOUT引脚,而且它还控制着TX1上的专用接收中断脉冲、接收比较通道和 BasicCAN模式与PeliCAN模式的选择。 硬件复位后寄存器的默认状态是Motorola模式(00000101)是12分频和Intel模式(00000000)是2分频。 软件复位(复位请求/复位模式)时,此寄存器不受影响。保留位(CDR.4)总是0。应用软件总是向此位写0以与将来可能使用此位的特性兼容. CD.2-CD.0 复位模式和工作模式中一样,CD.2-CD.0是可以无限制访问的。这些位是用来定义外部CLKOUT引脚上的频率的。,时钟关闭 设置这一位可禁能SJA1000的外部CLKOUT引脚只有在复位模式中才可以写访问如果置位此位CLKOUT引脚在睡眠模式中是低而其它情况下是高 RXINTEN 此位允许TX1输出用来做专用接收中断输出。当一条已接收的信息成功的通过验收滤波器,一位时间长度的接收中断脉冲就会在TX1引脚输出。 CBP 置位CDR.6可以中止CAN输入比较器,但这只可在复位模式中。这主要用于SJA1000外接发送接收电路时。此时内部延时被减少,这将会导致总线长度最大可能值的增加。如果CBP被置位,只有RX0被激活。没有被使用的RX1输入应被连接到一个确定的电平(例如VSS)。 CAN模式 CDR.7定义了CAN模式。如果CDR.7是0,CAN控制器工作
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!