欢迎来到天天文库
浏览记录
ID:38231933
大小:143.05 KB
页数:4页
时间:2019-05-25
《基于MCP2515的SPI接口CAN总线控制器的软件设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于MCP2515的SPI接口CAN总线控制器的软件设计翟淳天津市驰生电气有限公司天津市南开区科研西路12号邮编300191摘要:CAN总线是德国bosch公司在1986年面向汽车各子系统间通信而开发出的通信协议。由于它的高性能和可靠性已被广泛地应用于工业自动化、安防、船舶、医疗设备、工业设备等其他领域,并已成为现场总线技术的发展热点之一。目前工业设计中较多使用并口can总线控制器,并口can总线芯片占用了MCU较多的普通IO口资源。而目前MCU中大都包含着SPI接口模块,如能通过SPI接口对can总线控制器进行设置
2、和收发,将使MCU的IO接口得到了高效的使用。本论文将就使用MCU的SPI接口的can总线控制器的软件设计进行分析。关键词:MCP2515MCUCAN总线控制器SPI接口一、总线系统结构:CAN总线属于目前众多现场总线的一种,是一种集散型多主方式控制的串行通信网络。网络中各节点根据各自的总线访问优先权(即标准或扩展报文标识符),采用仲裁方式竞向总线发送数据。CAN总线通过CAN控制器的两个输出端CANH和CANL与物理总线连接,特点:1、CANH端是高电平或悬浮状态;2、CANL端是低电平或悬浮状态;其结构特性使总线
3、避免了当系统出现错误,多节点同时发送数据造成的总线短路。另外,CAN总线节点在错误情况下具有自锁功能,可有效避免总线瘫痪。由于采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠。它所具有的卓越性能和独特设计,特别适合工业设备测控单元互连,公认为最有前途的现场总线之一。二、串、并口CAN总线控制器概述1、并口CAN总线控制器特点一般并口CAN总线控制器芯片为SJA1000或82C200,并口的优点是数据读写速度快,但占用I/O口较多,硬件较复杂。在与MCU的接线中,最少使用13个IO口。2、SPI接口的CA
4、N总线控制器特点SPI接口是标准串行外设接口(SerialPeripheralInterface,SPI),是芯片间通信总线。常见SPI接口can总线节点控制器microchip公司的MCP2510和MCP2515。其中,MCP2515完全支持CANV2.0B技术规范,它不仅能发送和接收标准和扩展数据帧以及远程帧。还自带两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的报文。MCP2515与MCU的连接是通过SPI接口来实现的,接线使用了4个IO接口,因此减少了MCU的硬件开销,但提高了软件设计难度。三、CAN
5、总线控制器MCP2515的软件设计以microchip的MCU芯片编写软件,分为四部分:SPI接口读写、CAN节点初始化、报文发送和报文接收。1、MCP2515的SPI接口读写SPI是标准四线同步的高速双向串行总线。由时钟线SCK、数据输入SDI、数据输出SDO、片选CS组成。通讯原理是:由SCK提供时钟脉冲,SDI,SDO则基于此脉冲一位一位的串行完成数据传输。其中,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。对于microchip的中档MCU,芯片内部包含了SPI模块,所以软件设计时不用再考虑
6、传输原理,使SPI的编程变得非常简单。voidsend_SPI(unsignedchardata1)/*写SPI函数*/{SSPBUF=data1;//启动发送while(SSPIF==0);//等待发送完毕SSPIF=0;}//清除SSPIF标志---------------------unsignedcharreceive_SPI(void)/*读SPI函数*/{unsignedchardata2;SSPBUF=0;//清除SPI缓存while(SSPIF==0);//查询数据接收完毕否SSPIF=0;data2
7、=SSPBUF;return(data2);}2、对于MCP2515的CAN初始化:MCP2515在正常运行之前必须进行初始化。MCP2515有配置模式、正常模式、休眠模式、监听模式、环回模式五种工作模式,通过CANCTRL.REQOP位的设置才能进入相应工作模式。CAN的初始化只有在配置模式下才能进行。配置模式下,可以对CNF1、CNF2和CNF3波特率设置寄存器以及TXRTSCTRL发送控制寄存器和验收过滤寄存器进行修改。初始化设置的次序:a.设置CANCTRL,进入CAN配置模式;读CANSTAT状态,判断是否
8、进入配置状态。b.设置CAN总线的波特率---CNF1/CNF2/CNF3;c.设置TXRTSCTRL(发送请求控制寄存器),确定TX0RTS~TX2RTS引脚的适用状态;d.设置TXBnCTRL(发送邮箱控制寄存器),确定邮箱0、邮箱1、邮箱2的优先级,以及ABTF位/MLOA位/TXERR位/TXREQ位清零报文写入邮箱之前,清零TXBnC
此文档下载收益归作者所有