微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于单片机和MCP2510的CAN总线通信模块的设计

基于单片机和MCP2510的CAN总线通信模块的设计

时间:01-17 来源:互联网 点击:

1 前言

CAN(Controller Area Network)总线,即控制器局域网。由于具有高性能、高可靠性以及独特的设计,CAN总线越来越受到人们的重视。德国的Bosch公司最初为了汽车监控和控制系统设计了CAN总线,现在,其应用范围已面向过程工业、机械工业、纺织工业、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN 总线已经形成国际标准,并已经被公认为最有前途的现场总线之一。CAN总线规范已经被国际标准化组织制订为国际标准ISO11898,并得到众多半导体器件厂商的支持,推出各种集成有CAN协议的产品。CAN总线系统智能节点是网络上报文的接收&发送站,一般由单片机和CAN控制器或二者合二为一组成。 MCP2510是MicroChip成产的一种独立的可编程CAN控制器芯片。本文将介绍新型的独立CAN通信控制器MCP2510,并给出在CAN总线系统智能节点中的应用实例。

2 M

(7) 工作温度范围为-40~+125℃。

2.3 结构及工作原理

图2是MCP2510的内部结构框图,其中CAN协议机负责与CAN总线的接口,SPI接口逻辑用于实现同MCU的通讯,而寄存、缓冲器组与控制逻辑则用来完成各种方式的设定和操作控制。现结合其工作过程将各部分的功能、原理作一介绍。

(1)收发操作

MCP2510的发送操作通过三个发送缓冲器来实现。这三个发送缓冲器各占据14个字节的SRAM。第一字节是控制寄存器TXBNCTRL,该寄存器里的内容设定了信息发送的条件,且给出了信息的发送状态;第二至第六字节用来存放标准的和扩展的标识符以及仲裁信息;最后八个字节则用来存放待发送的数据信息。在进行发送前,必须先对这些寄存器进行初始化。

(2)中断管理

MCP2510有8个中断源,包括发送中断、接收中断、错误中断及总线唤醒中断等。利用中断使能寄存器CANINTE和中断屏蔽寄存器CANINTF可以方便地实现对各种中断的有效管理。当有中断发生时,INT引脚变为低电平并保持在低电平,直到MCU清除中断为止。

(3) 错误检测

CAN协议具有CRCF错误、应答错误、形式错误、位错误和填充错误等检测功能。MCP2510内含接收出错计数器(REC)和发送出错计数器(TEC)两个错误计数器。因而对于网络中的任何一个节点来说,都有可能因为错误计数器的数值不同而使其处于错误-激活、错误-认可和总线-脱离三种状态之一

3 MCP2510在智能节点中的应用实例

利用MCP2510和CAN总线收发器TJA1050可构成一个CAN总线分布式测控网络。系统可包括一个主控制器和多个节点控制器,这种节点控制器可对电动机的电流,电压及周围的温度进行监控,其结构如图3所示。

这种网络拓扑结构采用了总线式结构,且结构简单、成本低,采用无源抽头连接。因而系统的可靠性较高。其信息传输采用CAN通信协议,通信介质采用双绞线。由于CAN总线是基于发送报文的编码,它不对CAN控制节点进行编码,故系统的可扩充性比较好,同时增删CAN总线上的控制节点不会对系统的其余节点造成任何影响。

节点控制器的MCU可选用具有SPI接口的微处理器,也可采用不带SPI接口的微处理器。本系统采用的是不带SPI接口的微处理器 AT89c51,AT89c51可通过P1口与CAN控制器的SPI接口直接相连,并用软件算法来实现SPI接口协议。CAN总线收发器TJA1050则作为MCP2510与物理总线的接口。如果需要进一步提高系统的抗干扰能力,可在MCP2510和82C250之间再加一个光电隔离器。

3.1软件设计

MCP2510正常工作之前, 需要进行正确的初始化,包括设置SPI接口的数据传输速率、CAN通信的波特率、MCP2510的接收过滤器和屏蔽器以及发送&接收中断允许标志位等。与 SJA1000不同的是,单片机对MCP2510的接收缓冲器和发送缓冲器的操作必需通过SPI接口用MCP2510内置读写命令来完成。其读、写命令时序图如图5、6所示:

本文中MCP2510主要采取中断模式进行总线数据的接收和发送。整个系统主序提供两种中断"定时器中断和外部中断",定时器中断的中断子程序主要处理来自模拟通道AIN0~AIN7的A/D数据采集和向MCP2510发送数据发送请求命令以及数据发送。外部中断的中断处理子程序主要处理CAN总线错误处理子程序和数据接收子程序。

3.2 软件主体设计流程图如下

3.3 软件设计时需要注意的问题:

(1)因为 MCP2510在初始化完成后默认处Configuration模式下,所以就需要在MCP2510的初始化完后将其置为 Normal模式,否则MCP2510将一直停留在Configuration 模 式 下, 不 能 进 行 正 常 工作。将MCP2510置Normal模式可通过使用 MCP2510内置的BitModify(位修改)4指令向CANCTRL控制字写入一个0字节来实现.

(2)在对MCP2510做任何操作之前,都要由微处理器向MCP25

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top