ImageVerifierCode 换一换
格式:DOCX , 页数:108 ,大小:544.33KB ,
资源ID:13334051      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13334051.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第13章can总线课件.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第13章can总线课件.docx

1、第13章can总线课件第13章 CAN总线通信协议及其实现方法本章主要内容包括: CAN总线协议介绍 CAN控制器SJA1000 单片机与CAN总线接口电路设计现场总线是安装在生产过程区域的现场设备/仪表与控制室内的自动控制装置/系统之间的一种串行数字式多点双向通信的数据总线,多用于工控等领域,应用现场总线技术不仅可以降低系统的布线成本,还具有设计简单、调试方便等优点。同时,由于现场总线本身还提供了灵活而又功能强大的协议,这就使得用户对系统配置、设备选型具有最大的自主权,可以任意组合多种功能模块扩充系统的功能。在众多的现场工业总线中,CAN是一种具有国际标准而且性能价格比又较高的现场总线。本章

2、首先介绍了CAN总线协议,接下来对常用的CAN控制器SJA1000进行了重点介绍,最后给出了基于SJA1000控制器和AT89C51单片机的接口设计,为后续章节中关于CAN总线系统的设计打下基础。下面先来学习CAN总线的通信协议。13.1 CAN总线协议介绍随着集成电路和嵌入式电脑在汽车上的广泛应用,现代汽车上的电子控制器的数量越来越多,常见的有发动机的电子燃油喷射装置、防抱死制动装置(ABS)、安全气囊装置、电动门窗装置、主动悬架等。电控系统的增加虽然提高了轿车的动力性、经济性和舒适性,但随之增加的复杂电路也降低了汽车的可靠性,增加了维修的难度。从布线角度分析,传统的电子气系统大多采用点对点

3、的单一通信方式,相互之间少有联系,这样必然造成宠大的布线系统。因此,一种新的概念汽车上电子控制器局域网络CAN,也就应运而生。为使不同厂家生产的零部件能在同一辆汽车上协调工作,必须制定标准。按照ISO有关标准,CAN的拓扑结构为总线,因此称为CAN总线。CAN总线被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECN之间交换信息,在车载各电子控制装置ECN之间交换信息,形成汽车电子控制网络。控制器局域网CAN(Controller Area Network)是一种多主方式的串行通信总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。CAN在汽车上的应用,具

4、有很多行业标准或者是国际标准,比如国际标准化组织(ISO)的ISO11992、ISO11783以及汽车工程协会(Society of Automotive Engineers)的SAE J1939。CAN总线已经作为汽车的一种标准设备列入汽车的整车设计中。 CAN总线目前有两个协议版本,分别为CAN 2.0A和CAN 2.0B,两者之间的主要差别在于前者只提供了11位地址,而后者可以提供29位地址。本节将以CAN 2.0B为基础进行。13.1.1 CAN总线主要特点 CAN是一种多主方式的串行通信总线,具有极高的实时性和可靠性,最高通信速度可以达到1Mbit/s,是一种十分优秀的现场工业总线。

5、CAN总线具有如下优点: 结构简单,只有2根线与外部相连,且内部集成了错误探测和管理模块。 通信方式灵活。可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从。 可以以点对点、点对多点或者全局广播方式发送和接收数据。 网络上的节点信息可分成不同的优先级,以满足不同的实时要求。 CAN总线通信格式采用短帧格式,每帧字节数最多为8个,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节也不会占用总线时间过长,从而保证了通信的实时性。 采用非破坏性总线仲裁技术。当两个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级

6、高的节点可不受影响地继续传输数据。这大大地节省了总线仲裁冲突的时间,在网络负载很重的情况下也不会出现网络瘫痪。 直接通信距离最大可达10km(速率5kbit/s以下),最高通信速率可达lMbit/s(此时 距离最长为40m),节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。 CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等多项工作。 CAN总线采用CRC进行数据检验并可提供相应的错误处理功能,保证了数据通信的可靠性。13.1.2 CAN总线协议分层 CAN总线协议主要描述设备之间的信息传递

7、方式,从结构上可以分为3个层次,分别对应OSI网络模型的最低两层数据链路层和物理层。CAN总线协议层次结构由高到低如表13.1所示。表13.1 CAN总线协议层次结构协议层对应OSI模型说明LLC数据链路层逻辑链路控制子层,用于为链路中的数据传输提供上层控制手段MAC媒体访问控制子层,用于控制帧结构、仲裁、错误界定等数据传输的具体实现物理层物理层物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输物理层(Physical Layer)定义信号是如何实际地传输的,因此涉及到位定时、位编码/解码、同步的解释。本技术规范没有定义物理层的驱动器/接收器特性,以使允许根据它们的应用,对发送媒体

