单片机和MCP2510的CAN总线通信模块设计
图3 CAN总线远程监测系统网络结构
节点控制器的MCU可选用具有SPI接口的微处理器,也可采用不带SPI接口的微处理器。本系统采用的是不带SPI接口的微处理器AT89C51。AT89C51可通过P1口与CAN控制器的SPI接口直接相连,并用软件算法来实现SPI接口协议。CAN总线收发器TJA1050则作为MCP2510与物理总线的接口。如果需要进一步提高系统的抗干扰能力,则可在MCP2510和TJA1050之间再加一个光电隔离器。
智能节点电路原理图如图4所示。
图4 智能节点电路原理图
2.1 软件设计
MCP2510正常工作之前, 需要进行正确的初始化,包括设置SPI接口的数据传输速率、CAN通信的波特率、MCP2510的接收过滤器和屏蔽器以及发送和接收中断允许标志位等。与SJA1000不同的是,单片机对MCP2510的接收缓冲器和发送缓冲器的操作,必须通过SPI接口用MCP2510内置读写命令来完成。其读、写命令时序图如图5和图6所示。
图5 SPI读命令时序图
图6 SPI写命令时序图
评论