第五章CAN总线范文.docx
《第五章CAN总线范文.docx》由会员分享,可在线阅读,更多相关《第五章CAN总线范文.docx(28页珍藏版)》请在冰豆网上搜索。
第五章CAN总线范文
第五章CAN总线
第一节CAN总线概述
CAN(ControllerAreaNetwork)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。
CAN最初出现在80年代末的汽车工业中,由德国Bosch公司最先提出。
当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。
提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。
于是,他们设计了一个单一的网络总线,所有的外围器件可以被挂接在该总线上。
1993年,CAN已成为国际标准ISO11898(高速应用)和ISO11519(低速应用)。
与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。
由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。
它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。
同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。
今天,在欧洲几乎每一辆新客车均装配有CAN局域网,CAN已经成为全球范围内最重要的总线之一,甚至领导着串行总线。
在1999年,接近6千万个CAN控制器投入使用;在2000年,市场销售超过1亿个CAN器件。
一、CAN总线的技术特点
(1)CAN工作于多主方式,网络上任意一个节点均可在任意时刻主动地向网络上的其他节点发送信息,不分主从,通信方式灵活,且无需站地址等节点信息。
(2)CAN网络上的节点信息分成不同的优先级,可满足不同的实时性要求,高优先级的数据最快可在134μs内得到传输。
(3)CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大地节省了总线仲裁时间。
在网络负载很重的情况下也不会出现网络瘫痪情况。
(4)CAN网络具有点对点、一点对多点和全局广播等几种通信方式。
(5)CAN的直接通信距离最远可达10km(速率在5kbps以下);通信速率最高可达1Mbps(此时通信距离最长为40m)。
(6)CAN上节点主要取决于总线驱动电路,目前可达110个;报文表示可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识几乎不受限制。
(7)采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。
(8)CAN的每帧信息都有CRC校验气气他检错措施,保证了极低的数据出错率。
(9)CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。
(10)CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。
二、基本术语与概念
(1)报文(Messages)
(2)信息路由(InformationRouting)
(3)位速率(BitRate)
(4)优先权(Priorties)
(5)远程数据请求(RemoteDataRequest)
(6)多主机(Multimaster)
(7)仲裁(Arbitrtion)
(8)安全性(Safety)
(9)错误标定和恢复时间(ErrorSignalingandRecoveryTime)
(10)故障界定(FaultConfinement)
(11)连接(Connections)
(12)单一通道(SingleChannel)
(13)总线值的表示(BusValues)
(14)应答(Acknowledgment)
(15)休眠模式/唤醒(SleepMode/Wake-up)
第二节CAN的技术协议规范
随着CAN在各种领域的应用与推广,对其通信格式的标准化提出了要求。
为此,1991年9月,Philips半导体公司(2006年9月1日,更名为NXP半导体公司)制订并发布了CAN技术规范(Version2.0)。
该技术规范包括A和B两部分。
2.0A给出了CAN报文标准格式(11位标识符),而2.0B给出标准的(11位标识符)和扩展的(29位标识符)两种格式。
1993年11月,ISO正式颁布了公路车辆—数字信息交换—用于高速通信的控制器局域网(CAN)国际标准ISO11898以及低速标准ISO11519-2,为控制器局域网的标准化、规范比铺平了道路。
ISO11898和ISO11519-2标准对于数据链路层的定义相同,但物理层不同。
一、CAN协议的分层结构
为使设计透明和执行灵活,CAN只采用了ISO/OSI标准模型中的两层:
✓数据链路层:
包括逻辑链路控制子层(LogicalLinkControl,LLC)和媒体访问控制子层(MediumAccessControl,MAC)。
✓物理层:
包括物理信号子层(PhysicalLayerSignal,PLS)、物理介质连接(PhysicalMediumAttachment,PMA)和介质相关接口(MediumDependentInterface,MDI)。
在CAN技术规范2.0A的版本中,数据链路层的LLC和MAC子层的服务和功能被描述为“目标层”和“传送层”。
1.物理层
物理层定义信号是如何进行传输的,各部分的功能如下:
(1)物理层信号PLS:
实现位定时、位编码/解码、同步等功能。
✓理想发送器在没有重同步的情况下,每秒发送的位数定义为标称位速率,定义其倒数为标称位时间,它可分为同步段、传播段、相位缓冲段1和相位缓冲段2等几个互补重叠的时间段。
✓CAN位流根据“不归零”NRZ方式来编码,即在整个位时间里,位电平要么为显性,要么为隐性。
在隐性状态下,VCANH和VCANL被固定于平均电压电平,Vdiff近似为零。
显性状态以大于最小阈值的差分电压表示。
在显位期间,显性状态改变隐性状态并发送。
✓同步包括硬同步和重同步两种形式。
在一个时间内只允许一种同步。
仅当采样点之前检测到的数值与紧跟边沿之后出现的数值不同时,边沿才用于同步。
(2)物理介质连接PMA:
实现总线发送/接收的功能电路,并可提供总线故障检测方法。
✓CAN2.0规范没有定义该层的驱动器/接收器特性,以便在具体应用中进行优化设计。
(3)介质相关接口MDI:
实现物理介质与媒体访问单元之间的机械电气接口。
CAN总线物理层的物理介质连接比较灵活,可以采用共地的单线制(汽车常用)、双线制、同轴电缆、双绞线和光缆等。
网上节点数理论上不受限制,实际上受CAN收发器芯片驱动能力的限制,可达110个。
当总线段长为40m时,最大通信速率为1Mbps;而当通信速率为5kbps时,直接通信距离最大可达10km。
2.数据链路层
(1)逻辑链路控制子层LLC
LLC子层的功能包括验收滤波、过载通知和恢复管理;为数据传送和远程数据请求提供服务,确认由LLC子层接收的报文实际已被接收;并为恢复管理和通知超载提供信息。
在定义目标处理时,存在许多灵活性。
✓验收滤波:
帧内容由标识符命名,标识符不能指明帧的目的地,但会描述数据的含义,每个接收器通过帧验收滤波确定此帧。
✓过载通知:
若接收器由于内部原因要求延迟下一个数据帧/远程帧,则发送过载帧。
✓恢复管理:
发送期间,对于丢失仲裁或被错误干扰的帧,LLC子层具有自动重发功能,在成功发送完成之前,帧发送服务不被用户认可。
(2)媒体访问控制子层MAC
MAC子层是CAN协议的核心,它把接收到的报文提供给LLC,并接收来自
LLC得报文。
MAC子层的主要功能是传送规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。
MAC子层还要确定是否马上开始接收、是否为新的发送开放总线等。
位定时的一些普通功能也可以看做MAC子层的一部分。
MAC子层持性不存在修改的灵活性。
MAC子层有“故障界定”的逻辑电路,此故障界定为自检机制,以便把永久故障和短时扰动区别开来。
✓功能描述:
MAC子层划分为发送和接收两个独立工作的部分。
发送部分提供的功能包括:
数据封装和发送媒体访问管理。
接收部分提供的功能包括:
数据拆装和接收媒体访问管理。
✓MAC帧编码:
CAN的数据帧的五个部分(帧起始、仲裁域、控制域、数据域和CRC序列)均通过位填充的方法编码。
无论何时,发送器只要检测到位流中有5个连续相同数值的位时,便自动在位流中插入一个补码位。
位填充对对于发送单元和接收单元的工作是不同的。
✓介质访问管理:
如果总线处于空闲,则任何单元都可以开始发送报文。
若是两个或两个以上的单元同时开始传送报文,那么就会有总线冲突,可以通过使用标识符的位仲裁形式来解决冲突。
标识符是CAN报文中所包含的信息,不指明报文的目的地,而系统其他节点可以识别该标识符含义并判断是否接收该报文。
总线访问期间,标识符定义静态的报文优先权,即标识符值越小的优先权越高。
注:
CAN2.0B规范对物理层中的驱动器、收发器、连接器和电缆等的形态没有规定,但ISO11898和ISO11519-2对物理层的PMA层和MDA层都有定义,内容不相同。
CAN的ISO/OSI参考模型的分层结构
二、报文传送与帧结构
总线上的信息以不同的固定报文格式发送。
CAN通信协议约定了四种不同的报文格式:
✓数据帧:
携带数据从发送器至接收器。
✓远程帧:
接收单元向发送单元请求发送具有相同标识符数据所用的帧。
✓错误帧:
任何单元检测到一个总线错误就发出错误帧。
✓过载帧:
用以在先后的数据或远程帧之间提供一个附加的延时。
此外,数据帧和远程帧可以使用标准帧及扩展帧两种格式。
它们用一个帧间隔与前面的帧分开。
1.数据帧
数据帧由以下七个不同的位域组成:
✓帧起始(SOF):
标志数据帧和远程帧的起始。
✓仲裁域:
对于标准帧,由11个识别位(ID)和1个远程发送请求位(RTR)组成;对于扩展帧,由11位基本ID、SSR位、IDE位和18个扩展ID组成。
✓控制域:
由6个位组成:
一个识别扩展(IDE)位(该位为显性状态时,说明这是标准帧)、一个零保留位(RB0)(该位定义为显性位)、四位数据长度码(DLC)(说明报文包括的数据字节数)。
✓数据域:
包含正在发送的数据字节。
数据域的长度由数据长度码DLC定义(0~8个字节)。
✓循环冗余码(SOF)域:
用来检测报文传输错误。
包含一个15位的CRC序列,之后是一个隐性的CRC定界位。
✓应答(ACK)域:
所谓应答,即所有的接收器检查报文的一致性。
对于接收正确的报文接收器应答,对于不正确的报文接收器作出标志。
应答域由应答间隙和应答定界符两个位组成。
✓帧结束:
每一个数据帧和远程帧均由一个标志序列(由7个隐性位组成)界定。
2.远程帧
一般情况下,数据传输是由源数据节点(如传感器发送数据帧)自主完成的,但也可能发生终节点向源节点请求发送数据的情况,即远程数据请求。
要做到这一点,终节点需发送一个标识符与所需数据帧的标识符相匹配的远程帧,随后相应的数据源节点会发送一个数据帧以响应远程帧请求。
远程帧也分为标准帧和扩展帧,由帧起始、仲裁域、控制域、CRC域、ACK域和帧结束六个域组成。
3.错误帧
错误帧是由检测到总线错误的任意节点产生的,包含两个域:
✓错误标志:
包括激活错误标志(6个连续的显性位)和认可错误标志(6个连续的隐性位)两种,节点发送哪种类型的出错标志取决于其所处的错误状态。
✓错误定界符:
由8个隐性位构成。
4.过载帧
✓过载帧只能在帧间间隔产生,而错误帧是在帧传输时发出的。
节点最多可产生两条连续的过载帧来延迟下一条报文的发送,有三种情况会产生过载帧:
(1)接收器由于内部原因需要延迟下一个数据帧或远程帧;
(2)节点在帧空间检测到非法显性位;(3)节点在错误界定符或过载界定符的第8位采样到一个显性位。
✓过载帧与激活错误帧具有相同的格式。
过载帧由过载标志(由6个显性位构成)和过载定界符(包含8个隐性位)两个域组成。
因为过载标志违反了“间歇”域的固定格式,其他节点检测到过载条件并发送过载标志,因此过载标志产生重叠。
5.帧间空间
帧间空间将前一条帧与其后的数据帧或远程帧分离开来。
帧间空间由至少3个隐性位构成,又称为间断。
间断使节点在发送下一条报文之前有时间进行内部处理。
过载帧和错误帧之前不能插入帧间隔。
在间断之后,CAN总线将保持隐形状态(总线空闲),直到下一条报文发送开始。
帧间空间结构
第三节CAN总线的节点组成
一般来说,系统中每个CAN模块都能按照控制节点被分成不同的功能块,每个节点由微处理器、CAN控制器和CAN收发器组成。
对于每个控制节点(或称控制单元),首先是通过微处理器(或CPU)读取外围设备、传感器和处理人机接口(MMI)的检测与控制信号,并对该信号进行局部控制调节,执行具体的计算及信息处理等应用功能;同时,通过CAN控制器与其他控制节点或功能模块进行通信。
CAN总线的连接一般是由CAN收发器建立的,CAN收发器增强了总线的驱动能力,它控制逻辑电平使信号从CAN控制器到达总线上的物理层,反之亦然。
在CAN收发器上面一层是一个CAN控制器,它主要用于系统通信,执行在CAN规约里定义的CAN协议。
CAN控制器通常用于信息缓冲和验收滤波。
因此,独立的CAN控制器总是位于微处理器和CAN收发器之间,一般情况下这个控制器是一个集成电路。
CAN总线节点模块装置
一、CAN控制器SJA1000
当CAN协议规范化之后,就可以在集成电路上设计实现物理层和数据链路层的功能。
实现这种功能的集成电路称为通信控制器。
通信控制器和微处理器配合使用,在微处理器中实现应用层的功能和用户需要的其他功能。
通信控制器可以单独封装,也可以嵌入到微处理器中,作为微处理器的一个外设。
目前,最常见的独立封装的CAN控制器是NXP半导体公司生产的SJA1000,它特别适合于车内的电子模块、传感器、制动器的连接和通用工业应用中,尤其是系统优化、系统诊断和系统维护时特别重要。
此外,许多微控制器提供CAN通信接口,8051系列单片机中的P87C591、C8051F040等都有CAN通信接口,嵌入式处理器ARM系列也集成了CAN通信控制器。
1.SJA1000的结构与功能
(1)概述
SJA1000有两种不同的操作模式:
1)BasicCAN模式:
这种模式与PCA82C200兼容,支持CAN2.0A协议。
2)PeliCAN模式:
是新的操作模式,支持CAN2.0B协议。
主要扩展了以下功能:
✓错误检测及处理。
✓可使用单次发送,取消重发功能。
✓监听模式(无应答,无活动错误标志)。
✓支持热插拔,可由软件实现位速率自动检测。
✓接收过滤器扩大为4字节长,接收方式更加灵活。
节点可接收自发信息。
操作模式通过内部的时钟分频寄存器CDR中的CAN模式位来选择。
上电复位时默认模式是BasicCAN。
(2)SJA1000硬件结构
1)接口管理逻辑(IML)
完成对外部处理器的连接,解释来自处理器的命令,控制CAN寄存器的寻址,向控制器提供中断信息和状态信息。
2)数据缓冲器
✓发送缓冲器(TXB)。
是处理器和位流处理器之间的接口,能够存储发送到CAN网络上的完整信息。
发送缓冲器长13个字节,由处理器写入、位流处理器读出。
✓接收缓冲器(RXB)。
位于验收滤波器和处理器之间,用来存储从CAN总线上接收并确认信息。
接收缓冲器(13字节)作为接收FIFO(64字节)的一个窗口,可以被处理器访问。
在此FIFO的支持下,处理器可以在处理一条报文的同时接收其它报文。
3)验收滤波器(ACF)
当SJA1000收到一条报文时,首先将串行位流装换成并行数据,然后送往验收滤波器。
验收滤波器完成接收信息的滤波,通过这个可编程的滤波器,SJA1000能确定哪些信息可以接收。
只有验收滤波通过且无差错时,才把接收的信息帧送入接收FIFO缓冲区。
4)位流处理器(BSP)
是一个在数据缓冲器和CAN总线之间控制数据流的程序装置,还执行总线上的错误检测、仲裁、填充和错误处理。
5)位时序逻辑(BTL)
监视串口的CAN总线和处理与总线有关的位时序,提供了可编程的时间段来补偿传播延时、相位偏移、定义采样点和每一位的采样次数。
6)错误管理逻辑(EML)
负责处理传输层模块的错误。
它接收位流处理器的出错报告,通知位流处理器和接口管理逻辑进行错误统计。
SJA1000硬件结构框图
SJA1000的引脚配置
SJA1000的引脚功能
符号
引脚
功能
AD0~AD7
2,1,28~23
多路地址/数据总线
ALE/AS
3
ALE输入信号(Intel模式)或AS输入信号(Motorola模式)
4
片选输入,低电平允许访问SJA1000
/E
5
微控制器的读信号(Intel模式)或使能信号(Motorola模式)
6
微控制器的写信号(Intel模式)或读写信号(Motorola模式)
CLKOUT
7
SJA1000产生的提供给微控制器的时钟输出信号;此信号由内部振荡器经可编程分频器得到;可编程禁止该引脚
VSS1
8
逻辑电路地
XTAL1
9
振荡放大器输入,外部振荡放大器信号经此引脚输入
XTAL2
10
振荡放大器输出,使用外部振荡信号时此引脚必须开路
MODE
11
模式选择:
1=Intel模式;0=Motorola模式
VDD3
12
输出驱动器5V电源
TX0
13
由输出驱动器0至物理总线的输出端
TX1
14
由输出驱动器1至物理总线的输出端
VSS3
15
输出驱动器地
16
中断输出端,用于向微控制器提供中断信号
17
复位输入端,用于重新启动CAN接口
VDD2
18
输入比较器5V电源
RX0,RX1
19,20
由物理总线至SJA1000输入比较器的输入端;显性电平将唤醒处于睡眠方式的SJA1000;当RX0高于RX1时,读出为隐性电平,否则为显性电平
VSS2
21
输入比较器接地端
VDD1
22
逻辑电路的5V电源
2.SJA1000的主要寄存器
(1)模式(控制)寄存器:
地址是0的寄存器,在BasicCAN模式下称为控制寄存器(CR);在PeliCAN模式下称为模式寄存器(MOD)。
这个寄存器用于改变CAN控制器的行为,控制寄存器主要管理中断系统和复位模式;模式寄存器用于设置SJA1000的几种工作方式及验收滤波模式。
(2)命令寄存器:
控制SJA1000传输层的动作,是只写的。
在BasicCAN模式下读命令寄存器的结果总是FFH;在PeliCAN模式下命令寄存器的结果总是00H。
(3)状态寄存器:
其内容反映了当前SJA1000的工作状态,是只读的。
在BasicCAN模式和PeliCAN模式下,状态寄存器中的功能相同。
(4)中断管理寄存器:
有中断寄存器和中断允许寄存器。
在BasicCAN模式下,中断允许位在控制寄存器中定义,没有单独的中断允许寄存器。
(5)总线定时寄存器:
总线定时寄存器0定义了波特率预设值BRP和同步跳转宽度SJW的值。
总线定时寄存器1定义了每个周期位的长度、采样点的位置和在每个采样点的采样次数。
(6)输出控制寄存器:
控制SJA1000的发送电路,可以配置成不同的输出驱动方式。
在复位模式中,此寄存器可被读写访问。
(7)时钟分频寄存器:
控制输出时钟的频率。
此外,还控制着TX1上专用接收中断脉冲、接收比较通道以及BasicCAN模式和PeliCAN模式的选择。
硬件复位后寄存器的默认状态是NXP模式的12分频或Intel模式2分频。
二、CAN收发器82C250
CAN总线收发器(也称CAN总线驱动器)提供CAN控制器与物理总线之间的接口,对总线提供差动发送能力,并对CAN控制器提供差动接收能力,是影响CAN网络通信的一个重要因素。
1.概述
PCA82C250是NXP半导体公司生产的CAN总线收发器,主要用于汽车中高速领域,是目前使用最广泛的CAN总线收发器,具有以下特性:
✓与ISO11898标准完全兼容;
✓高速率(最高可达1Mbps);
✓具有抗汽车环境下瞬间干扰和保护总线的能力;
✓防止总线与电源及地之间发生短路;
✓热保护;
✓降低射频干扰(RFI)和斜率(slope)控制;
✓低电流待机方式;
✓某一节点掉电将会自动关闭输出,不会影响总线其他节点工作;
✓可连接110个节点。
2.组成结构及功能描述
PCA82C250结构框图
PCA82C250管脚图
PCA82C250引脚信息
符号
引脚
功能描述
符号
引脚
功能描述
TXD
1
发送数据输入
Vref
5
参考电压输出
GND
2
地
CANL
6
低电平CAN电压输入或输出
VCC
3
电源电压
CANH
7
高电平CAN电压输入或输出
RXD
4
接收数据输出
RS
8
斜率电阻输入
PCA82C250器件参考数据
符号
参数
条件
最小
最大
单位
VCC
提供电压
4.5
5.5
V
ICC
提供电流
待机模式
—
170
μA
1/tbit
最大发送速度
电源电压
1
—
Mbaud
Vcan
CANL和CANH输入/输出电压
非归零码
-8
+18
V
Vdiff
差动总线电压
1.5
3.0
V
tpd
传输延迟时间
高速模式
—
50
ns
T
工作环境温度
-40
+125
˚C
三、CAN总线系统智能节点设计
1.CAN总线系统智能节点硬件电路设计
CAN总线系统智能节点硬件电路原理图
电路主要由四部分所构成:
微控制器89C51、独立CAN通信控制器SJA1000、CAN总线收发器82C250和高速光电耦合器6N137。
微处理器89C51负责SJA1000的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。
(1)SJA1000的AD0~AD7连接到89C51的P0口,
连接到89C51的P2.0,P2.0为0的CPU片外存储器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读写操作。
SJA1000的
、
、ALE分别与89C51的对应引脚相连,
接89C51的
,89C51也可通过中断方式访问SJA1000。
(2)为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与82C250的TXD和RXD相连,而是通过高速光耦6N137后与82C250相连,这样就很好的实现了总线上各CAN节点间的电气隔离。
(3)82C250与CAN总线的接口部分也采用了一定的安全和抗干扰