




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计报告(论文) 基于CAN技术的发动机数据采集系统研究与实现所属系 机械工程系 专 业 机械设计制造及其自动化 学 号 04108438 姓名 沈于晖 指导教师 何丹娅 起讫日期 2012.2 - 2012.5 设计地点 东南大学成贤学院 东南大学成贤学院毕业设计报告(论文)诚 信 承 诺 本人承诺所呈交的毕业设计报告(论文)及取得的成果是在导师指导下完成,引用他人成果的部分均已列出参考文献。如论文涉及任何知识产权纠纷,本人将承担一切责任。 学生签名: 日 期:基于CAN技术的发动机数据采集系统研究与实现摘 要随着汽车电子技术的迅速发展,先进的通信网络技术CAN总线被应用到汽车仪表系统中,并将逐渐替代原有的机械式、电气式传统的仪表设计。基于汽车CAN总线的虚拟仪表系统类似一个CAN节点,实现了与汽车各电控单元节点之间的资源共享,将来虚拟仪表系统将逐渐发展成一个集多功能信息显示、自动控制和多媒体娱乐的一体化系统。本课题致力于基于CAN技术的发动机数据采集系统研究与实现,深入讨论了系统的设计思想与实现方法,提出了在LabVIEW开发平台上实现基于CAN的仿真虚拟仪表系统的方法。系统首先构建了一个由两个CAN节点组成的最简单的CAN网络,节点一是下位机节点,由微控制器 P89C51、CAN控制器SJA1000和收发器TJA1050组成;节点二是基于PC上位机节点。对两个节点进行软件设计后,通过 CAN通讯接口卡来实现相互之间的通讯和数据收发,同时在汽车的CAN应用层协议基础上,上位机节点对接收的CAN报文进行处理,得到虚拟仪表系统各控件所对应的数据,并对这些数据按要求进行存储。其中,基于LabVIEW的虚拟仪表系统开发是本课题的重点和难点,不但用仿真的方式继续保留了传统仪表的一些优点,而且结合数字显示、各类信息中文文字提示和语音报警提示,而且系统容易升级、扩展。实验结果证明该系统的研制具有现实意义,但要达到应用,还待进一步改进。关键词:CAN总线,节点,虚拟仪表,LabVIEW ,发动机数据采集 CAN technology-based engine data acquisition systemAbstract Along with the rapid development of automotive electronical technology,CAN(Control Area Network), an advanced technology in communication network, applies in automotive instrument system, and it will take the place of the intrinsic mechanical electrical traditional instruments in the end. The virtual instrument system base on automotive CAN bus just like a CAN node, it shares the resource with many others ECUs, Electrical Control Unit, in the auto. And in the future, virtual instrument system is gradually developing an integration system whit multifunction display, automatic drive and multimedia entertainment. This paper researches automotive instrument based on CAN bus, deeply discusses the idea and the method of system design and brings forward the approach of design the automotive emulational virtual instrument system on the platform of LabVIEW software. Firstly, we make up the most simple CAN with two CAN nodes, we call the node one nether node, its composed with P89C51 micro controllor, SJA100CANcontroller, TJA1050 transceiver; the node two is upper node which is designed on personal computer. When we have the software designed with them, they CAN find each other and transmit or receive date in two ways in controlling the CAN communication interface card. When the upper node received a CAN signal, it will deal with the signal, and we CAN get the key information from it based on application layer protocol of CAN. The instruments in the vitual instrument system are drived by the real data we got, also we will save these signals. It is the most important and difficult that we design the virtual instrument system with LabVIEW. In the system, not only the advantages of traditional instrument arereserved in emulational way, but also it has the digital display, many kinds of informations in Chinese letters caution, and sound alarm informing. It is easy that we need upgrading or extending the system. The research of this system has been proved to be of great signification by practice. However, we need more improvements before application.Key words:CAN bus, node, automotive vitual instrument, LabVIEW, Engine data acquisitionIV目录摘 要IAbstractII第一章 绪论11.1 课题背景及意义11.2 虚拟仪器概述11.2.1 虚拟仪器技术的概念11.2.2 虚拟仪器的组成11.2.3 虚拟仪器的特点21.3 LabVIEW软件介绍31.4 LabVIEW软件的组成31.5 本课题主要研究任务4第二章 CAN技术52.1 CAN技术52.2 CAN总线系统智能节点设计52.3 CAN总线最小系统和节点通信的建立7第三章 氧传感器183.1作用183.2电路图183.3标准值18第四章 方案设计204.1 系统方案设计204.2 数据采集方案214.3 软件结构方案设计22第五章 软件设计235.1 界面与程序结构设计235.2 程序的结构设计:255.2.1 Init状态255.2.2 Wait状态265.2.3 Run状态275.2.4 Exit状态28第六章 主要数据处理模块解析296.1 波形文件的储存和回放296.2 波形数据的测量与标定306.3 信号的数据流分析316.4 基于LabVIEW的CAN接口信号采集326.5 LabVIEW程序打包成安装文件33第七章 结束语34致 谢35参考文献36东南大学成贤学院毕业论文第一章 绪论1.1 课题背景及意义CAN总线是当前最有影响的现场总线之一,它具有较高的性价比,在自动控制领域得到广泛的应用,同时也用到了嵌入式系统中。由于采用了新技术和独特的设计,在数据通信中具有突出的可靠性、实时性和灵活性。虚拟仪表是利用现有的计算机加上特殊的仪表硬件和专用软件,形成既有普通仪表的基本功能,又有自己特殊功能的新型仪表。虚拟仪表可以使多种仪表共享计算机资源和数据采集设备,从而大大增强了仪表的功能和降低了成本。应用现场总线与虚拟仪表技术相融合的测控系统将会充分发挥这两种技术的优势,形成互补。可以预见,现场总线与虚拟仪表技术的融合将是工业自动化和过程控制领域的重要发展趋势之一。随着汽车电子技术的飞速发展,先进的通信网络技术CAN总线被应用到汽车仪表系统中,并将逐渐替代原有的机械式、电气式传统的仪表设计。基于汽车CAN总线的虚拟仪表系统类似一个CAN节点,实现了与汽车各电控单元节点之间的资源共享,将来虚拟仪表系统将逐渐发展成一个集多功能信息显示、自动控制和多媒体娱乐的一体化系统。本课题提出了在LabVIEW开发平台上实现基于CAN的发动机数据采集系统研究的方案。主要任务是:构建一个由两个CAN节点组成的最简单的CAN网络,二是基于PC上位机节点。对两个节点进行软件设计后,通过 CAN通讯接口卡来实现相互之间的通讯和数据收发,同时在汽车的CAN应用层协议基础上,上位机节点对接收的CAN报文进行处理,并实现这些数据进行数据处理、显示和存储功能。1.2 虚拟仪器概述1.2.1 虚拟仪器技术的概念虚拟仪器(Virtual Instrumentation)技术指的基于计算机的仪器及测量技术。与传统仪器技术不同,虚拟仪器技术指在包含数据采集设备的通用计算机平台上,根据需求可以高效率地构件起形形色色的测量系统。对大多数用户而言,主要的工作变成了软件设计。虚拟仪器技术突破了传统仪器的局限,可以将许多信号处理的方法方便地应用与测量中,并且为自动测量和网络化测量创造条件。早期的虚拟仪器主要用于军事、航空、航天等领域和科研院所,现在已经越来越多地出现在工厂及其他民用场合。1.2.2 虚拟仪器的组成成熟的虚拟仪器技术由三大部分组成:高效的软件、模块化I/O硬件和标准的软硬件平台。 虚拟仪器利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。灵活高效的软件能帮助我们创建完全自定义的用户界面,模块化的硬件能方便地提供全方位的系统集成,标准的软硬件平台能满足对同步和定时应用的需求。1.2.3 虚拟仪器的特点虚拟仪器的主要特点包括:1.性能高虚拟仪器技术是在PC技术的基础上发展起来的,所以完全“继承”了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,使您在数据高速导入磁盘的同时就能实时地进行复杂的分析。此外,不断发展的因特网和越来越快的计算机网络使得虚拟仪器技术展现其更强大的优势。2.扩展NI的软硬件工具使得工程师和科学家们不再局限于当前的技术中。得益于NI软件的灵活性,只需更新您的计算机或测量硬件,就能以最少的硬件投资和极少的、甚至无需软件上的升级即可改进您的整个系统。在利用最新科技的时候,您可以把它们集成到现有的测量设备,最终以较少的成本加速产品上市的时间。3.开发时间少在驱动和应用两个层面上,NI高效的软件构架能与计算机、仪器仪表和通讯方面的最新技术结合在一起。NI设计这一软件构架的初衷就是为了方便用户的操作,同时还提供了灵活性和强大的功能,使您轻松地配置、创建、发布、维护和修改高性能、低成本的测量和控制解决方案。4.无缝集成虚拟仪器技术从本质上说是一个集成的软硬件概念。随着产品在功能上不断地趋于复杂,工程师们通常需要集成多个测量设备来满足完整的测试需求,而连接和集成这些不同设备总是要耗费大量的时间。NI的虚拟仪器软件平台为所有的I/O设备提供了标准的接口,帮助用户轻松地将多个测量设备集成到单个系统,减少了任务的复杂性。表1 传统仪器与虚拟仪器的比较传统仪器虚拟仪器仪器厂商定义用户自己定义硬件是关键软件是关键仪器的功能、规模均已规定系统功能和规模可通过软件修改和增减封闭的系统、与其它设备连接受限基于计算机开放系统,或方便地同外设、网络及其它应用连接多为实验室拥有个人可以拥有一个实验室技术更新慢技术更新快开发和维护费用高节省开发和维护费用价格昂贵价格低,可重复1.3 LabVIEW软件介绍LabVIEW(laboratory virtual instrument engineering workbench)是一种图形化的编程语言和开发环境,它广泛的被工业界、学术界和研究实验室所接受,被公认为是标准的数据采集和仪器控制软件。LabVIEW不仅提供了与遵从GPIB,VXI,RS-232和RS-485协议的硬件及数据采集卡通信的全部功能,还内置了TCP/IP,ActiveX等软件标准的库函数,而且其图形化的编程界面使编程变得生动有趣。LabVIEW是一个功能强大且灵活的软件,利用它可以方便地建立自己的虚拟仪器。以LabVIEW为代表的图形化程序语言,又称为“G”语言。只用这种语言编程时,基本上不需要编写程序代码,而是绘制程序流程图。LabVIEW尽可能利用工程技术人员所熟悉的语句、图标和概念,因而它是一种面向最终用户的开发工具,可以增强工程人员构建自己的科学和工程系统的能力,可以实现仪器编程和数据采集系统提供便捷途径。图1.1 LabVIEW用于数据采集图1.2 LabVIEW用于数据分析图1.3 LabVIEW用于数据显示1.4 LabVIEW软件的组成 LabVIEW中开发的程序被称为VI(Virtual Instrumentation),其扩展名默认为vi。所有的VI都包含前面板(Front panel)、框图(Block diagram)以及图标和连接器窗口(Icon and connector pane)。前面板是图形用户界面,也是VI的前面板。该界面有交互式的输入和输出两类对象,分别为控制器(Control)和指示器(Indicator)。控制器包括开关、旋钮、按钮和其他各种输入设备;指示器包括(Graph和Chart)、LED和其他显示输出对象。框图是定义VI功能的图形化源代码。在框图中对VI编程的主要工作就是从前面板上的输入控件(Control)获得用户输入信息,然后进行计算和处理,最后在输出控件(Indicator)中把结果反馈给用户。框图上的编程元素除了包括与前面板上的输入控件(Control)和输出控件(Indicator)对应的连线端子(Terminal)外,还有函数、子VI、常量、结构和连线等。VI具有层次化和结构化的特征。一个VI可以作为另一个VI的子程序被调用。这里的子程序称为子VI(sub VI)。图标用于在主VI的框图中标识被调用的子VI,连接起相当于图形化的子程序参数。在LabVIEW的用户界面里提供了各种模板(Palette),包括工具(Tool)模板、控件(Controls)模板和函数(Functions)模板。工具模版提供了各种用于创建、修改和调试VI程序的工具。控件模版用来给前面板添加各种显示对象(Indicator)和输入控制对象(Control)。Function模版是创建程序框图时会用到的对象集合。1.5 本课题主要研究任务1.在LabVIEW开发平台上实现基于CAN的仿真虚拟仪表系统,通过 CAN通讯接口卡来实现相互之间的通讯和数据收发,同时在汽车的CAN应用层协议基础上,上位机节点对接收的CAN报文进行处理,并实现这些数据进行数据处理、显示和存储功能。2.构建一个由两个CAN节点组成的最简单的CAN网络系统;难点之一。3.完成基于CAN的汽车虚拟仪表的数据流程分析与流程分析;关键点之一。4.完成汽车虚拟仪表的结构设计与界面设计;难点之一5.完成软件的编程与调试;关键点之一35第二章 CAN技术2.1 CAN技术CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。CAN最初出现在 80 年代末的汽车工业中,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置 ECU 之间交换信息,形成汽车电子控制网络,比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。CAN总线最先由德国 Bosch公司提出,当时,由于消费者对于汽车功能的要求越来越多,而这些功能的实现大多是基于电子操作的,这就使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线。提出CAN总线的最初动机就是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。于是,他们设计了一个单一的网络总线,所有的外围器件均可以被挂接在该总线上。1993 年,CAN已成为国际标准 IS011898(高速应用)和 IS011519(低速应用)。CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN仍可提供高达 50Kbit/s 的数据传输速率,其最高的通信速率为1Mbit/s(此时的距离最长为40m)。 由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制等领域中得到了广泛应用。CAN总线属于总线式串行通信网络,由于采用了许多新技术以及独特的设计,与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。其特点可以概括如下:(1)通信方式灵活。CAN为多主方式工作,网络上任一节点均可在任意时刻主动的向网络上其他节点发送信息,而不分主从,且无需站地址等节点信息。利用这一特点可方便的构成多机备份系统。(2)CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求。(3)CAN采用4种非坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动的退出发送,而最高优先级的节点可不受影响的继续传输数据,从而大大节省了总线冲突仲裁时间,尤其是在网络负载很重的情况下也不会出现网络瘫痪情况。2.2 CAN总线系统智能节点设计CAN总线系统智能节点采用89C51 作为节点的微处理器,在CAN总线通信接口中采用PHILIPS 公司的SJA1000和82C250芯片。SJA1000是独立CAN通信控制器,82C250为高性能CAN总线收发器。如图所示为CAN总线系统智能节点硬件电路原理图。从图中可以看出电路主要由四部分所构成:微控制器89C51、独立CAN通信控制器SJA1000、CAN总线收发器82C250和高速光电耦合器6N137 。微处理器89C51 负责SJA1000的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。图2.1 CAN总线系统智能节点硬件电路原理图SJA1000的AD0 AD7 连接到89C51 的P0 口,CS 连接到89C51 的P2.0, P2.0 为0 的CPU 片外存贮器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读写操作。SJA1000的/RD、/ WR、ALE 分别与89C51 的对应引脚相连,/INT 接89C51 的/INT0。 89C51 也可通过中断方式访问SJA1000。为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RXO 并不是直接与82C250的TXD 和RXD 相连,而是通过高速光耦6N137 后与82C250相连,这样就很好的实现了总线上各CAN节点间的电气隔离。不过应该特别说明的一点是光耦部分电路所采用的两个电源VCC 和VDD 必须完全隔离,否则采用光耦也就失去了意义。电源的完全隔离可采用小功率电源隔离模块或带多5V 隔离输出的开关电源模块实现。这些部分虽然增加了节点的复杂,但是却提高了节点的稳定性和安全性。82C250与CAN总线的接口部分也采用了一定的安全和抗干扰措施。82C250的CANH和CANL引脚各自通过一个5 的电阻与CAN总线相连,电阻可起到一定的限流作用,保护82C250免受过流的冲击。CANH和CANL与地之间并联了两个30P 的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。另外在两根CAN总线接入端与地之间分别反接了一个保护二极管,当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。82C250的Rs 脚上接有一个斜率电阻,电阻大小可根据总线通讯速度适当调整一般在16K 140K 之间。CAN-bus 网络采用总线式拓朴结构,在一个网络上至少需要有2个CAN-bus 节点 存在。在总线的2 个终端,各需要安装1 个120终端电阻;如果节点数目大于2, 中间节点就不要求安装120终端电阻。CAN总线的连接电缆一般使用双绞线,对抗干扰要求较高可以使用屏蔽双绞线或者光纤。CAN总线不需要HUB,理论上总线上的节点数最多可达110个。扩展CAN总线的设备有中继器、网桥等。 由于CAN总线具有通讯速率高、可靠性高、连接方便和性能价格比高等诸多特点, CAN的应用范围遍及从高速网络到低成本的多线路网络。在自动化电子领域的汽车发动机控制部件、传感器、抗滑系统、工业自动化、建筑物环境控制、机床或电梯控制、医疗设备等领域得到了较为广泛的应用。CAN的信号传输采用短帧结构,每一帧的有效字节数为 8个,因而传输时间短、受干扰的概率低。当节点严重错误时,具有自动关闭的功能以切断该节点与总线的联系,使总线上的其它节点极其通信不受影响,具有较强的抗干扰能力和检错能力。CAN控制器支持四种不同的CAN协议类型:数据帧、远程帧、出错帧和超载帧。CAN支持多主方式工作,网络上任何节点均可在任意时刻主动向其它节点发送信息,支持点对点、一点对多点和全局广播方式接收/发送数据。它采用总线仲裁技术,当出现几个节点同时在网络上传输信息时,优先级高的节点可继续传输数据,而优先级低的节点则主动停止发送,从而避免了总线冲突。2.3 CAN总线最小系统和节点通信的建立本系统的软件编程主要包括单片机初始化、CAN控制器的初始化、CAN总线数据的发送和接收等几个部分。初始化设置主要包括通信的波特率的设置、报文滤波器的设置和输出模式的设置。主程序的流程图如图所示。图2.2 主程序流程图1.初始化SJA1000的初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置 接收滤波方式的设置接收屏蔽寄存器AMR 和接收代码寄存器ACR的设置波特率参数设置和中断允许寄存器IER的设置等。 在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态,进行正常的通信任务。下面是SJA1000初始化的51汇编源程序,程序中寄存器符号表示的是SJA1000相应寄存器占用的片外存贮器地址,这些符号可在程序的头部用伪指令 EQU 进行定义。后文对这一点不再作特别说明。图2.2 初始化程序流程图 CANINI: MOV DPTR #MOD ;方式寄存器 MOV A,#09H ;进入复位模式,对SJA1000进行初始化. MOVX DPTR,A MOV DPTR #CDR ; 时钟分频寄存器 MOV A,#88H ;选择 PeliCAN模式 ;关闭时钟输出 MOVX DPTR,A MOV DPTR #IER ;中断允许寄存器 MOV A,#0DH ;开放发送中断 超载中断和错误警告中断 MOVX DPTR,A MOV DPTR, #AMR ;接收屏蔽寄存器 MOV R6,#4 MOV R0,#DAMR ;接收屏蔽寄存器内容在片内 RAM 中的首址 MOV A,R0 MOVX DPTR,A ;接收屏蔽寄存器赋初值 INC DPTR DJNZ R6,AMR MOV DPTR,#ACR ; 接收代码寄存器 MOV R6,#4 ,#DACR ;接收代码寄存器内容在片内 RAM 中的首址 MOV R0 MOV A,R0 MOVX DPTR,A ;接收代码寄存器赋初值 INC DPTR DJNZ R6 ACR MOV DPTR,#BTR0 ;总线定时寄存器 0 MOV A,#03H MOVX DPTR,A MOV DPTR,#BTR1 ;总线定时寄存器 1 MOV A,#0FFH ;16MHz 晶振情况下 设置波特率为 80kbps. MOVX DPTR,A MOV DPTR,#OCR ;输出控制寄存器 MOV A,#0AAH MOVX DPTR,A MOV DPTR,#RBSA ;接收缓存器起始地址寄存器 MOV A ,#0 ;设置接收缓存器 FIFO 起始地址为 0 MOVX DPTRA MOV DPTR,#TXERR ;发送错误计数寄存器. MOV A,#0 ;清除发送错误计数寄存器 MOVX DPTR,A MOV DPTR,#ECC ; 错误代码捕捉寄存器 MOVX A ,DPTR ;清除错误代码捕捉寄存器 MOV DPTR #MODE ;方式寄存器 MOV A,#08H ;设置单滤波接收方式,并返回工作状态 MOVX DPTR,A RET2.发送子程序发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按特定格式组合成一帧报文送入SJA1000发送缓存区中,然后启动SJA1000发送即可,当然在往SJA1000发送缓存区送报文之前,必须先作一些判断。如下文程序所示,发送程序分发送远程帧和数据帧两种 ,远程帧无数据场,下面以发送数据帧为例对,发送子程序作一个说明。图2.3 发送子程序流程图TDATA MOV DPTR,#SR ;状态寄存器 MOVX A,DPTR ;从SJA1000读入状态寄存器值 JB ACC.4,TDATA ;判断是否正在接收 正在接收则等待TS0 MOVX A,DPTR JNB ACC.3,TS0 ;判断上次发送是否完成,未则等待发送完成TS1 MOVX A,DPTR JNB ACC.2,TS1 ;判断发送缓冲区是否锁定 锁定则等待TS2 MOV DPTR,#CANTXB ;SJA1000发送缓存区首址 MOV A,#88H ; 发送数据长度为 8 个字节的扩展帧格式报文 MOVX DPTR,A INC DPTR MOV A ,#ID0 ;4个字节的标识符ID0-ID3,依据实际情况赋值 MOVX DPTR;A INC DPTR MOV A,#ID1 MOVX DPTR,A INC DPTR MOV A,#ID2 MOVX DPTR,A INC DPTR MOV A,#ID3 MOVX DPTR,A MOV R0,#TRDATA ;CPU发送数据区首址,MTBF: MOV A,R0 INC DPTR MOVX DPT,A INC R0 CJNE R0,#TRDATA+8,MTBF ;向发送缓冲区写 8 个字节 MOV DPTR,#CMR ;命令寄存器地址 MOV A,#01H MOVX DPTR,A ;启动SJA1000发送 RET 3.查询方式接收子程序接收子程序负责节点报文的接收以及其它情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要对诸如总线脱离,错误报警,接收溢出等情况进行处理。SJA1000报文的接收主要有两种方式:中断接收方式和查询接收方式,因为对通信的实时性要求不是很强,所以我们采用查询接收方式。两种接收方式编程的思路基本相同。图2.3 接受子程序流程图SEARCH: MOV DPTR,#SR ;状态寄存器地址 MOVX A,DPTR ANL A,#0C3H ;读取总线脱离,错误状态,接收溢出,有数据等位 JNZ PROC RET ;上述状态 结束PROC: JNB ACC.7,PROCIBUSERR: MOV DPTR,#IR ;IR 中断寄存器 出现总线脱离 MOVX A,DPTR ;读中断寄存器 清除中断位. MOV DPTR,#MODE ;方式寄存器地址 MOV A,#08H MOVX DPTR,A ;将方式寄存器复位请求位清 0 LCALL ALARM. ;调用报警子程序 RET NOPPROCI: MOV DPTR,#IR ;总线正常 MOVX A,DPTR ;读取中断位 JNB ACC.3,OTHEROVER: MOV DPTR,#CMR ;数据溢出中断置位. MOV A,#0CH MOVX DPTR,A ;在命令寄存器中清除数据溢出和释放接收缓冲区 RET NOPOTHER: JB ACC.0,RECE ;IR.0=1 接收 FIFO 未满或接收中断使能 LJMP RECOUT ;IR.0=0 接收缓冲区无数据 退出接收 NOP RECE: MOV DPTR #CANRXB ; 接收缓冲区首地址16,准备读取数据 MOVX A,DPTR ;首字节是接收帧格式字 JNB ACC.6 ; RDATA RTR=1 是远程请求帧 MOV DPTR #CMR MOV A,#04H ;CMR.2=1 释放接收缓冲区 MOVX DPTR,A ;只有接收了数据才能释放接收缓冲区 LCALL TDATA ;发送对方请求的数据 LJMP RECOUT ;退出接收 NOPRDATA: MOV DPT,#CANRXB ;读取并保存接收缓冲区的数据 MOV R,#CPURBF ;CPU 片内接收缓冲区首址 MOVX A,DPTR ;读取读取CAN缓冲区的 2 号字节 MOV R1,A ;保存 ANL A,#0FH ;截取低 4 位是数据长度 08 ADD A,#4 ;加 4 个字节的标识符 ID MOV R6 ARDATA INC DPTR INC R1 MOVX A,DPTR MOV R1,A DJNZ R6,RDATA0 ;循环读取与保存 MOV DPTR,#CMR MOV A,#04H ;释放CAN接收缓冲区 MOVX DPTR ARECOUT:MOV DPTR #ALC ;释放仲裁丢失捕捉寄存器和错误捕捉寄存器 MOVX A,DPTR MOV DPTR,#ECC MOVX A,DPTR NOP RET2.4 CAN总线两节点的通信程序/*程序功能*/节点1向CAN节点2发送数据,数据的头两个字节分别是:节点1的ID和要求节点2回复的数据长度/节点2收到节点1的信息后,立即按照节点1的要求回复数据/*/i nclude i nclude /SJA存储器定义头文件i nclude /SJA子程序文件i nclude /显示头文件i nclude /字符串函数/*头文件*/void Init_Cpu(void); /初始化单片机void Sja_1000_Init(void);/初始化SIA/*/bit s; /配置sja标志bit flag_send;/发送命令标志unsigned char data a5=0x05,0x05,0x05,0x05,0x05; /显示5unsigned char b5=0x12,0x12,0x12,0x12,0x12;/显示punsigned char c5=0x01,0x01,0x01,0x01,0x01;/显示1unsigned char da
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四川宜宾市公务服务中心选调事业单位工作人员2人笔试高频难、易错点备考题库带答案详解
- 教师招聘之《小学教师招聘》练习题(一)含完整答案详解(易错题)
- 2025年教师招聘之《幼儿教师招聘》测试卷及答案详解1套
- 2025年梁山县辅警考试练习题库
- 2025年北京银行长沙分行社会招聘考试备考试题及答案解析
- 合肥市女性创业企业融资困境与破局之道:问题剖析与策略探寻
- 教师招聘之《幼儿教师招聘》测试卷带答案详解(黄金题型)
- 押题宝典教师招聘之《幼儿教师招聘》通关考试题库及参考答案详解一套
- 创伤关节骨科关于人工关节集采带量工作的自查整改与报告
- 药品科室会议记录范文
- 一例感染性休克患者护理查房汇报
- 电池热管理机组知识
- 《电力行业职业技能标准 农网配电营业工》
- 《戏曲服饰欣赏》课件
- 《公共基础知识》贵州省黔南布依族苗族自治州都匀市2024年事业单位考试统考试题含解析
- 电力营销业务培训课件
- 技术方案评审表
- 人教版九年级数学下册第二十六章反比例函数-作业设计
- 人美小学美术五上《第1课:肖像艺术》课件
- 湘美版五年级上册美术全册教案
- 浙江省通用安装工程预算定额第八册
评论
0/150
提交评论