采用TMS320F2812总线接口通过MCP2515实现CAN总线扩展设计

接口/总线/驱动

1116人已加入

描述

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

1 芯片介绍

Microchip推出的MCP2515是一款完全支持CANV2.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所示,共包括CAN模块、SPI模块以及其他模块共3部分。其中CAN模块完成CAN总线上所有报文的收发,SPI模块实现MCU和MCP2515间的SPI总线的数据通信,控制逻辑/寄存器实现对MCP2515的设置和控制,对外接口提供MCP2515的多个中断引脚,用户可根据需要自由选择,其内部结构框图如图1所示。

CAN

2 系统硬件电路结构设计

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

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总线上。

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

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分