CAN总线及应用实例(1)CAN特点●CAN为多主方式工作,网络上任意智能节点均可在任意时刻主动向网络上其他节点发送信息,而不分主从,且无需站地址等节点信息,通信方式灵活。利用这特点可方便地构成多机备份系统。●CAN网络上的节点信息分成不同的优先级(报文有2032种优先权),可满足不同的实时要求,高优先级的数据最多可在134,us内得到传输。●CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,大大节省了总线冲突仲裁时间。●CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式收发数据,无需专门“调度”。●CAN的直接通信距离最远可达l0km(速率5kbp以下):通信速率最高可达Mbps(此时通信距离最长为40m)。●CAN上的节点数主要取决于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展(CAN2.0B)的报文标识符几乎不受限制。(2)CAN总线协议CAN协议以国际标准化组织的开放性互连模型为参照,规定了物理层、传输层和对象层,实际上相当于ISO网络层次模型中的物理层和数据链路层。图3.9为CAN总线网络层次结构,发送过程中,数据、数据标识符及数据长度,加上必要的总线控制信号形成串行的数据流,发送到串行总线上,接收方再对数据流进行分析,从中提取有效的数据。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码,数据在网络上通过广播方式发送。其优点是可使网络内的节点个数在理论上不受限制(实际中受网络硬件的电气特性限制),还可使同一个通信数据块同时被不同的节点接收,这在分布式控制系统中非常有用。CAN2.0A版本规定标准CAN的标识符长度为11位,同时在2.0B版本中又补充规定了标识符长度为29位的扩展格式,因此理论上可以定义2的11次方或2的19次方种不同的数据块。遵循CAN2.0B协议的CAN控制器可以发送和接收标准格式报文(11位标识符)或扩展格式报文(29位标识符),如果禁止CAN2.0B则CAN控制器只能发送和接收标准格式报文而忽略扩展格式的报文,但不会出现错误。每个报文数据段长度为0-8个字节,可满足通常工业领域中控制命令、工作状态及检测数据传送的一般要求。同时,8个字节占用总线时间不长,从而保证了通信的实时性。CAN协议采用CRC检验并提供相应的错误处理功能,保证了数据通信的可靠性。对象层:报文滤波、报文和状态的处理传输层:故障界定、错误检测和信令、报文校验、应答、仲裁、报文分帧、传输速率和定时物理层:信号电平和位表示、传输媒体图3.9CAN总线层次结构(3)报文传送和帧结构CAN总线以报文为单位进行信息传送。报文中包含标识符,它标志了报文的优先权。CAN总线上各个节点都可主动发送。如同时有两个或更多节点开始发送报文,采用标识符ID来进行仲裁,具有最高优先权报文节点赢得总线使用权,而其他节点自动停止发送。在总线再次空闲后,这些节点将自动重发原报文。CAN系统中,一个CAN节点不使用有关系统结构的任何信息。报文中的标识符并不指出报文的目的地址,而是描述数据的含义。网络中的所有节点都可有标识符来自动决定是否接收该报文。每个节点都有标识符寄存器和屏蔽寄存器,接收到的报文只有与该屏蔽的功能相同时,该节点才开始正式接收报文,否则它将不理睬标识符后面的报文。CAN支持4种不同类型报文帧:数据帧、远程帧、出错帧、超载帧、帧间空间1)数据帧用于在各个节点之间传送数据或命令,它有7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束,如图3.10-13所示。控制场仲裁场数据场CRC场帧结束或超载帧帧间空间帧间空间帧起始ACK场数据帧图3.10数据帧●帧起始标志数据帧的开始。它由一个主控位构成。●仲裁场由11位标识符(M)和远程发送请求位(RTR)组成,其中最高7位。不能全是隐性位。M决定了报文的优先权。如主控位为0,隐性位为1,则M的数值越小,优先权越高。对数据帧,RTR为主控电平。●控制场r1和r0为保留位,应发送主控电平。DLC为数据长度码n,它为0-80●数据场允许的数据字节长度为0-8,由n决定。●应答场包括应答位和应答分隔符。发送站发出的这两位均为隐性电平。而正确地接收到有效报文的接收站,在应答位期间应传送主控电平给发送站。应答分隔符为隐性电平。●帧结束由7位隐性电平组成。IDESRTRSOF标准格式控制场仲裁场数据场r0DLC11位标识符仲裁场图3.11仲裁场SRRIDESRTRSOF扩展格式控制场仲裁场数据场r0DLC11位标识符仲裁场18位标识符仲裁场r1图3.12仲裁场扩展格式DLC0DLC1DLC2DLC3控制场数据场或CRC场r0r1仲裁场保留位数据长度码图3.13控制场以上为标准格式的数据帧,除此之外,在CAN规范2.0B中,还定义了扩展格式的数据帧,它的标识符扩展为29位。它的前11位标识符后的两位为SRR和ME,它们均为隐性电平,后面为新增的18位标识符,其余与标准格式相同。表3.2数据长度码中数据字节数目编码数据字节数目数据长度码DLC3DLC2DLC1DLC00dddd1dddr2ddrd3ddrr4drdd5drdr6drrd7drrr8rddd2)远程帧控制场仲裁场CRC场帧结束或超载帧帧间空间帧间空间帧起始ACK场远程帧图3.14远程帧3)出错帧或超载帧出错帧数据帧帧间空间错误标志错误标志叠加错误界定符图3.15出错帧1)超载帧或超载帧超载帧帧结束或帧间空间超载标志超载标志叠加超载界定符超载界定符错误界定符图3.16超载帧(4)CAN通信接口图3.17是CAN通信部分电路,SJA1000是一种独立用于移动目标和一般工业环境中的区域网络控制。它是Philips半导体公司PCA82C200CAN控制器(BasicCAN)的替代品,而且它增加了一种新的操作模式-PeliCAN,这种模式支持具有很多新特性的CAN2.0B的协议,独立的CAN控制器有2个不同的操作模式:BasicCAN模式和PeliCAN模式其中BasicCAN模式可和PCA82c250相兼容BasicCAN模式是上电后默认的操作模式,因此用PCA82C250(是协议控制器和物理传输线路之间收发器)开发的已有硬件和软件可以直接在SJA1000上使用而不用作任何修改;PeliCAN模式是新的操作模式它能够处理所有CAN2.0B规范的帧类型而且它还提供一些增强功能和SJA1000能应用于更宽的领域。图3.17CAN通信部分电路1)SJA1000的特征能分成3组:①已建立的PCA82C200功能这组的功能已经在PCA82C200里实现。②改良的PCA82C200功能这组功能的部份已经在PCA82C200里实现但是在SJA1000里这些功能在速度大小和性能方面得到了改良。③PeliCAN模式的增强功能在PeliCAN模式里SJA1000支持一些错误分析功能支持系统诊断系统维护系统优化而且这个模式里也加入了对一般CPU的支持和系统自身测试的功能。SJA1000管脚:AD0----AD7:地址/数据复用信号ALE/AS:ALE输入信号(Intel模式),AS输入信号(Motorola模式)/CS:片选信号,低电平有效/RD:微控制器的/RD信号(Intel模式),或E使能信号(Motorola模式)/WR:微控制器的/WR信号(Intel模式),或R/W使能信号(Motorola模式)CLKOUT:提供给微控制器的时钟输出信号,通过可编程分频器由内部晶振产生;时钟分频寄存器的时钟关闭位可禁止该引脚。VSS1:接地端,VSS2:输入比较器接地端,VSS3:输出驱动器接地端。VDD1:逻辑电路的5V电源,VDD2输入比较器5V电源,VDD3输出驱动器5V电源。XTAL1,2:分别位振荡器放大电路输入输出。MODE:模式选择输入,1=Intel模式,0=Motorola模式。TX0,TX1:由输出驱动器0、1到物理线路的输出端。/INT:中断输出,开漏输出。/RST:复位输入。RX0,RX1:由物理总线到SJA1000输入比较器的输入端,显性电平将会唤醒SJA1000的睡眠模式;如果RX1RX0的电平高,读出为显性电平,反之读出的隐性电平;如果时钟分频寄存器的CBP位被置位,就忽略CAN输入比较器以减少内延时(此时连有外部收发电路);这种情况下只有RX0是激活的;隐性电平被认为是高,而显性电平被认为是低。PCA82C250/251收发器是协议控制器和物理传输线路之间的接口,对总线提供差动发送能力,对CAN控制器提供差动接收能力,可连接110个节点。PCA82C250/251管脚:TXD:发送数据输入GND:地Vcc:电源4.5——5.5VRXD:接收数据输出Vref:参考电压输出CANH:低电平CAN电压输入/输出CANH:高电平CAN电压输入/输出Rs:斜率电阻输入,接地选择高速工作模式2)SJA1000的基本功能和寄存器:①BasicCAN功能说明表3.3为SJA1000寄存器说明。表3.3SJA1000寄存器说明地址功能段操作模式中的寄存器功能复位模式中的寄存器高功能0各类控制器读写读写1控制控制控制控制2FFH命令FFH命令3状态-状态-4FFH-中断-5FFH-验收代码验收代码6FFH-验收屏蔽验收屏蔽7FFH-总时序0总时序08FFH-总时序1总时序19测试测试测试测试10发送缓冲器标识符位域10-3标识符位域10-3FFH-11标识符位域2-0RTR和DLC位域标识符位域2-0RTR和DLC位域FFH-12-19数据字节1——数据字节8数据字节1——数据字节8FFH——FFH―…―20接受缓冲器标识符位域10-3标识符位域10-3标识符位域10-3标识符位域10-321标识符位域2-0RTR和DLC位域标识符位域2-0RTR和DLC位域标识符位域2-0RTR和DLC位域标识符位域2-0RTR和DLC位域22-29数据字节1——数据字节8数据字节1——数据字节8数据字节1——数据字节8数据字节1——数据字节830FFH-FFH-31时钟分频器时钟分频器时钟分频器时钟分频器时钟分频器[1]控制寄存器(CR):如表3.4所示。表3.4控制寄存器位符号名称值功能CR.7CR.6CR.5CR.4OIE超载中断使能1使能:如果数据超载位置位,微控制器接收一个超载中断信号0禁止:微控制器不从SJA1000接收超载中断信号CR.3EIE错误中断使能1使能:如果出错或总线状态改变,微控制器接收一个错误中断信号0禁止:微控制器不从SJA1000接收错误中断信号CR.2TIE发送中断使能1使能:当报文被成功或发送缓冲器可再次被访问时,SJA1000向微控制器发出一次发送中断信号0禁止:SJA1000不向微控制器发送中断信号CR.1RIE接收中断使能1使能:报文被无错误接收时,SJA1000向微控制器发出一次中断信号0禁止:SJA1000不向微控制器发送接收中断信号CR.0RR复位请求1常态:SJA1000检测到复位请求后,忽略当前发送/接收的报文,进入复位模式0非常态:复位请求位接收到一个下降沿后,SJA1000回到工作模式[2]命令寄存器(CMR):如表3.5所示。表3.5命令寄存器位符号名称值功能CMR.7CMR.6CMR.5CMR.4CTS睡眠1睡眠:如果没有CAN中断等待和总线活动,SJA1000进入睡眠模式0唤醒:SJA1000正常工作模式CMR.3CDO清除超载状态1清除:清除数据超载状态位0无作用CMR.2RRB释放接收缓冲器1释放:接收缓冲器中存放报文的内存空间将被释放0无作用CMR.1AT夭折发送1常态:如果不是在处理过程中,等待处理的发送请求将忽略0非常态:无作用CMR.0TR发送请求1常态:报文被发送0非常态:无作用[3]状态寄存器(SR):如表3.6所示。表3.6状态寄存器位符号名称值功能SR.7BS总线状态1总线关闭:SJA1000退出总线活动0总线开启:SJA1000进入总线活