带有SPI接口的独立CAN控制器MCP2515

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

CAN现场总线系统的设计与应用第5章带有SPI接口的独立CAN控制器MCP2515MCP2515简介MCP2515是Microchip生产的一款独立CAN控制器,完全支持CANV2.0B技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。MCP2515自带的两个验收屏蔽寄存器和六个验收滤波寄存器,减少了单片机的开销。MCP2515通过SPI总线与单片机的的连接。本章主要介绍MCP2515独立CAN控制器的外围引脚,内部寄存器和相关的SPI指令,并介绍基于PIC16F877A单片机和MCP2515独立CAN控制器的CAN节点的开发和MCP2515的初始化、发送、接收程序的编写CAN独立控制器MCP2515特性完全支持CAN总线V2.0A和V2.0B技术规范0~8字节报文长度;标准和扩展数据帧;可编程位传输速率可达lMbps;支持远程帧:两个接收缓冲器,可优先储存报文;6个完全验收滤波器;2个完全验收屏蔽滤波器;3个发送缓冲器,具有优先级设定以及发送中止功能用于自检的环回模式。CAN独立控制器MCP2515特性硬件特性高速SPl接口;支持0.0和I.1SPI模式;带有可编程预分频器的时钟输出引脚;带有可选择使能设定的,中断输出引脚:“缓冲器满”输出引脚可配置为各接收缓冲器的中断引脚或通用数宁输出引脚。“请求发送”输入引脚可配置为发送缓冲器的控制引脚,用以请求立即发送报文或配置为通用数字输出引脚;.低功耗休眠工作模式。MCP2515控制器概述MCP2515控制器概述CAN模块的功能是处理所有CAN总线上的报文接收和发送。控制逻辑通过与其它模块连接,控制逻辑模块控制MCP2515的设置和运行,以便传输信息与控制。单片机通过SPI接口与MCP2515连接。使用标准的SPI读/写指令以及专门的SPI命令来读/写所有的寄存器和完成相应的控制操作。MCP2515引脚介绍MCP2515引脚介绍MCP2515引脚介绍发送/接收缓冲器MCP2510具有3个发送缓冲器和2个接收缓冲器,2个验收屏蔽寄存器(分别对应不同的接收缓冲器),以及6个验收过滤寄存器。CAN报文帧标准数据帧CAN报文帧扩展数据帧仲裁字段的前11位为29位标识符的最有效位(基本ID)。紧随这11位的是替换远程请求(SRR)位,定义为隐性状态。SRR位之后是IDE位,该位隐性时表示这是扩展的CAN帧。CAN报文帧远程帧错误帧主动错误帧消极错误帧过载帧与主动错误帧格式一样,但是其只出现在数据帧、远程帧之间。帧空间寄存器映射表CANCTRL控制寄存器REQOP2:0:请求工作模式的位000=设定为正常工作模式001=设定为休眠模式010=设定为环回模式011=设定为仅监听模式100=设定为配置模式REQOP位不应设置为其他值,因为这些值都是无效的。注:上电时,REQOP=b’111’CANCTRL控制寄存器ABAT:中止所有当前报文发送的位1=请求中止所有当前报文发送的缓冲器0=终止对所有报文发送中止的请求OSM:单触发模式位1=使能。报文仅尝试发送一次0=禁止。如有需要,报文会重新发送。CLKEN:CLKOUT引脚使能位1=CLKOUT引脚使能0=CLKOUT引脚禁止(引脚处于高阻态)CLKPRE1:0:CLKOUT引脚预分频比位00=FCLKOUT=系统时钟频率/101=FCLKOUT=系统时钟频率/210=FCLKOUT=系统时钟频率/411=FCLKOUT=系统时钟频率/8CANSTAT状态寄存器OPMOD:工作模式位2:0000=器件处于正常工作模式001=器件处于休眠模式010=器件处于环回模式011=器件处于仅监听模式100=器件处于配置模式CANSTAT状态寄存器ICOD:中断标志代码位2:0000=无中断001=出错中断010=唤醒中断011=TXB0中断100=TXB1中断101=TXB2中断110=RXB0中断111=RXB1中断工作模式配置模式复位后进入配置模式,所有错误计数器被清零正常模式睡眠模式SPI口仍工作,允许访问任何寄存器;唤醒后处于监听模式监听模式错误计数器被复位并设置为无效环回模式自收发,多用于调试配置模式MCP2515在正常运行之前必须进行初始化。只有在配置模式下,才能对器件进行初始化。在上电或复位时器件会自动进入配置模式,或通过CANTRL.REQOP位设置成“100”也可使器件从任何模式进入配置模式。当进入配置模式时,所有错误计数器都被清零。只有在配置模式下,才能对以下寄存器进行修改CNF1、CNF2和CNF3TXRTSCTRL验收过滤寄存器验收屏蔽寄存器休眠模式MCP2515具有内部休眠模式,使器件功耗最少。即使MCP2515处于休眠模式,SPI接口仍然保持正常的读操作,以允许访问器件内的所有寄存器。当处于内部休眠模式时,唤醒中断仍然工作(如果被使能)。因此,可将MCU置于休眠模式,在检测到总线上有活动时,就唤醒MCP2515。处于休眠模式时,MCP2515内部振荡器停止工作。当总线发生活动或MCU通过SPI接口将CANINTF.WAKIF位置1来“产生”唤醒尝试(CANINTE.WAKIE位也必须置1以便产生唤醒中断)时,将唤醒MCP2515。当MCP2515处于休眠模式时,TXCAN引脚保持隐性状态。复位MCP2515有两种复位方式:硬件复位——RESET引脚为低电平。SPI复位——通过SPI命令复位。振荡器错误检测当产生CRC错误,确认(应答)错误,格式错误和填充错误时,除了改变错误寄存器的值以外,报文将重新发送。在总裁阶段不进行位错误检修。当发现位错误时,将根据节点的状态产生相应的错误帧,主动错误帧将破坏数据帧和远程帧的发送。节点错误状态主动错误。被动错误。总线关闭(仅发送器)错误相关寄存器TEC——发送错误计数器REC——接收错误计数器EFLG——错误标志寄存器EFLG寄存器RX1OVR:接收缓冲器1溢出标志位RX0OVR:接收缓冲器0溢出标志位TXBO:总线关闭错误标志位当TEC达到255时,该位置1;-当成功接收到总线恢复序列时复位TXEP:发送被动错误标志位RXEP:接收被动错误标志位TXWAR:发送错误警告标志位RXWAR:接收错误警告标志位bit0EWARN:错误警告标志位当TEC或REC大于等于96时(TXWAR或RXWAR=1)时,该位置1当TEC和REC同时小于96时复位中断MCP2515有八个中断源。CANINTE寄存器包含了使能各中断源的中断使能位。CANINTF寄存器包含了各中断源的中断标志位。当发生中断时,INT引脚将被MCP2515拉为低电平,并保持低电平状态直至MCU清除中断。中断只有在引起相应中断的条件消失后,才会被清除。建议在对CANINTF寄存器中的标志位进行复位操作时,采用位修改命令而不要使用一般的写操。这是为了避免在写命令执行过程中无意间修改了标志位,进而导致中断丢失。CANSTAT.ICOD(中断代码)位的编码反映等待处理的中断源。如果同时发生多个中断,INT引脚将保持低电平状态直至MCU复位所有中断。CANINTF——中断标志寄存器1=有等待处理的中断(必须由MCU清零才可使中断复位)0=无等待处理的中断MERRF:报文错误中断标志位WAKIF:唤醒中断标志位ERRIF:错误中断标志位(EFLG寄存器中有多个中断源)TX2IF:发送缓冲器2空中断标志位TX1IF:发送缓冲器1空中断标志位TX0IF:发送缓冲器0空中断标志位RX1IF:接收缓冲器1满中断标志位RX0IF:接收缓冲器0满中断标志位CANINTE——中断使能寄存器1=报文接收或发送期间发生错误时中断0=禁止MERRE:报文错误中断使能位bit6WAKIE:唤醒中断使能位ERRIE:错误中断使能位(EFLG寄存器中有多个中断源)TX2IE:发送缓冲器2空中断使能位TX1IE:发送缓冲器1空中断使能位TX0IE:发送缓冲器0空中断使能位RX1IE:接收缓冲器1满中断使能位RX0IE:接收缓冲器0满中断使能位位定时位定时位定时CONF1CONF2CONF3报文接收报文接收报文接收缓冲MCP2515具有两个全接收缓冲器。每个接收缓冲器配备有多个验收滤波器。除上述专用接收缓冲器外,MCP2515还具有单独的报文集成缓冲器(MAB),可作为第三个接收缓冲器。MAB对接收到的报文进行组合,并将满足验收滤波器条件的报文传送至RXBn缓冲器。接收优先级RXB0是具有较高优先级的缓冲器。接收到的报文首先在RXB0中进行屏蔽滤波。RXB1是优先级较低的缓冲器。报文除了首先在RB0中进行屏蔽滤波外,由于RB0的验收滤波寄存器数量较少,因此RB0接受匹配条件更为严格,表明RB0具有较高的优先级。报文接收滚存对RXB0CTRL寄存器进行配置,如果RXB0已包含一条有效报文并且接收到另一条有效报文,不会发生溢出错误,新的报文会滚存到RXB1而不管RXB1是何种验收标准。接收标志/中断当报文传送至某一接收缓冲器时,与该接收缓冲器对应的CANINTF.RXnIF位将置1。一旦缓冲器中的报文处理完毕,MCU就必须将该位清零以接收下一条报文。该控制位提供的锁定功能确保MCU尚未处理完上一条报文前,MCP2515不会将新的报文载入接收缓冲器。报文接收报文接收起始帧信号使能之后,一旦RXCAN引脚检测到任一CAN报文开始,起始帧信号便会在SOF引脚上产生。RXCAN引脚监控空闲总线上出现的从隐性位到显性位的变化边沿。如果显性条件始终保持直至采样点发生,MCP2515视之为SOF信号并产生一个SOF脉冲。如果显性条件没有保持到采样点便发生,MCP2515视之为总线干扰,不产生SOF信号。对于单触发工作模式,SOF信号的一个用途是用于TTCAN(是CAN总线的一种高层协议,其通信是基于时间触发的,适用于安全相关的场合)系统。另外,通过监控RXCAN引脚和SOF引脚,MCU能够检测到总线上出现的小干扰,从而在它们影响CAN通讯之前发现早期总线物理故障。报文接收多滤波器匹配如果接收报文符合一个以上滤波寄存器的接受条件,FILHIT位中的二进制代码将反映其中编号最小的滤波寄存器。例如,如果滤波器RXF2和RXF4同时与接收报文匹配,FILHIT中将装载RXF2编码值。编号较小的验收滤波寄存器有较高的优先级。接收报文将按照编号升序依次与滤波寄存器进行匹配比较。这意味着RXB0的优先级比RXB1高。报文接收报文发送发送缓冲器MCP2515采用三个发送缓冲器。发送优先级具有较高优先级的发送缓冲器将首先发送。如果两个缓冲器的优先级相同,则编号较高的发送缓冲器将优先发送。TXnRTS引脚TXnRTS为输入引脚,可配置为:请求发送输入引脚,作为启动任一发送缓冲器中报文发送的备用方法标准数字输入引脚报文发送发送启动通过将TXBnCTRL.TXREQ位置1,可以启动相应缓冲器的报文发送。它可以按如下方式设定:*利用SPI写命令写寄存器*发送SPIRTS命令*将要发送报文的发送缓冲器的TXnRTS引脚置为低电平通过SPI接口启动报文发送后,可以同时将TXREQ位和TXP优先级控制位置1。当TXBnCTRL.TXREQ位置1后,TXBnCTRL.ABTF、TXBnCTRL.MLOA和TXBnCTRL.TXERR位都将被自动清零。报文发送发送中止清除与特定发送缓冲器对应的TXBnCTRL.TXREQ位来中止某条报文的发送。也可通过设置CANCTRL.ABAT位以中止所有等待发送的报文。如果CANCTRL.ABAT位被置位则所有报文中止发送。若用户要继续报文发送,则必须对该位进行复位。只有通过设定CANCTRL.ABAT位中止报文发送时,TXBnCTRL.ABTF标志才将被置位。通过复位TXBnCTRL.TXREQ来中止报文发送

1 / 62
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功