第四章CAN总线§1CAN总线的性能特点§2CAN总线的技术规范§3CAN器件及开发§1CAN总线的性能特点CAN(ControllorAreaNetwork)总线技术,由于其高性能、高可靠性以及独特的设计,越来越受到人们的重视。已被列入ISO国际标准,称为ISO11898。CAN最初是由BOSCH公司为汽车监测、控制系统而设计的。由于CAN总线本身的特点,其应用范围已不再局限于汽车工业,而向过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械等领域发展。§1CAN总线的性能特点主要特点如下:1、多主方式工作;2、具有不同的优先级;3、采用非破坏性总线仲裁技术§1CAN总线的性能特点4、CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”;5、节点数主要取决于总线驱动电路;6、采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。§1CAN总线的性能特点7、CAN的每帧信息都有CRC校验及其他检错措施,保证了数据出错率极低。8、CAN节点在错误严重的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受影响。9、直接通讯距离最远可达10km(速率在5Kbps以下);通信速率可达1Mbps(通信距离最长为40m);§2CAN总线的技术规范§2.1CAN的通信参考模型§2.3报文传送与帧结构§2.4错误类型和界定§2.5位仲裁技术§2.2CAN总线介质装置§2.1CAN的通信参考模型1991年飞利浦半导体公司制定并发布了CAN技术规范。CAN技术规范(Version2.0)包括A和B两部分:2.0A:CAN报文标准格式2.0B:标准的和扩展的两种格式CAN只采用了ISO/OSI模型中的物理层和数据链路层。§2.1CAN的通信参考模型CAN通信模型的分层结构§2.1CAN的通信参考模型一、物理层CAN技术规范的物理层定义信号怎样进行发送,因而涉及电气连接、驱动器/接收器的特性、位编码/解码、位定时及同步等内容。但对总线媒体装置,诸如驱动器/接收器特性未作规定,以便在具体应用中进行优化设计。CAN物理层选择灵活,没有特殊的要求,可以采用共地的单线制、双线制、同轴电缆、双绞线、光缆等。§2.1CAN的通信参考模型二、数据链路层1、逻辑链路控制子层为数据传送和远程数据请求提供服务,确认要发送的信息,确认接收到的信息,并为恢复管理和通知超载提供信息,主要功能是报文滤波、超载通知和恢复管理。§2.1CAN的通信参考模型2、介质访问控制子层主要是传送规则,亦即控制帧结构、执行总线仲裁、错误检测、出错标定和故障界定。MAC子层为开始一次新的发送确定总线是否开放或者是否马上接收。MAC子层是CAN协议的核心,该子层特性不存在修改的灵活性。§2.1CAN的通信参考模型CAN数据链路层由一个CAN控制器实现,采用了改进的CSMA/CD方式,但不同于普通的Ethernet,它采用非破坏性总线仲裁技术,网络上节点(信息)有高低优先级之分以满足不同的实时需要。当总线上有两个节点同时向网上输送信息时,优先级高的节点继续传输数据,而优先级低的节点主动停止发送,有效地避免了总线冲突以及负载过重导致网络瘫痪的情况。§2.1CAN的通信参考模型三、应用层协议CAN协议标准仅仅定义了物理层和数据链路层。早期CAN应用层的种类比较多,可以说每个厂家都有自己的应用层标准。Honeywell公司的SDS(智能分布系统)Rockwell公司的Devicenet§2.2CAN总线介质装置在1993年形成的国际标准ISO11898中对基于双绞线的CAN总线介质装置特性做了建议。总线可具有两种逻辑状态:隐性或显性。显位能改写隐位。“0”为显性位,“1”为隐性位。§2.3报文传送与帧结构报文中的位流按照非归零码(NRZ)方法编码。报文传送由4种不同类型的帧表示和控制:数据帧携带数据由发送器至接收器;远程帧通过总线单元发送,以请求发送具有相同标识符的数据帧;出错帧由检测出总线错误的任何单元发送;超载帧用于提供当前的和后续的数据帧的附加延迟。§2.3报文传送与帧结构一、数据帧数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧尾。数据场长度可为0。§2.3报文传送与帧结构在CAN2.0B中存在两种不同的帧格式(标准格式和扩展格式)。§2.3报文传送与帧结构为使控制器设计相对简单,并不要求执行完全的扩展格式,但必须完全执行标准格式。每个控制器均支持标准格式,每个控制器均接受扩展格式报文,不至于因为格式而破坏扩展帧。如何实现CAN技术规范兼容?§2.3报文传送与帧结构1、帧起始(SOF)标志数据帧和远程帧的开始,它仅由一个显位构成。2、仲裁场对于CAN2.0B,标准格式和扩展格式的仲裁场格式不同。§2.3报文传送与帧结构RTR——远程发送请求位;SRR——替代远程请求位。标准:ID.28-ID.18;扩展:ID.28-ID.0(基本和扩展ID)§2.3报文传送与帧结构注意点:(1)一般RTR位为显位,SRR位为隐位。由于基本ID相同而造成的标准帧与扩展帧的仲裁冲突问题便得以解决。原有的相同基本ID的标准数据帧优先级高于扩展数据帧。(2)IDE位对于扩展格式居于仲裁场,对于标准格式属于控制场。IDE在标准格式中以显性电平发送,而在扩展格式中为隐性电平。§2.3报文传送与帧结构3、控制场控制场由6位组成。数据长度码DLC指出数据场的字节数目。数据长度码为4位,在控制场中被发送。数据长度码中数据字节数目编码如表所列,其中:d表水显位,r表示隐位。§2.3报文传送与帧结构§2.3报文传送与帧结构4、数据场数据场由数据帧中被发送的数据组成,它可包括0一8字节,每字节8位。首先发送的是最高有效位。5、CRC场包括CRC序列,后随CRC界定符。§2.3报文传送与帧结构CRC序列后面是CRC界定符,它只包括一个隐位。被除的多项式系数由包括帧起始、仲裁场、控制场、数据场(若存在的话)在内的无填充的位流给出。此多项式被发生器产生的下列多项式除§2.3报文传送与帧结构6、应答场(ACK)包括应答间隙和应答界定符。在应答场中,发送器送出两个隐位。一个正确地接收到有效报文的接收器,将在应答间隙发送一个显位,以此来告知发送器。应答界定符是应答场的第二位,并且必须是隐位,因此应答间隙被两个隐位(CRC界定符和应答界定符)包围。§2.3报文传送与帧结构7、帧结束每个数据帧和远程帧均以7个连续的隐位作为结束标志。§2.3报文传送与帧结构二、远程帧作为接收器的节点可以通过向相应的数据源节点发送一个远程帧来激活该源节点,让它把该源节点的数据发送给接收器。远程帧由6个不同位场组成。§2.3报文传送与帧结构同数据帧相反,远程帧的RTR位是隐位。远程帧不存在数据场。DLC的数据值是独立的,它可以是0一8中的任何数值,这数值为对应数据帧的DLC。§2.3报文传送与帧结构三、出错帧出错帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,后随的第二个场是出错界定符。错误标志具有两种形式:一种是活动出错标志;一种是认可出错标志。活动出错标志由6个连续的显位组成;而认可出错标志由6个连续的隐位组成,它可被来自其他节点的显位改写。出错界定符包括8个隐位。§2.3报文传送与帧结构四、超载帧超载帧包括两个位场:超载标志和超载界定符。超载标志由6个显位组成。超载界定符由8个隐位组成。§2.3报文传送与帧结构根据CAN2.0B,有3种超载的情况,这3种情况都会引发超载标志的传送:1、接收器内部情况,即此接收器在接收下一个数据帧或远程帧之前需要一个延时;2、在“间歇场”的第一或第二位检测到显位的情况;3、如果CAN节点在错误定界符或超载定界符的第8位(最后一位)采样到一个显位,则该节点会发送一个超载帧(不是出错帧),错误计数器不会增加。§2.3报文传送与帧结构五、帧间空间数据帧或远程帧,通过帧间空间与当前一帧分隔开,而不管前一帧是何种类型的帧(数据帧、远程帧、出错帧或超载帧)。而在超载帧与出错帧前面不需要帧间空间,多个超载帧之间也不需要帧间空间来作分隔。间歇场由3个隐位组成。间歇期间,所有节点都不允许启动发送数据帧或远程帧,只能标示超载条件。§2.3报文传送与帧结构总线空闲时间可为任意长度。如果“出错认可”节点是前一报文的发送器,则其帧间空间还包括一个“暂停发送场”。暂停发送场是指:出错认可节点发完一个报文后,在开始下一次报文发送或认可总线空闲之前,紧随间歇场后送出8个隐位。如果此时另一节点开始发送报文(由其他站引起),则本站将变为报文接收器。§2.4错误类型和界定在CAN总线中存在5种错误类型(它们并不互相排斥)。1、位错误:节点在发送每一位的同时也对总线进行监视,当监视到总线的位值与送出的位值不同时,则在该位时间里检测到一个位错误。例外情况是,在仲裁场的填充位流期间或应答间隙送出隐位而检测到显位时,不视为位错误。节点在发送“出错认可标志”期间检测到显位,也不视为位错误。2、填充错误:在应使用位填充方法进行编码的报文中,若出现了第6个连续相同的位电平时,则判断检出一个位填充错误。§2.4错误类型和界定3、CRC错误:CRC序列是由发送器CRC计算的结果组成的。接收器以与发送器相同的方法计算出CRC序列。若计算结果与接收到的CRC序列不相同,则检出一个CRC错误。4、格式错误:若固定形式的位场中出现一个或多个非法位时,则检出一个格式错误。5、应答错误:在应答间隙,若发送器未检测到显位,则由它检出一个应答错误。§2.4错误类型和界定当检测到CRC错误时,出错标志在应答界定符后面那一位开始发送,除非其他出错条件的错误标志在此之前已经开始发送。在CAN总线中的故障状态有3种:错误激活(erroractivc)、错误认可(errorpassive)和总线关闭。错误激活节点可以照常参与总线通信,当检测到错误时,送出一个活动错误标志。当错误认可节点检测到错误时,只能送出认可错误标志。总线关闭状态不允许节点对总线有任何影响§2.4错误类型和界定为了界定故障,在每个总线单元中都设有两种计数:发送出错计数和接收出错计数。例如:当发送错误计数大于或等于256时,节点进入总线关闭状态。§2.5位仲裁技术CAN总线使用的是一种叫做“载波监测,多主掌控/冲突避免”的通信模式。这就允许在总线上的任一设备有一定的机会取得总线的控制权来向外发送信息。如果在同一时刻有两个以上的设备欲发送信息,就会发生数据冲突,CAN总线能够实时地检测这些冲突情况并做出相应的仲裁,而使得获得仲裁的信息帧不受任何损坏的继续传送。§2.5位仲裁技术CAN总线当总线空闲时呈隐性电平,此时任何一个节点都可以向总线发送一个显性电平作为一个帧的开始。如果有两个或两个以上的节点同时发送,就会产生竞争。CAN做了改进,是按位对标识符进行仲裁。各发送节点在向总线发送电平的同时,也对总线上的电平进行读取,并与自身发送的电平进行比较,如果电平相同则继续发送下一位,不同则停止发送,退出总线竞争。剩余的节点则继续上述过程,直到总线上只剩下一个节点发送的电平,总线竞争结束,优先级最高的节点获得了总线的使用权。§2.5位仲裁技术例:3个CAN消息帧在总线上的竞争情况§3CAN器件及开发§3CAN器件及开发§3.1CAN控制器SJA1000§3.2CAN驱动器82C250/1§3.3节点开发实例§3.4应用实例§3.1CAN控制器SJA1000一、内部结构及管脚SJA1000是一种独立控制器,是PHILIPS半导体PCA82C200CAN控制器(BasicCAN)的替代产品,而且它增加了一种新的工作模式PeliCAN,这种模式支持具有很多新特性的CAN2.0B协议。§3.1CAN控制器SJA1000§3.1CAN控制器SJA1000AD7-AD0:多路地址/数据总线;MODE:模式选择输入1=Intel模式0=Motorola模式ALE/AS:ALE输入信号(Intel模式)AS输入信号(Motorola