1 简介:
MCP2515 是一款独立控制器局域网络(Controller Area Network, CAN)协议控制器,完全支持 CAN V2.0B 技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。MCP2515 自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的报文,因此减少了主单片机(MCU)的开销。MCP2515与MCU 的连接是通过业界标准串行外设接口(SearialPeripheral Interface,SPI)来实现的。
2 数据发送:
>>器件有三个引脚----TX0RTS/TX1RTS/TX2RTS用来启动将装载在三个发送缓冲器之一中的报文立即发送出去。是否使用这些引脚由用户决定;若不使用,也可利用控制寄存器(通过SPI接口访问)来启动报文发送---------三个RTS引脚可以不用。
>>报文发送时,首先将报文装载到正确的报文缓冲器和控制寄存器中。通过SPI接口设置控制寄存器中的相应位或使用发送使能引脚均可启动发送操作------常用SPI启动发送。
---正常情况下,如果 CAN 报文仲裁失败或被错误帧损坏,报文会尝试再次发送。
3 数据接收:
>>器件上有一个多用途中断引脚及各接收缓冲器的专用中断引脚,用于指示有效报文是否被接收并载入接收缓冲器。可选择使用专用中断引脚。通用中断引脚和状态寄存器(通过SPI接口访问)也可用来确定何时接收了有效报文------为了减少引脚的使用,先使用通用中断引脚检测中断的发生,再通过读状态寄存器判断是何种类型的中断。
>>通过读取相应的寄存器可以检查通讯状态和错误。会对在CAN总线上检测到的任何报文进行错误检查,然后与用户定义的滤波器进行匹配,以确定是否将报文移到两个接收缓冲器中的一个。
4 CAN报文帧:
(1)标准数据帧
CAN标准数据帧与其他所有帧一样,帧以起始帧 (SOF)位开始,SOF 为显性状态,允许所有节点的硬同步。
SOF之后是仲裁字段, 由12个位组成, 分别为11个标识位和一个远程发送请求(Remote TransmissionRequest, RTR)位。RTR 位用于区分报文是数据帧
(RTR 位为显性状态)还是远程帧 (RTR 位为隐性状态)。
仲裁字段之后是控制字段,由6个位组成。控制字段的第一位为标识扩展(Identifier Extension,IDE)位,该位应是显性状态来指定标准帧。标识扩展位的下一位为零保留位(RB0) ,CAN 协议将其定义为显性位。控制字段的其余 4位为数据长度码(Data Length Code,DLC),用来指定报文中包含的数据字节数 (0 到 8 字节) 。
控制字段之后为数据字段,包含要发送的任何数据字节。数据字段长度由上述 DLC 定义 (0到 8 字节)。
数据字段之后为循环冗余校验(CRC)字段,用来检测报文传输错误。CRC字段包含一个15位的CRC序列,之后是隐性的 CRC定界位。
最后一个字段是确认字段(ACK),由2 个位组成。在确认时隙(ACK Slot)位执行期间,发送节点发出一个隐性位。任何收到无错误帧的节点会发回一个显性位(无论该节点是否配置为接受该报文与否)来确认帧收到无误。确认字段以隐性确认定界符结束,该定界符可能不允许被改写为显性位。
最后是帧结尾-------每一个数据帧和远程帧均由一标志序列界定。这个标志序列由 7 个“隐性”位组成。
>>数据帧由 7 个不同的位场组成。
(2)扩展数据帧
在扩展 CAN数据帧中(如图 2-2 所示),紧随SOF位的是 32 位的仲裁字段。仲裁字段的前 11 位为 29 位标识符的最高有效位(Most Significant bit,MSb) (基本lD)。紧随这 11 位的是替代远程请求(SubstituteRemote Request,SRR)位,定义为隐性状态。SRR位之后是 IDE 位,该位为隐性状态时表示这是扩展的CAN帧。
应该注意的是, 如果发送完扩展帧标识符的前11位后,总线仲裁无果,而此时其中一个等待仲裁的节点发出标准CAN数据帧(11 位标识符),那么,由于节点发出了显性 lDE 位而使标准 CAN 帧赢得总线仲裁。另外,扩展 CAN 帧的SRR位应为隐性,以允许正在发送标准CAN 远程帧的节点发出显性 RTR 位。
SRR和lDE位之后是标识符的其余18位(扩展lD) 及一个远程发送请求位。
为使标准帧和扩展帧都能在共享网络上发送,应将29位扩展报文标识符拆成高11 位和低 18 位两部分。拆分后可确保lDE位在标准数据帧和扩展数据帧中的位置保持一致。
仲裁字段之后是6位控制字段。控制字段前两位为保留位,必须定义为显性位---与标准数据帧相同。其余4 位为DLC,用来指定报文中包含的数据字节数。
扩展数据帧的其他部分 (数据字段、CRC 字段、确认字段、帧结尾和间断)与标准数据帧的结构相同。
(3)<