8、和信号电平进行优化。数据链路层(Data Link Layer)含以下两个子层: 介质访问控制子层MAC(Medium Access Control)是CAN协议的核心。它把接收到的报文提供给LLC子层,并接收来自LLC子层的报文。MAC子层负责报文分帧、仲裁、应答、错误检测和标定。MAC子层也受一个名为“故障界定”(Fault Confinement)的管理实体监管。此故障界定为自检机制,以便把永久故障和短时扰动区别开来。 逻辑链路控制子层LLC( Logical Link Control)涉及报文滤波、过载通知、以及恢复管理。13.1.3 CAN总线报文传输CAN总线在进行数据传输时,每次

9、传输的数据都是由一个位串组成的,这个位串被称之为“帧”。CAN总线有2种不同的帧格式,不同之处为标识符域的长度不同:含有11位标识符的帧称之为标准帧,而含有29位标识符的帧为扩展帧。为了实现数据传输和链路控制,CAN总线提供了4种不同类型的帧,它们分别为: 数据帧(Data Frame):数据帧将数据从发送器传输到接收器。 远程帧(Remote Frame):总线单元发出远程帧,请求发送具有同一标识符的数据帧。 错误帧(Error Frame):任何单元检测到总线错误就发出错误帧。 过载帧(Overload Frame):过载帧用在相邻数据帧或远程帧之间提供附加的延时。数据帧和远程帧可以使用标

10、准帧及扩展帧2种格式。它们用一个帧间间隔与前面的帧分开带有应用数据的数据帧、向网络请求数据的远程帧、能够报告每个节点错误的出错帧以及如果节点的接收器电路尚未准备好就会延迟传送的过载帧。在这4种帧结构中,又可以将一帧分为几个部分,每一部分负责不同的功能,这些部分被称为“位场”。对于帧中的各个位,用“显性”表示逻辑0,用“隐性”表示逻辑1。下面对不同的帧结构分别进行介绍。1. 数据帧数据帧用于将数据从发送器传输到接收器,它由7个不同的位场组成,分别为帧起始(Start of Frame)、仲裁场(Arbitration Frame)、控制场(Control Frame)、数据场(Data Fram

11、e)、CRC场(CRC Frame)、应答场(ACK Frame)和帧结束(End of Frame)。其结构如图13.1所示。图13.1数据帧结构下面介绍该帧的各个位场。(1)帧起始帧起始(SOF)由一个显性位组成,表示数据帧和远程帧的开始。只在总线空闲时才允许站点开始发送(信号)。所有的站必须同步于首先开始发送报文的站的帧起始前沿。 (2)仲裁场 仲裁场由CAN总线标识符和几个控制位组成,用于CAN总线上设备的寻址和帧类型判别。其中标识符可以是11位(CAN 2.0A)或29位(CAN 2.0B),分别对应CAN总线协议支持的基本帧和扩展帧。CAN 2.0A只支持基本帧,CAN 2.0B在

12、支持扩展帧的同时,还兼容基本帧结构。标准格式帧与扩展格式帧的仲裁场格式不同。在标准格式里,仲裁场由11位标识符和RTR位组成。标识符位由ID-28 ID-18组成。数据帧标准格式中的仲裁场如图13.2所示。图13.2 数据帧标准格式中的仲裁场结构在扩展格式里,仲裁场包括29位标识符、SRR位、IDE位、RTR位。其标识符由ID-28ID-0组成。为了区别标准格式和扩展格式,前版本CAN规范1.01.2的保留位r1现在表示为IDE位。数据帧扩展格式中的仲裁场如图13.3所示。图13.3 数据帧扩展格式中的仲裁场结构其各个位功能如下:标识符(Identifier)标准格式中的标识符:标识符的长度为

