1、X 大学毕业设计 1CAN 总线接口电路制作设计报告摘要:CAN 总线是众多的现场总线标准之一,广泛应用于工业测控网络中。本文给出了基于 CAN 控制器 82C250 和 SJAl000 的智能节点的硬件电路及软件结构,对设计中的难点及实现过程中应注意的问题进行了比较详细地介绍。 关键词:CAN ;SJA1000 独立 CAN 器件;PCA82C250 CAN 转换器Design of CAN Bus system terminal circuitAbstract:CAN (Controller Area Network) ,one of the most famous fieldbus pr
2、otocol standard ,was used widely in measurement and control network in industry field. In this paper a hard circuit and soft configuration of the intelligent node based on CAN controller 82C250 and SJA1000 have been presented Especially the crux in designing and the problems should be payed attentio
3、n in realizing are discussed in detailsKey words:CAN bus;SJAl000 standalone CAN contro11er;PCA82C250 CAN converter一、 总体概要CAN 总线(Contro11er Area Network 控制器局域网 )是现场总线的一种。90 年代以来,以现场总线为基础的全数字式控制系统发展迅速,逐渐成为现代工业的主要控制技术。它的最大优点是可以大幅度节约连接导线,降低安装和维护费用;精度高,能远传多个过程变量。在目前的十几种现场总线中,CAN 总线是一种应用范围较为广泛的现场总线。它是德国 B
4、osch 公司在 1986 年为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种有效支持分布式控制和实时控制的串行通讯网络。从电器性能看,CAN 现场总线接口采用一对平衡差分信号线进行半双工传送。在每个通信站点上,均有平衡驱动器和差分接收器。CAN 现场总线接口的电气特性是:驱动器无负荷时输出电压为正负5V,有负荷时输出电压为正负 15V。 CAN 总线与其它通信网的不同之处:一是报文传送中不包含目标地址,它是以全网广播为基础,各接收站根据报文中反映数据性质的标识符过滤报文,该收的收下、不该收X 大学毕业设计 2的弃而不用。其好处是可在线上网下网、即插即用和多站接收;二是特别强化了
5、对数据安全性的关注,满足控制系统及其它较高数据要求的系统需求。与主从方式的现场总线不同,CAN Bus 是一种对等式(Peer-to-Peer)的现场总线网,采用 CAN Bus 连接主控单元与 IO 单元,可以通过节点 ID 和 ID 掩码的选择,方便地实现点对点、点对多点和广播等多种传输方式;可以提高主控单元与 IO 单元,I/O 单元之间的隔离性,便于实现模块的冗余和不停机拆装;可以实现无集中机柜的分散安装方式,系统控制功能可进一步向下分散。CAN 总线通信控制器中集成了 CAN 协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括零位的插入删除、数据块编码、循环冗余检验、优先
6、级判别等。CAN 协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点是可使网络内的节点个数理论上不受限制,数据块的标识码可由 11位(按 CAN 技术规范 20A)或 29 位(按 CAN 技术规范 20B)二进制数组成,因此可以定义 211 或 229 个不同的数据块。这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。由于 CAN 总线具有较强的纠错能力,支持差分收发,因而特别适合高噪声且较远距离通讯。CAN 总线具有下列主要特性:CAN 总线可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网
7、络上的其它节点发送信息,多主站依据优先机制进行总线访问。采用非破坏性总线仲裁技术,网络中的节点可以分成不同的优先级,当多个节点同时在网络上传送信息时,优先级低的节点主动暂停数据发送,而优先级高的节点可不受影响继续传送数据。之后,按优先级高低,其它节点在总线空闲时依次进行被暂停的数据传送,有效地避免了总线冲突。借助接收滤波的多地址帧传送。CAN 通信距离最远可达 10km(速率 5kBs 以下) ,距离在 40m以内时通信速率最高可达 1Mbpss,传输介质为双绞线和光纤。CAN 现场总线接口的驱动能力很强,节点数目可达 ll0 个。由于采用短帧结构发送数据,每一帧的有效字节数最多为 8 个,帧
8、传送时间短,因此实时性高,检错效果好,每一帧信息都有 CRC 校验及其它检错措施,通信误码率低。X 大学毕业设计 3远程数据请求配置灵活。 发送期间若丢失仲裁或由于出错而遭破坏的帧可自动重发。暂时错误和永久性故障节点判别及故障节点自动脱离 CAN 总线。在网络节点的错误严重时,具有自动关闭总线接口的功能,避免影响总线上其它节点的正常操作。1、CAN 总线的基本工作原理图如下所示:图 1 CAN 总线的工作原理图CAN 总线的工作原理如图 1 所示,这是一个典型的串行总线的结构形式。CAN 总线以半双工的方式工作,一个节点发送消息,多个节点接收消息。但 CAN 总线的信息存取方式既不同于令牌方式
9、的 Arcnet,也不同于主从方式的 Bit Bus,它采用一种称作广播式的存取工作方式。与其它网络不同,在 CAN 总线的通讯协议中,没有节点地址的概念,也没有任何与节点地址相关的消息存在。CAN 总线支持的是另一种基于数据的工作方式。消息可以在任何时候由任何节点发送到空闲的总线上,并被其它所有节点接收,判断后,决定是否使用这个消息。消息以消息包的形式出现,其格式如图 2 所示。它包括消息的标识符。这个标识符既用来表明消息的类型,也用来表明消息的优先级。由于每个节点的CAN 总线接口必须接收总线上出现的所有消息,因此必然需要设置一个接收寄存器。先将消息接收,再根据接收的消息标识符决定是否需要
10、读取消息包中的数据。同时为了避免不必要的频繁中断节点所在的主机来判断处理每一个总线上的消息,需要设置一个屏蔽寄存器来滤掉那些所在节点设备不感兴趣的消息。11Bit 消息标识符1Bit 远地传送请求4Bit 数据长度码08Byte 数据图 2 CAN 数据格式对于如何判断总线空闲以及如何处理多个节点设备同时发送消息的X 大学毕业设计 4问题,CAN 总线采取了一个与 EtherNet 不同的方法。EtherNet 采用的是 CSMACD 协议,即检测到碰撞后,各节点均先退出发送,再经各自随机产生的时间延迟后再重新发送的办法。CAN 总线则利用总线上信息比特具有的主导被动的作用属性,使优先级高的消
11、息直接压倒优先级低的消息,从而确保相应的节点首先发出优先级高的消息。实现主导被动逻辑状态的电路很多,在低速和短距离通讯的情况下可以采电集电报开路的“线或”电路(见图 3)。图 3 CAN 总线结构例如,若节点 A、B、C 同时发送消息标识符, CAN 总线则要求它们也同时接收总线上的实际状态。如果总线上的状态与节点发出的状态一致,说明该节点正有效地占据着总线;反之说明该节点已经失去了对总线的控制,应当立刻从发送消息的状态转回到接收消息的状态。由图3 可见,节点 C 和 B 相继失去对总线的控制,而节点 A 则一直保持主导状态,直至最终发出整个消息包。由于系统中各种消息具有各不相同的消息标识符,
12、是优先级越高,标识符取值越小,即二进制码中前面的“0”越多。因此多个节点同时发出消息标识符时,最终必有一个节点发出的消息自始至终地占据总线,实现其消息传送而不需重发的过程。显然正是这个节点此刻占据了总线。由于 CAN 总线面向的是数据而不是节点,因此加入或撤销节点设备自然都不会影响网络的工作。这样的方法十分适用于控制系统要求快速、可靠、简明的特点。2、 CAN 总线接口规范的要点CAN 总线共提供了四种消息包:数据消息包、RTR 消息包、错误消息包和过载消息包。图 2 介绍的是数据消息包的帧格式,它由发送数据的节点设备产生,包括帧起始标志位、仲裁域、控制域、数据域、CRCX 大学毕业设计 5检
13、查域、ACK 认可域和帧结束标志位。帧起始标志位以个比特的主导状态出现,这个状态将压倒总线空闲状态(被动状态),表明节点设备开始发送消息。仲裁域由消息标识符和 CRC 标志组成,由于 CAN 总线不使用标识解 015。因此 11 位的二进制码将只产生 2032 个不同的标识符。在规范 CAN20 中,已把它扩展成 29 位。如图 4 所示,在数据消息包中 RTR 位总是设成“0”(主导状态)。IDE 作为标识符扩展标志位总是“1” 。1 2 3 4 5 6 7起始帧 仲裁+RTR 控制 数据 CRC ACK 结束 Bit 数 1 11+1 6 064 16 2 7图 4 CAN 总线的数据消息
14、包RTR 消息包被想要接收某种数据的节点用来请求要求总线上某个远地节点发送。在 RTR 消息包中,除了 RTR 位被设置成“l”(被动状态 )外,其余部分与数据消息包并无不同。此时消息标识符表示的是将要送来的某种远地消息。具有发出这种远地消息能力的节点收到达个 RTR 消息包后,就应尽力相应这个远地传送要求。对 RTR 消息包本身来说,是没有数据域输出的。CAN 总线使用 Bit 填充规则,如果相同状态的 5 个 Bit 被连续发送就会自动地插入一个相反状态的 Bit。出错消息包和过载消息包则例外,出错消息包是 6 个连续的“1” ,使所有节点登录消息错误。CAN 总线要求接收到出错消息的节点
15、立即封锁数据传送,并强制重新发送被封锁的数据。过载消息包与出错消息包相似,但它仅发生在两帧之间,通过让各节点发送七个连续的“0”来延迟总线的动作。CAN 总线没有具体地规定它的物理层实现方法,只要能够提供主导-被动状态的电路即可采用。常用的方法包括直流耦合、交流耦合、变压器耦合、单端和双端差分连接等形式。CAN 总线规定传输速率为1Mbps,但这必须与所采用的传输媒体和噪声环境相适应。二、元器件介绍(一)SJA1000CAN 接口电路由 CAN 控制器和 CAN 驱动器组成。CAN 控制器选用 Philips 公司生产的 SJAl000 控制器,SJAl000 是用于移动目标和一般工业环境中的
16、区域网控制(CAN)的一种独立控制器。SJAl000 是新型的 CAN 独立通讯控制器,它的引脚、电气特性和程X 大学毕业设计 6序相关寄存器与 PCA82C200 完全兼容,具有比 PCA82C200 更先进的特性,支持 CAN20A 和 20B 两种规范,可完成物理层和数据链路层的所有功能,通讯波特率最高可达 1Mbitss。另外, SJAl000 可以工作在 PeliCAN 模式下,PeliCAN 扩展了很多新功能,新扩展的功能更有利于系统的调试和检错,大大提高了系统开发的效率,也改善了系统运行的性能。SJAl000 的主要新功能如下:标准结构和扩展结构报文的接收和发送;64 字节的接收
17、 FIF0:标准和扩展帧格式都具有单双接收滤波器(含接收屏蔽和接收码寄存器) ;可进行读写访问的错误计数器;可编程的错误报警限制;最近一次的错误代码寄存器;每一个 CAN 总线错误都可以产生错误中断;具有丢失仲裁定位功能的丢失仲裁中断:单发方式(当发生错误或丢失仲裁时不重发):只听方式(监听 CAN 总线,无应答,无错误标志):支持热插拔(无干扰软件驱动位速率检测);硬件禁止 CLKOUT 输出。SJA1000 的结构如图 5 所示。图 5 SJA1000 的结构其中,接口管理逻辑执行 CPU 的命令,控制 SJA1000 内部的寻址,并为 CPU 提供中断和状态信息。发送缓冲器可以存储由 C
18、PU 写入的信息,SJA1000 的发送缓冲器最多可以存储 13 个字节的信息。验收滤波器识别 CAN 网络中的帧标识,只有特定标识的信息才被通过并送入接收FIFO,接受的条件可以由 CPU 在对 SJA1000 初始化时写入相应的寄存器。SJA1000 的接收 FIFO 为 64 个字节。CAN 网络数据链路层的协议由核心模块 CAN2.0B 实现。对于要发送的数据,核心模块将其封装成协议帧发送出去,对于来自 CAN 网络的数据帧,核心模块将其解封装并送接口管理逻辑发送缓冲器接收 FIFO 验收滤波器CAN2.0B核心模块X 大学毕业设计 7到验收滤波器滤波。SJA1000 的引脚图如下所示
19、:A L E /A S3C S4R D /E5W R6M O D E11X T A L 2 10C L K O U T 7X T A L 1 9V D D 1 22V D D 2 18V D D 3 12V SS1 8V SS3 15V SS2 21R X 0 19A D 023A D 124A D 225A D 326A D 427A D 61A D 72A D 528T X 1 14T X 0 13R X 1 20R ST17IN T16SJA 1000/RESET图 6 SJA1000 引脚图SJA1000 的引脚功能如下:(1)AD7AD0:脚 2,1,2823,多路地址数据线。(2)
20、ALE/AS:脚 3,ALE 输入信号(Intel 模式),AS 输入信号(Motorola 模式)。(3)/CS:脚 4。片选信号,低电平允许访问 SJA1000。(4)BD E:脚 5,微控制器的RD 信号(Intel 模式 )或 E 使能信号(Motoro1 模式) 。(5)WR:脚 6,微控制器的 WR 信号(Intel 模式)或 RD(/WR)信号(Motoro1a 模式)。(6)CLKOUT:脚 7,SJA1000 产生的提供微控制器的时钟输出信号,时钟控制寄存器的时钟关闭位可禁止该引脚。(7)VSS1:脚 8,接地。(8)XTAL1,XTAL2:脚 9,10,振荡器输入脚。(9)
21、MODE:脚 11,模式选择输入, 1=lntel 模式,0Motorola 模式。(10)VDD3:脚 12,输出驱动 5V 电压源。X 大学毕业设计 8(11)TX0,TX1:脚 13,14,从 CAN 输出驱动 O、 1 到物理线路上。(12)VSS3:脚 15,输出驱动器接地。(13)INT:脚 16,中断输出,用于中断微控制器。(14)RST:脚 17,复位输入。(15)VDD2:脚 18,输入比较器的 5V 电压源。(16)RX0,RX1 :脚 19,20,从物理的 CAN 总线输入到 SJA1000的输入比较器。(17)VSS2:脚 21,输入比较器的接地端。(18)VDDl:脚
22、 22,逻辑电路的 5V 电源。SJA1000 功能框图如图 7 所示。图 7 SJA1000 的功能框图 从图 7 中可以看出,SJA1000 型独立 CAN 总线控制器由以下几个部分构成:(1) 接口管理逻辑:它接收来自微处理器的命令,控制 CAN 寄存器的地址,并为微处理器提供中断和状态信息。(2) 发送缓冲器:有 13 字节长。它位于 CPU 和位流处理器(BSP )之间,能存储一条将在 CAN 总线上发送的完整的报文,报文由CPU 写入,由 BSP 读出。(3) 接收缓冲器(RXB ,RXFIFO):它是 CPU 和接收滤波器之间X 大学毕业设计 9的接口,用来存储从 CAN 总线接
23、收并通过了滤波的报文。接收缓冲器RXB 是提供给 CPU 可访问的 13 字节的窗口,这个窗口是属于接收FIFO( RXFIFO)的一部分,共由 64 字节长。有了这个 FIFO,可以在CPU 处理一个报文的同时继续接收其他到来的报文。(4) 接收滤波器:它把报文头中的标识符和接收滤波寄存器中的内容进行比较,以判断该报文是否被接收。如果被接收,报文存入RXFIFO。(5) 位流处理器 :它是一个控制发送缓冲器、RXFIFO(并行数据)和 CAN 总线(串行数据)之间数据的序列发生器,同时它也执行错误检测、仲裁、位填充和 CAN 总线错误处理功能。(6) 位定时逻辑 :它将 SJA1000 同步
24、于 CAN 总线上的位流。(7) 错误管理逻辑 :它按照 CAN 协议完成错误界定。下图是 SJA1000 与 CPU 的连接,其中 MODE 为模式选择位,MODE1 是 Intel 模式。 RX0、RX1 和 TX0、TXl 是接收和发送驱动器,可利用控制字设置成推拉式以增强驱动能力。SJA1000 内部设有地址和数据锁存器,所以只要将 CPU 的数据总线连接到 SJAl000 的数据地址总线而不必增加额外的地址和数据锁存器。(独立 CAN 器件 SJA1000 的应用)图 8 SJA1000 与 CPU 的连接SJA1000 采用地址 /数据总线多路复用技术,由读信号控制。并且可以作为时
25、钟源向外部输出时钟信号,输出的时钟频率可以由用户编程确定,这样就可以为主控制器节省一个晶振。X 大学毕业设计 10SJAl000 具有两种不同的工作模式,BasicCAN 工作模式和 PeliCAN工作模式,模式的选择位在 SJA1000 内部的时钟分频寄存器中。BasicCAN 模式与 82C200 控制器完全兼容,并且在速度和性能方面都作了改善,位速率高达 1Mbps,覆盖了包括高速应用的所有频率范围。在PeliCAN 模式中支持一些系统诊断、系统维护、系统优化等增强的功能,并提供了灵活有效的滤波方式。BasicCAN 支持标准的 CAN 帧结构,PeliCAN 支持 CAN2.0B 的扩
26、展报文格式。复位后的缺省工作模式是BasicCAN。上述两种工作模式其内部存储器的配置有所不同。在BasicCAN 模式下,SJAl000 的有效寻址范围为 031,即为 32 个有效的寄存器空间,其中:控制段寄存器有 10 个,包括 control、command 等寄存器;而在 PeliCAN 模式下,则可寻址的有效空间为 0111,其中有用的寄存器为 110 个,与 BasicCAN 相比,PeliCAN 新增加了ALC、ECC 、 EWL、REC 、TEC 等 CAN 总线的功能寄存器。在基本型 CAN 方式下,SJAl000 的地址区由控制区段和报文缓存区段组成。在初始化下载期间,控
27、制段被编程以便配置通信参数(例如位定时),在 CAN 总线上的通信也通过此段由微控制器进行控制。初始化期间,CLKOUT 信号也被编程以便由微控制器确定其数值。一个被发送的报文必须被写入发送缓存器,成功接收后微控制器可由接收缓存器读出所接收报文,然后释放它,以便进一步使用。在增强型 CAN 方式下,CAN 控制器的内部寄存器以 CPU 在片存储器映象外设寄存器出现,由于 CAN 控制器可以运行复位两种方式出现,必须进行不同内部地址定义之间的识别。从 CAN 地址 32 开始,完整的内部 RAM(80 字节)被映象至 CPU 接口。(I)BasicCAN 模式功能: 多主结构; 可连接各种类型微处理器接口; 总线访问优先权(取决于报文标识符); 2032 种报文标识符; 对于高优先权报文确保等待时间; 强有力的错误处理能力; 数据长度为 08 个字节; 可组态的总线接口; 可编程的时钟输出; 成组和广播报文功能; 无损结构的这位仲裁; 带有位填充功能的非归零编码解码; 传送速率可编程;