APP下载

基于MCP2515的CAN总线扩展

2012-01-19吕宝锋

电子科技 2012年6期
关键词:缓冲器子程序寄存器

吕宝锋

(陕西凌云电器集团有限公司设计所,陕西宝鸡 721006)

基于MCP2515的CAN总线扩展

吕宝锋

(陕西凌云电器集团有限公司设计所,陕西宝鸡 721006)

随着数字信号处理器TMS320F2812的广泛应用,扩展TMS320F2812的CAN总线接口成为一种趋势。针对本公司某测试设备的整体设计要求,利用具有SPI接口的独立CAN控制器MCP2515通过TMS320F2812的SPI接口,实现TMS320F2812的CAN总线扩展,满足了该测试设备的控制精度、处理速度以及对外双冗余CAN总线接口的设计要求,具有较强的工程实用价值。

MCP2515;CAN总线;SPI总线;TMS320F2812

CAN(Controller Area Network)即控制器局域网络总线,是德国Bosch公司在1986年面向汽车各子系统间通信而开发出的通信协议[1],被认为是目前最有前途的现场总线之一,广泛应用于工业自动化监控网络中,具有高质量、低成本、易实现、安全性高的特点。TMS320F2812数字信号处理器是TI(Texas Instruments)美国德州仪器公司最新推出的32位定点DSP控制器,是目前控制领域最先进的处理器之一,其频率高达150 MHz,提高了控制系统的精度和芯片的处理能力[2]。TMS320F2812本身集成了一路CAN总线接口,仅依靠TMS320F2812不能满足本测试设备对双冗余的CAN总线设计要求[3]。文中采用TMS320F2812作为测试设备的主控制器。虽然TMS320F2812本身只带一路CAN总线,但同时又自带一路SPI(Serial Peripheral Interface)即串行外围设备接口总线,而且MCP2515是一款具有SPI接口的独立CAN控制器,完全支持 CAN V2.0B技术规范[4]。因此采用 TMS320F2812通过MCP2515实现其CAN总线扩展,文中即给出该应用实例,包括硬件设计电路原理图,软件系统程序设计流程图和简单的子程序流程,并加以说明。

1 芯片介绍

Microchip推出的MCP2515是一款完全支持 CAN V2.0B技术规范、具有SPI接口的独立CAN控制器,内含2个接收缓冲器、3个发送缓冲器、6个29位验收滤波寄存器以及2个29位验收屏蔽寄存器。具有灵活的中断性能和接收过滤及信息管理能力,另外还有帧屏蔽和过滤、帧优先级设定等特性,能减少对MCU资源的占有。MCP2515的SPI接口时钟频率最高可达10 MHz,同时具备最高40 MHz的时钟输入速度,在实际应用中其通信速率最高可达1 Mbit·s-1,能够发送和接收标准/扩展数据帧以及远程帧。

MCP2515具有配置模式、正常模式等5种工作模式。利用CANCTRL.REQOP位可进行工作模式的选择,能够灵活应用于不同的系统,通过其监听模式还能在CAN网络中实现自动波特率检测。

MCP2515的内部结构框图如图1所示[4],共包括CAN模块、SPI模块以及其他模块共3部分。其中CAN模块完成CAN总线上所有报文的收发,SPI模块实现MCU和MCP2515间的SPI总线的数据通信,控制逻辑/寄存器实现对MCP2515的设置和控制,对外接口提供MCP2515的多个中断引脚,用户可根据需要自由选择,其内部结构框图如图1所示。

图1 MCP2515内部结构框图

2 系统硬件电路结构设计