13、11位,相当于扩展格式的基本ID(Base ID。这些位按ID-28到ID-18的顺序发送。最低位是ID-l8。7个最高位(ID-28 ID-22)必须不能全是隐性。扩展格式中的标识符:和标准格式对比,扩展格式的标识符由29位组成。其结构包含两个部分:11位基本ID,18位扩展ID。在标准帧里,标识符其后是RTR位。RTR位(在标准格式和扩展格式中)RTR位为“远程发送请求位(Remote Transmission Request Bit)。RTR位在数据帧里必须为显性,而在远程帧里必须为隐性。在扩展帧里,基本ID首先发送,随后是IDE位和SRR位,扩展ID的发送位于SRR位之后。SRR位(属

14、扩展格式)SRR位是“替代远程请求位”(Substitute Remote Request Bit)。SRR位是一隐性位。它是在扩展帧中标准帧的RTR位的位置(见图13. 2和13. 3 )被发送,因而替代标准帧的RTR位。当标准帧与扩展帧发生冲突,而扩展帧的基本ID(参见以下的“扩展标识符”)同标准帧的标识符一样时,标准帧优先于扩展帧。IDE位(属扩展格式)IDE位是“标识符扩展位”(Identifier Extension Bit) 。IDE位属于扩展格式的仲裁场和标准格式的控制场。标准格式里的IDE位为显性,而扩展格式里的IDE位为隐性。(3)控制场控制场由6个位组成。标准格式的控制场格

15、式和扩展格式不同。标准格式里的帧包括数据长度代码、IDE位(为显性位)及保留位r0。扩展格式里的帧包括数据长度代码和两个保留位r1和r0。其保留位必须发送为显性,但是接收器认可显性和隐性位的组合。控制场的结构如图13.4所示。图13.4控制场结构控制场中的数据长度部分共有4位,用于表示数据场的长度(最多8个字节),使用字母d表示显性位,字母r表示隐性位,DLC3DLC1位与数据长度关系如表13.2所示。表13.2 数据长度位对应关系字节数DLC3DLC2DLClDLC00dddd1dddr2ddrd3ddrr4drdd5drdr6drrd7drrr8rddd(4)数据场数据场由发送的具体数据组

16、成,数据长度可以是08个字节,发送时将从高字节开始发送,最后发送低位字节。(5)CRC场CRC场由CRC序列(CRC Sequence)和CRC界定符(CRC Delimiter)组成。CRC场结构如图13.5所示。图13.5 CRC场结构CRC序列(标准格式和扩展格式)由循环冗余码求得的帧检查序列最适用于位数低于127位(BCH码)的帧。为进行CRC计算,被除的多项式系数由无填充位流给定。组成这些位流的成分是:帧起始、仲裁场、控制场、数据场(假如有的话),而15个最低位的系数是0。将此多项式除以下面的多项式发生器(其系数以模2计算出):X 15+X14+X10 +X8+X7+X4+X3+1这

17、个多项式除法的余数就是发送到总线上的CRC序列。为了实现这个功能,可以使用15位的移位寄存器CRC_RG(14:0)。如果NXTBIT指示位流的下一位,那么从帧的起始到数据场末尾都由没有填充的位顺序给定。CRC序列的计算如下:CRC_ RG=0; /初始化移位寄存器REPEATCRCNXT=NXTBIT EXOR CRC_RG(14);CRC_RG(14:1)=CRC_RG(13:0); /寄存器左移1位CRC_RG(0)=0IF CRCNXT THENCRC_RG(14:0)=CRC_RG(14:0) EXOR (4599hex);ENDIFUNTIL(CRC序列起始或有一错误条件)在传送/

18、接收数据域的最后一位以后,CRC_RG包含有CRC顺序。CRC界定符(标准格式和扩展格式)CRC序列之后是CRC界定符,它包含一个单独的隐性位。 (6)应答场应答场长度为2位,分别为应答间隙(ACK Slot )和应答界定符(ACK Delimiter)。在ACK场(应答场)中,发送方发送两个隐性位。如果接收器正确地接收到有效的报文,接收器就会在应答间隙期间向发送器发送一显性位表示应答。应答场结构如如图 13.7所示。应答间隙所有接收到匹配CRC序列(CRC Sequence)的站会在应答间隙期间用一显性位写在发送器的隐性位置上来做出回应。应答界定符应答界定符是应答域的第二个位,并且必须是一个

19、隐性位。因此,应答间隙被两个隐性位所包围,也就是CRC界定符和应答界定符。 图13.6 应答场结构(7)帧结束帧结束部分由7个隐性位构成,表示一帧内容的结束。2. 远程帧远程帧( Remote Frame)用于接收器向发送器请求数据传送。作为某数据接收器的站,通过发送远程帧可以启动其资源节点传送它们各自的数据。远程帧也有标准格式和扩展格式,而且都由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结束。远程帧结构如图13.7所示。 图13.7远程帧结构由于远程帧是向其他设备请求数据发送,因此其结构中并没有数据场,所以数据长度代码的数值没有意义(可以标注为08范围里的任何数值)。此

20、外,为了使其与数据帧区别,其仲裁场的RTR位应为隐性,表示当前帧为远程帧。RTR位的极性表示了所发送的帧是一数据帧(RTR位显性),还是一远程帧(RTR位隐性)。3. 出错帧出错帧( Error Frame ) 用于报告数据在传送过程中发生的错误,该帧由两个不同的场组成,如图13.8所示。第一个场是不同站提供的出错标志(Error Flag)的叠加(Superposition);第二个场是错误界定符(Error Delimiter)。 图13.8出错帧结构为了能正确地终止出错帧:“错误认可”的节点要求总线至少有长度为3个位时间的总线空闲(当“错误认可”的接收器有局部错误时)。因此,总线的载荷不

21、应为100%。出错标志 有两种形式的出错标志:激活(Active)错误标志和认可( Passivity)错误标志(有的文献译为“主动”与“被动”)。“激活错误”标志由6个连续的显性位组成。“认可错误”标志由6个连续的隐性位组成,除非被其他节点的显性位覆盖。检测到错误条件的“错误激活”的站通过发送“激活错误”标志来指示错误。因为这个出错标志的格式违背了从帧的起始到CRC界定符的位填充规则,也破坏了ACK场或帧结束场的固定格式。这样一来,所有其他的站会检测到错误条件并且开始发送出错标志。因此,这个显性位的序列的形成就是各个站发送的不同的错误标志叠加在一起的结果。这个序列的总长度最小为6个位,最大为

22、12个位,可以在总线上监视到。检测到错误条件的“错误认可”的站试图通过发送“认可错误”标志来指示错误。“错误认可”的站从“认可错误”标志的开头起,等待6个连续的相同极性的位。当这6个相同的位被检测到时,“认可错误”标志就完成了。错误界定符错误界定符包括8个隐性位。传送了出错标志以后,每一总线设备都发送一个隐性位,并一直监视总线直到检测出一个隐性位为止。然后就开始发送其余7个隐性位。4. 过载帧过载帧(Overload Frame)包括两个位场:过载标志和过载界定符,其结构如图13.9所示。有3种过载的情况,这3种情况都会引发过载标志的传送,即: 接收器的内部原因,它需要延迟下一个数据帧或远程帧

23、。 在间歇( Intermission)的第一位和第二位检测到一个显性位。 如果CAN节点在错误界定符或过载界定符的第8位(最后一位)采样到一个显性位,节点会发送一个过载帧(不是出错帧)。错误计数器不会增加。图13.9过载帧结构由于过载情况1而引发的过载帧只允许起始于所期望的间歇的第一个位时间,而由于情况2和情况3引发的过载帧应起始于所检测到显性位之后的一个位。通常为了延迟下一个数据帧或远程帧,两种过载帧均可产生。过载标志过载标志(Overload Flag)由6个显性位组成。过载标志的所有形式和“激活错误”标志的一样。由于过载标志的格式破坏了间歇场的固定格式,因此,所有其他的站都检测到过载条

24、件,并与此同时发出过载标志。如果在间歇的第3个位期间检测到显性位,则这个位将被解释为帧的起始。注意:基于CAN 1.0和CAN1.1版本的控制器对第3个位有另一解释如下:有的节点在间歇的第3个位期间检测到一显性位,这时其他节点将不能正确地解释过载标志,而是将这6个显性位中的第一个位解释为帧的起始。这第6个显性位违背了位填充的规则而引发一个错误条件。过载界定符过载界定符(Overload Delimiter)包括8个隐性位。过载界定符的形式和错误界定符的形式一样。过载标志被传送后,站就一直监视总线,直到检测到一个从显性位到隐性位的跳变为止。在这一时刻,总线上的每一个站完成了各自过载标志的发送,并

25、开始同时发送其余7个隐性位。5. 帧间空间数据帧(或远程帧)与它前面帧的分隔是通过帧间空间(Interframe Space)来实现的,无论前面的帧是何种类型(如数据帧、远程帧、出错帧、过载帧)。而过载帧与出错帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。帧间空间包括“间歇”、“总线空闲”的位场。如果是发送前一报文的“错误认可”站,则还包括称做“挂起传送”(暂停发送)( Suspend Transmission)的位场。对于不是“错误认可”的站,或作为前一报文的接收器的站,其帧间空间如图13.10所示。图13.10 非“错误认可”帧间空间对于已作为前一报文发送器的“错误认可”的站,

26、其帧间空间如图13.11所示。图13.11 “错误认可”帧间空间间歇间歇(Intermission)由3个隐性位组成。在间歇期间,所有的站均不允许传送数据帧或远程帧,唯一可做的是标示一个过载条件。注意:如果某CAN节点有一报文等待发送并且节点在间歇的第三位采集到一显性位,则此位被解释为一个帧的起始位,下一位就从它的标识符的第一位开始发送它的报文,而不要首先发送帧的起始位,而且它也不会成为接收器。总线空闲总线空闲(Bus Idle)的时间是任意的。只要总线被认定为空闲,任何等待发送报文的站就会访问总线。在发送其他报文期间,一个等待发送的报文,其传送开始于间歇之后的第一个位。总线上检测到的显性位可

27、被解释为帧的起始。挂起传送挂起传送(Suspend Transmission)是指“错误认可”的站发送报文后,在下一报文开始传送之前或确认总线空闲之前发出8个隐性位跟随在间歇的后面。如果与此同时一个报文由另一站开始发送,则此站就成为这个报文的接收器。在CAN规范1.2中,标准格式等效于数据/远程帧格式。然而,扩展格式是CAN协议的新特性。为了可以设计相对简单的控制器,扩展格式的执行不要求它完整的扩展(例如,以扩展格式发送报文或从报文中接收数据),但是,必须支持标准格式而没有限制。如果新的控制器至少具备在3. 1和3.2版本中定义的下列有关帧格式的属性,它们就被认为与这个CAN规范一致:每一个新

28、的控制器支持标准格式。每一个新的控制器能够接收扩展格式的报文。这要求扩展帧不会因为它们的格式而 受破坏,虽然不要求新控制器必须支持扩展核。13.1.4 CAN总线报文滤波 报文滤波(Message Filtering)取决于整个标识符。为了报文滤波,允许把屏蔽寄存器中任何的标识符位设置为“不考虑”(Dont Care)或“无关”。可以用这种寄存器选择多组标识符,使之与相关的接收缓冲器对应。 在使用屏蔽寄存器时,它的每一个位都是可编程的。即对于报文滤波,可将它们设置为允许或禁止。屏蔽寄存器的长度可以包含整个标识符,也可以是部分标识符。13.1.5 CAN总线报文校验校验报文有效的时间点,对于发送

29、器与接收器来说各不相同。发送器:如果直到帧的末尾位仍没有错误,则此报文对于发送器有效。如果报文出错,则报文会根据优先权自动重发。为了能够和其他报文竞争总线,必须当总线一空闲时就开始重新传输。 接收器:如果直到最后的位(除了帧末尾位)仍没有错误,则报文对于接收器有效。帧末尾最后的位被置于“不考虑”状态,即使是一个显性电平也不会引起格式错误。13.1.6 CAN总线编码编码即位流编码(Bit Stream Coding),它的规定是:帧的如下部分:帧起始、仲裁场、控制场、数据场以及CRC序列,均通过位填充的方法编码。无论何时,发送器只要检测到位流里有5个连续相同值的位,便自动在位流里插入一补充位。

30、数据帧或远程帧的其余位场(CRC界定符、应答场和帧结束)格式固定,没有填充。错误帧和过载帧的格式也固定,它们不用位填充的方法编码。报文的位流根据“不归零” ( NRZ )方法来编码。这就是说,在整个位时间里,位的电平要么为显性,要么为隐性。13.1.7 CAN总线错误处理CAN总线可以检测到如下5种不同的错误类型,这5种错误可以同时存在: 位错误(Bit Error) 设备在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则检测到一个位错误。但在仲裁场的填充位流期间或应答间隙发送隐性位时,如果检测到显性位,不会发出位错误。当发送器发送一个被动错误标志但检测到显性位时,也不

31、视为位错误。 填充错误(Stuff Error) 如果在使用位填充法进行编码的信息中出现了6个连续相同的位电平,则在第6位检测到一个填充错误。 CRC错误(CRC Error) 当接收器接收到数据后,如果其CRC校验计算的结果与帧中的CRC场不同,则检测到一个CRC错误。 形式错误(Form Error) 当一个固定形式的位场合有一个或多个非法位,则检测到一个形式错误。注意这里接收器的帧结束最后一位期间的显性位不被当作帧错误。 应答错误(Acknowledgment Error) 只要在应答间隙期间所监视的位不为显性,发送器就会检测到一个应答错误。设备检测到错误,都将在下一位开始发送错误标志,从而引起一个出错帧。对于“错误主动”的节点,错误信息为主动错误标志,对于“错误被动”的节点,错误信息为被动错误标志。发生错误次数达到一定程度,则设备认为出现故障。故障的界定是通过每个设备的发送错误计数器和

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2