1、MCP25l0 的应用CAN(Controller Area Network)总线,即控制器局域网。由于具有高性能、高可靠性以及独特的设计,CAN 总线越来越受到人们的重视。德国的 Bosch 公司最初为汽车监控和控制系统设计了 CAN 总线,现在,其应用已面向过程工业、机械工业、纺织工业、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN 总线已经形成国际标准,并已经公认为是最有前途的现场总线之一。CAN 总线规范已经被国际标准化组织制订为国际标准 ISO11898,并得到众多半导体器件厂商的支持,推出各种集成有 CAN协议的产品。CAN 总线系统智能节点是网络上报文的接收和发送
2、站,一般由单片机和CAN 控制器或二者合二为一组成。MCP25l0 是 Microchip 公司生产的一种独立的可编程 CAN 控制器芯片。本文将介绍新型的独立 CAN 通信控制器 MCP2510,并给出其在 CAN 总线系统智能节点中的应用实例。1 MCP2510 芯片介绍MCP25lO 是一种带有 SPI 接口的 CAN 控制器,DIP 封装如图 1 所示。它支持CAN 技术规范 V2.OAB, 能够发送或接收标准的和扩展的信息帧,同时具有接收滤波和信息管理的功能。MCP2510 通过 SI 接口与 MCU 进行数据传输,最高数据传输速率可达 5 Mbps,MCU 可通过 MCP2510
3、与 CAN 总线上的其他 MCU 单元通信。MCP2510 内含 3 个发送缓冲器和 2 个接收缓冲器,同时还具有灵活的中断管理能力,这些特点使得 MCU 对 CAN 总线的操作变得非常简便。1.1 MCP2510 的主要特点 支持 CANV2.0AB; 具有 SPI 接口,支持 SPI 模式 0,0 和 1,1; 内含 3 个发送缓冲器和 2 个接收缓冲器,可对其优先权进行编程; 具有 6 个接收过滤器 ,2 个接收过滤器屏蔽; 具有灵活的中断管理能力; 采用低功耗 CMOS 工艺技术,其工作电压范围为 3.05.5 V,有效电流为 5 mA,维持电流为 10A; 工作温度范围为-40十 1
4、25。1.2 结构及工作原理MCP2510 有 PDIP、SOIC 和 TSSOP 三种封装形式。图 2 是 MCP2510 的内部结构框图。CAN 协议机负责与 CAN 总线的接口,SPI 接口逻辑用于实现同 MCU 的通信, 而寄存、缓冲器组与控制逻辑则用来完成各种方式的设定和操作控制。现结合其工作过程将各部分的功能、原理作一介绍。(1) 收发操作MCP251O 的发送操作通过 3 个发送缓冲器来实现。这 3 个发送缓冲器各占据14 字节的 SRAM。第 1 字节是控制寄存器 TXBNCTRL,该寄存器用来设定信息发送的条件, 且给出了信息的发送状态;第 26 字节用来存放标准的和扩展的标
5、识符以及仲裁信息; 最后 8 字节则用来存放待发送的数据信息。在进行发送前,必须先对这些寄存器进行初始化。(2) 中断管理MCP25lO 有 8 个中断源,包括发送中断、接收中断、错误中断及总线唤醒中断等。利用中断使能寄存器(CANINTE)和中断屏蔽寄存器(CANINTF)可以方便地实现对各种中断的有效管理。当有中断发生时,INT 引脚变为低电平并保持在低电平,直到MCU 清除中断为止。(3) 错误检测CAN 协议具有 CRCF 错误、应答错误、形式错误、位错误和填充错误等检测功能。MCP2510 内含接收出错计数器 (REC)和发送出错计数器(TEC)两个错误计数器。因而对网络中的任何一个
6、节点来说,都有可能因为错误汁数器的数值不同而使其处于错误一激活、错误一认可和总线-脱离 3 种状态之一。2 MCP2510 在智能节点中的应用实例利用 MCP2510 和 CAN 总线收发器 TJA1050 可构成一个 CAN 总线分布式测控网络。系统可包括一个主控制器和多个节点控制器,这种节点控制器可对电动机的电流、电压及周围的温度进行监控,其结构如图 3 所示。这种网络拓扑结构采用了总线式结构和无源抽头连接,且结构简单、成本低,因而系统的可靠性较高。其信息传输采用 CAN 通信协议,通信介质采用双绞线。由于CAN 总线是基于发送报文的编码,不对 CAN 控制节点进行编码 ,故系统的可扩充性
7、比较好,同时增删 CAN 总线上的控制节点不会对系统的其余节点造成任何影响。节点控制器的 MCU 可选用具有 SPI 接口的微处理器,也可采用不带 SPI 接口的微处理器。本系统采用的是不带 SPI 接口的微处理器 AT89C51。AT89C51 可通过P1 口与 CAN 控制器的 SPI 接口直接相连,并用软件算法来实现 SPI 接口协议。CAN总线收发器 TJA1050 则作为 MCP25l0 与物理总线的接口。如果需要进一步提高系统的抗干扰能力,则可在 MCP2510 和 TJAl050 之间再加一个光电隔离器。智能节点电路原理图如图 4 所示。2.1 软件设计MCP2510 正常工作之
8、前,需要进行正确的初始化,包括设置 SPI 接口的数据传输速率、CAN 通信的波特率、 MCP2510 的接收过滤器和屏蔽器以及发送和接收中断允许标志位等。与 SJA1000 不同的是 ,单片机对 MCP2510 的接收缓冲器和发送缓冲器的操作,必须通过 SPI 接口用 MCP2510 内置读写命令来完成。其读、写命令时序图如图 5 和图 6 所示。本文中 MCP2510 主要采取中断模式进行总线数据的接收和发送。整个系统主序提供两种中断:定时器中断和外部中断。定时器中断的中断子程序主要负责处理来自模拟通道 AIN0AIN7 的 AD 数据,向 MCP2510 发送 “数据发送请求命令”以及发
9、送数据。外部中断的中断处理子程序主要包括 CAN 总线错误处理子程序和数据接收子程序。2.2 软件主体设计流程软件主体设计流程如图 7 所示。软件设计时需要注意以下问题: 因为 MCP2510 在初始化完成后处于默认 Config-uration 模式下,所以就需要在 MCP2510 的初始化完后将其置为 Normal 模式,否则 MCP2510 将一直停留在Configuration 模式下,不能正常进行工作。将 MCP2510 置 Normal 模式可通过使用MCP2510 内置的 BitModify(位修改)4 指令向 CANCTRL 控制字写入一个 0 字节来实现。 在对 MCP251
10、0 进行任何操作之前,都要由微处理器向 MCP2510 的片选 CS输出一个低电平,使得 MCP2510 选通。 在执行 MCP2510 的“读”操作时,发送完读指令及其地址码之后,仍然需要向MCP2510 提供时钟,以接收 “读” 到的数据。可以通过向 MCP2510 发送一个 0 字节来实现。 在对 MCP2510 完成任意操作后,都要延时一段时间,使其有足够的时间来准备接收下次操作的命令,防止出现 MCP2510“忙”的情况。3 总 结CAN 总线已被公认为是最有前途的几种现场总线之一。因其性价比高、实现简单等突出优点深受越来越多的研发人员的青睐。本文的智能节点可联结多个集散控制系统, 其软硬件电路的设计方法同样适合于其他基于 CAN 总线的分布式控制系统的节点设汁。