CAN现场总线系统的设计与应用第5章带有SPI接口的独立CAN控制器MCP25105.1器件功能简介5.1.1CAN独立控制器MCP2510特性完全支持CAN总线V2.0A和V2.0B技术规范0~8字节报文长度;标准和扩展数据帧;可编程位传输速率可达lMbps;支持远程帧:两个接收缓冲器,可优先储存报文;6个完全验收滤波器;2个完全验收屏蔽滤波器;3个发送缓冲器,具有优先级设定以及发送中止功能用于自检的环回模式。5.1.1CAN独立控制器MCP2510特性硬件特性高速SPl接口;支持0.0和I.1SPI模式;带有可编程预分频器的时钟输出引脚;带有可选择使能设定的,中断输出引脚:“缓冲器满”输出引脚可配置为各接收缓冲器的中断引脚或通用数宁输出引脚。“请求发送”输入引脚可配置为发送缓冲器的控制引脚,用以请求立即发送报文或配置为通用数字输出引脚;.低功耗休眠工作模式。5.1.2MCP2510控制器概述CAN协议引擎。用来为器件及其运行进行配置的控制逻辑和SRAM寄存器。SPI协议模块。5.1.3发送/接收缓冲器MCP2510具有3个发送缓冲器和2个接收缓冲器,2个验收屏蔽寄存器(分别对应不同的接收缓冲器),以及6个验收过滤寄存器。5.1.4CAN协议引擎5.2CAN报文帧标准数据帧5.2CAN报文帧扩展数据帧仲裁字段的前11位为29位标识符的最有效位(基本圆)。紧随这11位的是替换远程请求(SRR)位,定义为隐性状态。SRR位之后是IDE位,该位隐性时表示这是扩展的CAN帧。5.2CAN报文帧远程帧错误帧主动错误帧消极错误帧过载帧与主动错误帧格式一样,但是其只出现在数据帧、远程帧之间。帧空间5.11SPI接口SPI指令集5.11SPI接口读指令在读操作开始时,CS引脚将被置为低电平。随后读指令和8仪地址码(A7~A0)将被依次送入MCP2510在接收到读指令和地址码之后,McP2510指定地址寄存器中的数据将被移出通过SO引脚进行发送。每一数据字节移出后,器件内部的地址指针将自动加一以指向下一地址。因此可以对下一个连续地址寄存器进行读操作。5.11SPI接口写指令置CS引脚为低电平出动写操作。启动与指令后,地址码及至少一个字节的数据被依次发送到MCR510。只要CS保持低电平,就可以对连续地址寄存器进行顺序写操作。5.11SPI接口请求发送指令5.11SPI接口状态读指令5.11SPI接口位修改指令位修改命令提供了一种对特定控制和状态寄存器中单独的位进行设定和清除的方法。该命令并非对所有寄存器都有效。屏蔽字节决定寄存器中的哪一位将被修改。数据字节确定寄存器位修改后的最终结果。5.11SPI接口复位指令5.10寄存器映射表5.9工作模式配置模式复位后进入配置模式,所有错误计数器被清零正常模式睡眠模式SPI口仍工作,允许访问任何寄存器;唤醒后处于监听模式监听模式错误计数器被复位并设置为无效环回模式5.6错误检测CRC错误应答错误格式错误位错误位填充错误错误状态主动错误消极错误总线关闭错误模式和错误计数器5.7中断器件具有8个中断源。CANINTE寄存器中包含了使能各个中断源的中断使能控制位。CANINTF寄存器中包含了各个中断源的中断标志位。当有中断请求发生,INT引脚将置为低电平,并维持低电平状态直至MCU清除中断标志。中断标志只有在引起相应中断请求条件消失后,才能被清除。5.5位定时时间份额对时间段编程1)传播段+相位缓冲断1≥相位缓冲断2。2)传播段+相位缓冲断l≥TDELAY。3)相位缓冲断2同步跳转宽度。5.4报文接收只要报文的识别符与任何一个验收滤波器相匹配,该报文就会被接收。1、报文接收缓冲器2、接收优先级3、RX0BF和RX1BF引脚当设定为中断工作模式(设定BFPCTRL.RxBFE和BFPCTRL.RxBFM位为1),这些引脚为低低平有效并且被映射到相应接收缓冲器的CANINTF.RXNlF位。当其中—个接收缓冲器的CANINTF.RXNlF变为高电平.表明有效报文已被载入接收缓冲器,相应的RXnBF引脚将变为低电平,如果CANINTF.RXNlF位被MCU消“0”,相应的中断引脚将进入逻辑尚电平状态,直到下一条报义载入接收缓冲器。5.4报文接收4、报文验收滤波器及屏蔽寄存器一旦MAB接收到有效报文,报文中的标识符字段将与过滤寄存器中的值进行比较。如果两者匹配,该报文将被载入相应的接收缓冲器。滤波屏蔽寄存器用来确定滤波器对标识符中的哪些位进行校验。屏蔽寄存器主要确定对标识符中的哪一体进行滤波。如果某屏蔽位设置为“0”,则对应的标识符位将被自动接收而不被滤波。5.3报文发送1、发送缓冲器2、发送优先级具有较高优先级的发送缓冲器将首先发送。如果两个缓冲器的优先级相同,则编号较高的发送缓冲器将优先发送。3、发送启动4、TXnRTS引脚5、发送中止清除与特定发送缓冲器对应的TXBnCTRL.TXREQ位来中止某条报文的发送。也可通过设置CANCTRL.ABAT位以中止所有等待发送的报文。如果CANCTRL.ABAT位被置位则所有报文中止发送。若用户要继续报文发送,则必须对该位进行复位。只有通过设定CANCTRL.ABAT位中止报文发送时,TXBnCTRL.ABTF标志才将被置位。通过复位TXBnCTRL.TXREQ来中止报文发送,将不会使ABAT位置位。只有尚未开始发送的报文可被中止。SPI多余命令读RX缓冲器命令10010nm0nm地址指针指向地址00接收缓冲器0,开始于RXB0SIDH0x6101接收缓冲器0,开始于RXB0D00x6610接收缓冲器1,开始于RXB1SIDH0x7111接收缓冲器1,开始于RXB1D00x76SPI多余命令装载TX缓冲器命令01000abcabc地址指针指向地址000TX缓冲器0,开始于TXB0SIDH0x31001TX缓冲器0,开始于TXB0D00x36010TX缓冲器1,开始于TXB1SIDH0x41011TX缓冲器1,开始于TXB1D00x46100TX缓冲器2,开始于TXB2SIDH0x51101TX缓冲器2,开始于TXB2D00x56SPI多余命令RX状态指令1011000076接收到的报文00没有RX报文01RXB0中的报文10RXB1中的报文11两个缓冲器中报文43接收到的报文类型00标准数据帧01标准远程帧10扩展数据帧11扩展远程帧210滤波器匹配000RXF0001RXF1010RXF2011RXF3100RXF4101RXF5110RXF0(滚存到RXB1)111RXF1(滚存到RXB1)