文档详情

MCP2515在ATmega16单片机CAN总线扩展中的应用.doc

发布:2016-12-11约2.51千字共4页下载文档
文本预览下载声明
MCP2515在ATmega16单片机CAN总线扩展中的应用   摘 要   针对大多数通用单片机缺少CAN总线模块,提出了一种基于MCP2515的ATmega16单片机总线接口扩展设计。通过对CAN协议控制器工作原理进行研究,给出了具体的硬件设计和软件流程,并在WinCE平台编写上位机程序来显示接收到的数据帧。   【关键词】CAN总线 ATmega16 MCP2515 接口扩展   为了能让ATmega16这种通用单片机具备CAN总线功能,本文以它作为主控芯片,通过对CAN协议控制器MCP2515进行控制,使单片机也能接收和发送CAN报文。整个设计既可以单独作为CAN-RS232适配器使用,又可以作为单片机或ARM的端口扩展。   1 MCP2515工作原理   MCP2515是一款具有SPI接口的独立CAN控制器,负责处理所有CAN总线上的报文发送与接收。主要由CAN模块、控制逻辑、SPI协议模块构成,自身具有非常丰富的中断源,包括发送接收中断、各种错误中断以及总线唤醒中断等。系统上电后MCU首先将MCP2515配置在配置模式,然后分别对总线速率、验收屏蔽寄存器以及发送接收使能进行设置。设置完成后再由MCU将其改为正常模式,此后MCP2515会主动监视总线上的所有报文。MCU对MCP2515的操作主要分为三种:读指令、写指令、位修改指令。以读指令时序为例,MCU首先通过将片选端置低,然后通过MOSI引脚发送8位读指令和8位地址码,随后MCP2515会将相应地址寄存器内的数据通过MISO引脚发送给MCU。写指令和位修改指令类似。   2 硬件电路设计   系统采用ATmega16单片机作为主控芯片,单片机的MOSI和MISO引脚分别连接MCP2515的SI和SO引脚,用于传输地址、数据以及指令。CS引脚为MCP2515片选使用,用户需要软件处理将CS引脚置低。SCK作为主机的时钟输出引脚,当对SPI数据寄存器写入数据时单片机自动启动SPI时钟,通过SCK引脚与MCP2515实现同步。在对MCP2515进行工作模式配置时,需要先通过RESET引脚对其复位。由于单片机采用中断方式接收CAN总线数据,因此还需要连接MCP2515的中断引脚。MCP2551的RS引脚接地,使其工作在高速模式,总线两端要加120欧终端电阻,起到匹配滤波的作用。   3 软件设计   软件设计分为mega16单片机本身编程和MCP2515的编程操作两部分。具体步骤如下:   (1)编写SPI读写操作函数,由于mega16单片机自带有SPI接口,因此可以直接使用内部寄存器而不用考虑时序。   (2)编写MCP2515寄存器读操作、写操作以及位修改操作指令。这部分可参考数据手册进行编写。例如读操作,首先片选MCP2515,然后分别发送读操作指令0x03、寄存器地址,随后将接收到一个字节数据存放到变量data,最后取消片选,返回变量data。   char MCP2515_Read(char address)   { char data;MCP2515_Select();SPI_SendByte(0x03);SPI_SendByte(address);   data = SPI_RecvByte();MCP2515_UnSelect();return data;}   (3)配置单片机串口控制寄存器、SPI控制寄存器及定义外部中断。   (4)配置MCP2515,包括配置总线速率、是否报文验收滤波、发送接收缓冲器是否使能。   (5)判断串口是否为空,若为空,转到第六步,否则,将接收到的串口数据放到发送缓冲寄存器中。由于在报文发送前已经规范好了帧格式,因此可以依次将接收到的数据按字节顺序写入MCP2515发送缓冲器寄存器中。发送数据程序如下:   for(i=1;icom_len;i++){MCP2515_Write(0x30+i,com_recv[i]);}MCP2515_Set(0x30,com_recv[0],com_recv[0])。   (6)判断单片机外部中断引脚是否为低电平,若为低,说明MCP2515接收缓冲寄存器满,此时关中断,读取数据长度,再将接收缓冲寄存器中的值通过串口输出。为方便上位机程序接收完整的一帧数据,需要对每一帧加上帧头和帧尾。   4 上位机软件实现   本文使用现在市面上常用的CAN-USB适配器,由电脑分别发送ID为1、2、3、4,长度为8字节和7字节的标准帧和扩展帧,经上述设计的总线转换模块接收,经过协议转换后通过串口输出到嵌入式平台显示,以检测数据的正确性。通过在嵌入式平台上编写CAN总线数据监测程序,可以成功接收并显示CAN总线数据的ID号、数据长度、数据值以及报文
显示全部
相似文档