该测试设备的硬件电路结构原理如图2所示,其虚线部分是对TMS320F2812进行CAN总线扩展的硬件原理。MCU是使用TI公司的TMS320F2812,通过其内部集成的SPI总线接口和MCP2515连接,CAN收发器采用TI公司的SN65HVD230Q,FPGA采用Xinlix公司的 XC2V1000_FG456,由其分别产生TMS320F2812和MCP2515所需的时钟、复位信号及一些离散控制信号。MCP2515的中断输出引脚直接接到TMS320F2812的外部中断输入引脚上。该硬件电路结构原理表示出简单的电气连接关系,在实际应用中,会根据实际应用条件的不同,进行相应的适应性改进。例如,如果TMS320F2812和MCP2515所使用的电源不同,就需要在TMS320F2812和MCP2515之间加电平转换芯片,以满足其不同的电源要求;并且还可在MCP2515和CAN收发器之间,增加光耦隔离器以增加系统的抗干扰能力,并能有效提高系统的可靠性。

TMS320F2812可通过SPI接口和MCP2515直接连接,MCP2515的 CLK和 TMS320F2812的 SPICLKA连接,为数据的发送和接收提供同步时钟信号。TMS320F2812的SPI接口有主和从两种操作模式,在该测试设备中其工作在主模式。

TMS320F2812和MCP2515之间以SCK作为同步时钟信号进行通信。在时钟上升沿,命令和数据通过SI引脚送入MCP2515,在时钟下降沿通过SO引脚把数据从MCP2515中读出。TMS320F2812通过SPI总线读取MCP2515接收缓冲器里的数据,MCP2515对CAN总线的数据发送则没有限制,只要用TMS320F2812通过 SPI接口将待发送的数据写入MCP2515的发送缓冲器,然后再调用发送请求命令即可将数据发送到CAN总线上。

图2 测试设备硬件电路结构原理

TMS320F2812通过标准SPI读写命令,对MCP2515寄存器进行读写操作,完成系统CAN总线的收发,最终实现系统CAN总线的通信。TMS320F2812和MCP2515的通信指令有复位指令、读指令、读RX缓冲器指令、写指令、装载TX缓冲器指令、请求发送(RTS)指令、读状态指令、RX状态指令和位修改指令等8条指令。

3 软件设计

设计中,采用外部中断方式实现CAN总线数据的接收,采用定时中断的方式实现CAN数据的发送。软件设计的难点在于MCP2515的初始化和CAN总线数据的收发程序。

3.1 MCP2515的初始化

MCP2515有用的寄存器有117个,其中包括17个控制寄存器,有配置模式、正常模式、休眠模式、监听模式和环回模式等5种工作模式。MCP2515的正常工作关键在于对其进行初始化处理,在初始化之前,首先必须通过TMS320F2812给MCP2515发送一个复位指令,使其进入配置模式,然后才能对其进行初始化。MCP2515的初始化还包括设置波特率寄存器、设置发送/接收控制寄存器、设置验收屏蔽/滤波寄存器等[5]。

3.2 MCP2515的数据接收

MCP2515的RXB0和RXB1两个全接收缓冲器均配备一个验收屏蔽寄存器和两个验收滤波寄存器。RXB0比RXB1具有更高的优先级。当系统有报文数据时,如果CANINTE.RXnIE的相应位被置1,MCP2515的INT管脚会产生一个中断信号,显示有报文收到,与其对应的接收缓冲器的CANINTF.RxnIF位将置位,接收缓冲器中的报文只要接收处理完毕,TMS320F2812就应当立即清零该位以准备接收下一条报文[5]。

3.3 MCP2515的数据发送

MCP2515的3个发送缓冲器均有一个TXBnCTRL寄存器控制报文的发送条件、对应的发送优先级以及报文发送时的状态。在写入发送缓冲器之前,必须将TXBnCTRL.TXREQ位清零,确保发送缓冲器中没有等待发送的报文。通过TXBnCTRL.TXREQ位置1,可以启动相应的发送缓冲器准备发送报文,一旦检测到总线空闲时,就会启动报文发送。报文发送成功TXBnCTRL.TXREQ位清零,CANINTF.TXnIF置位,如果同时CANINTE.TXnIE被置位,则会产生发送中断[5]。

4 软件流程

