CAN总线通信研究与软件设计-演示文稿_第1页
CAN总线通信研究与软件设计-演示文稿_第2页
CAN总线通信研究与软件设计-演示文稿_第3页
CAN总线通信研究与软件设计-演示文稿_第4页
CAN总线通信研究与软件设计-演示文稿_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CAN总线通信研究与软件设计,目录,一、CAN总线简介二、设计目的三、软件详细设计四、软件设计原理及设计方案五、软件设计流程图六、程序演示截图七、小结,一、CAN总线简介,CAN 是控制器局域网的缩写,它是德国的博世公司为解决汽车中众多的设备仪器之间的数据交换而开发的一种数据通信协议。它的通信速率高,通信距离远,有独特的设计和自己的规范,具有较高抗电磁干扰性,并且它能够检测出在数据通讯中产生的任何错误。,CAN总线具有成本低、效率高、实时性高和可靠性高的特点,它的应用已经不再局限于汽车工业,而是已经被广泛应用到交通运输、医疗等各个领域。,二、设计目的,本次CAN通信系统的设计目的是实现两个CAN节点之间简单的数据通信,制作两个单片机,型号为stc89c52,两个CAN通信模块,其中一个单片机和一个CAN通信模块组成一个CAN节点,另一个组成另一个CAN节点,电池供电,设计编写串口函数,SPI接口函数,CAN初始化程序以及CAN发送数据和接收数据等程序,并将程序下载到单片机内,实现两个CAN节点之间的数据通信功能。,三、软件设计 (一)串口设计,对于单片机,UTRT是最常用到的端口。UART将计算机内部传输过来的并行数据转换为串行数据进行输出。本次串口程序设计有串口初始化、串口发送和接收程序。首先,通信时要先对串口进行设置,比如串口号、波特率、数据位数等等。计算机发送的并行数据转换成串行数据后再送入单片机的串口进行相应处理完成单片机的串口通信。,(二)SPI接口设计,SPI接口是一种同步串行外设接口,它有三个寄存器:数据寄存器、控制寄存器、状态寄存器,它的主要功能是实现单片机与外围设备的数据通信,在本次设计中,spi是单片机操作CAN的途径。本次设计SPI发送和接收函数以及SPI复位函数用来回到初始状态。,(三)、MCP2515初始化,MCP2515是一种独立的CAN总线通信控制器,MCP2515 CAN控制器内部主要由三个模块组成:即SPI接口模块、CAN协议模块以及逻辑控制寄存器。SPI接口模块负责与主单片机之间的数据传送功能, 单片机通过SPI接口可以与其它外围设备进行数据通信;CAN协议模块主要负责数据发送和接收,包括CAN协议驱动、屏蔽器、过滤器、以及发送数据缓冲器和接收数据缓冲器;逻辑控制和静态寄存器主要负责设置芯片及其操作模式。,MCP2515的初始化主要包括工作模式的设置、波特率的参数设置、控制寄存器的设置、中断使能寄存器的设置、验收屏蔽寄存器的设置、验收滤波方式的设置等。在MCP2515 CAN控制器初始化完成后,就可以进入工作状态,来完成正常的数据通信功能。,(四)、CAN发送和接收设计,发送数据子程序负责CAN节点数据的发送,发送数据时,我们只需要将想要发送的数据写入MCP2515控制器的发送缓冲区中,然后启动MCP2515 控制器调用发送函数就可以进行发送。接收数据子程序相比发送数据子程序要稍微麻烦一点,接收数据子程序负责CAN节点数据的接收以及其它特殊情况的操作处理。但是在接收数据的过程中,我们要对CAN总线中断、出错、溢出、是否有数据等特殊情况进行处理。,四、软件设计原理及设计方案(一)、CAN通信原理,在CAN总线通信模块中,CAN控制器是它的核心部分,主要控制数据的发送和接收以及中断请求和错误检测等。本次设计使用的CAN控制器为MCP2515,在发送数据中,在将数据写入发送缓冲器之前,必须将发送缓冲器中的发送请求标志位清0,以使发送缓冲器中没有之前待发送的数据。发送数据时,通过将发送缓冲器的发送请求标志位置1启动数据发送,数据发送完成后,再将发送请求位置0,表明发送完毕。,在本次设计使用的CAN控制器MCP2515中,当接收数据时,接收缓冲器中的接收中断标志位会置1,在数据接收完毕后,该位清0进而接收下一组数据,这就保证了在一组数据没有被接收完毕时,保证后面的数据不会进入接收缓冲器中,保证了数据传输的准确性。,(二)、设计方案,本次CAN总线通信系统的软件设计主要包括这几个部分:串口程序设计,SPI发送接收程序设计,CAN节点的初始化、数据发送和数据接收。掌握了这几个部分的程序原理我们就能设计出一个比较简单的CAN总线通信系统。在本次设计中,采用80c51单片机,80c51与PC机通信,PC发送数据到串口,串口调用发送函数经过单片机将数据写入mcp2515并通过CAN收发器发送;CAN总线传输过来的数据经过CAN收发器接受并写入mcp2515,调用CAN发送函数经过单片机读取数据上传给PC机。,总体设计框图如下:,PC机,80C51,Mcp2515,TJA1050,TJA1050,Mcp2515,80C51,PC机,CAN 总 线,五、软件设计流程图,STC89C52RC单片机的软件开发环境用Keil uVison3集成开发环境,用C语言设计程序,并且用stc-isp-v480软件将编写好的程序已经下载到单片机内。主程序流程如下:程序开始运行后,分别对CAN模块中的MCP2515进行初始化,然后把要发送的数据输入到CPU的存储器中,点击发送,串口接收到电脑发来的数据后通过CAN控制器发送到另一个CAN节点控制器,在这个过程中调用发送数据子程序和接收数据子程序,另一个CAN控制器收到数据后再通过串口发送到电脑。,主程序流程图如下:,开始,设置TXBnCTRL,并将发送请求标志位清零,待发送数据写入发送缓冲寄存器中,启动MCP2515发送数据,结束,设置发送正常标志,六、程序运行结果,本次程序设计使用keil4软件开发环境。要想实现CAN通信功能,必须将设计好的程序烧录到单片机内,因为单片机只能识别hex文件,所以首先要将程序生成hex文件,在keil4中“project”下拉菜单中选择“option for target”,进入页面后选择“output”项,勾选“create hex file”这一项,确定后,重新编译程序只要不出现错误就可以生成可让单片机识别的hex文件。然后利用stc-issp-v480软件通过USB转串口连接线将生成的hex文件下载到单片机内,下载过程如下:首先选择单片机型号,因为用了USB转串口先需要再选择好端口号,然后选择编译生成的hex代码文件,给单片机通电点击下载即可。,在电脑上打开STC-ISP-V480软件中的串口助手,分别连接两个USB转串口线,在设备管理器的端口里面查看各自的端口号,并在串口助手中设定好端口号和波特率等参数。将一个单片机和一个CAN模块相连作为一个CAN节点,将另一个单片机和另一个CAN模块相连作为另一个CAN节点,然后再分别与计算机相连,通电后,在电脑上打开串口助手程序,在发送区内输入想要发送的内容,然后点击发送,在另一个CAN节点的接收区内就会出现刚刚发送的内容。如下图所示,发送的是我的名字拼音缩写“gyc”,在另一个端口的接收区内就出现了发送的内容。如下图所示,发送区内输入“kaka”,在接收区内就出现发送的内容“kaka”。,六、小结,本次设计中主要采用STC89C52单片机,采用MC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论