MCP2510是一款带SPI接口的独立CAN控制器,完全支持CAN总线V2.0A/B技术规范,能够发送和接收标准和扩展报文,同时具有验收滤波和报文管理功能。它内含3个发送缓冲器、2个接收缓冲器。MCU能通过标准的SPI接口完成对MCP2510的初始化、工作状态控制以及数据的读写,SPI最高数据传输速率可达5 Mbps。此外,MCP2510还具有灵活的中断管理能力,产生的中断可以反馈给MCU来处理,满足不同的实时操作需求。
3.2 通信接口程序设计
CAN总线节点的接口软件为应用层访问CAN控制器MCP2510提供了一个便捷通道,该通道屏蔽了MCP2510工作的实现细节,使得应用层面向通信是透明的。通信接口程序主要包括初始化、数据的发送和数据的接收3个部分。完成这3部分程序的编制后,就能进行一般的数据发送和接收。
MCU对MCP2510的初始化操作包括设置SPI数据传输速率、CAN通信波特率、滤波寄存器和屏蔽寄存器以及中断允许标志位等。系统中所有节点设置为同一通信波特率,否则设备间将无法正常通信。
CAN初始化完毕后,方可进行数据的接收和发送。为保证发送数据的完整性和数据接收的实时性,各节点根据需要主动进行数据的发送,而数据的接收采用中断方式。
发送数据时,将待发送的数据打包成符合CAN协议帧格式的报文后写入发送缓冲器,并启动发送。在写发送缓冲器前先查询其状态,只有在有空闲的发送缓冲器时才将报文写入。启动发送后,通过查询状态寄存器或发送成功中断标志来判断报文是否发送成功。
总线报文通过中断方式进行接收,此中断在接收缓冲器满时被触发。报文传至某一接收缓冲器后,与该接收缓冲器对应的中断标志寄存器的RXNIF位将置1。一旦缓冲器中的报文处理完毕,MCU将该位清除等待接收下一条报文。该控制位提供的锁定功能确保在MCU尚未处理完上一条报文前,MCP2510不会将新的报文载入接收缓冲器。