在软件系统中,主要分3个程序模块,分别是主程序、接收中断子程序和定时中断(发送)子程序。各个程序流程清晰明了,相互之间相对独立。其中主程序是在完成一些基本的系统设置和各种初始化后等待接收中断的到来,在接收中断到来后进行相应的数据接收处理,实现该测试设备对被测设备的CAN总线的接收处理。接收中断子程序具体完成该测试设备对被测设备的CAN总线的接收,并设置接收中断标志,定时中断(发送)子程序完成该测试设备对被测设备的定时CAN总线控制指令的下发。

图3~图5分别为主程序、接收中断子程序和定时中断(发送)子程序的流程图。

图3 主程序流程图

该测试设备所采用的软硬件原理,设计思想独特、结构原理简单、结果实用可靠。目前,该测试设备已完成了所有的设计工作,通过了各项验收试验,达到了预期设计要求。具体的仿真试验结果如下:(1)实现了双冗余的CAN总线设计,两路CAN总线收发正常,并能随时进行任意切换。(2)能满足测试设备对CAN总线控制精度和处理速度的要求。(3)能满足对被测设备的CAN总线控制及回传信息的接收处理。

5 结束语

文中论述了基于带有SPI总线接口的MCP2515接口,通过 TMS320F2812的 SPI总线接口实现对TMS320F2812进行CAN总线扩展的实际研究和设计,介绍了该测试设备的设计思路、MCP2515芯片特性以及TMS320F2812与MCP2515连接的硬件电路结构原理;分析了TMS320F2812的软件编程;给出了主程序流程和两个子程序处理流程。目前,按照上述软硬件原理设计的该测试设备已通过了各项检验验收,完能够满足实际应用要求,具有较强的工程实用价值。

[1]翟淳.基于MCP2515的SPI接口CAN总线控制器的软件设计[J].中国科技博览,2010,(15):86.

[2]苏奎峰.TMS320F2812原理与开发[M].北京:电子工业出版社,2005.

[3]高瑛.TMS320F28335与串行A/D转换器ADS7863的接口设计[J].现代电子技术,2011,13(34):98.

[4]Microchip Conpration.Stand - Alone CAN Controller With SPI Interface[M].USA:Microchip Conpration,2005.

[5]谭浩强.C语言程序设计[M].北京;清华大学出版社,2010.

[6]李玲娟,毕瑞英.网络环境中基于元数据节点的资源发现方法[J].西安邮电学院学报,2008(1):97-100.

[7]高士友,王代强,王义,等.基于CAN总线的轿车窗智能控制系统设计[J].电子设计工程,2009(3):49-52.

Expansion of CAN Bus Based on the Mcp2515

LüBaofeng
(Department of Design,Shaanxi Lingyun Electronics Group CO.,LTD.,Baoji 721006,China)

With the wide application of digital signal processor TMS320F2812,it has become a trend to expand the CAN bus interface of TMS320F2812.In order to meet the overall design requirements of a test equipment in Shaanxi Lingyun Electronics Group CO.,LTD.,we achieve the CAN bus expansion of the TMS320F2812 by using stand-alone CAN controller MCP2515 which has an SPI interface through the SPI interface of TMS320F2812 and meet the control accuracy and processing speed of the test equipment as well as the design requirement of the external double redundancy CAN bus interface.It is of great practical value.

MCP2515;CAN bus;SPI bus;TMS320F2812

TP342+.3

A

1007-7820(2012)06-044-04

2012-02-19

吕宝锋(1974—),男,工程师。研究方向:无线电导航与通讯。

猜你喜欢

缓冲器子程序寄存器
更正
STM32和51单片机寄存器映射原理异同分析
重载货车用缓冲器选型的研究及分析
Lite寄存器模型的设计与实现
起重机检验中缓冲器选型问题的分析和探讨
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
面向TIA和缓冲器应用的毫微微安偏置电流运放可实现500MHz增益带宽
简化编程与子程序嵌套的应用