题目审定表.doc

基于CAN总线的汽车仪表设计【汽车类】【电路图】【优秀】

收藏

压缩包内文档预览:
预览图
编号:351383    类型:共享资源    大小:3.65MB    格式:RAR    上传时间:2014-11-04 上传人:上*** IP属地:江苏
40
积分
关 键 词:
基于CAN 总线 汽车仪表 设计 电路图
资源描述:

基于CAN总线的汽车仪表设计

60页 22000字数+说明书+任务书+开题报告+电路图【详情如下】

MyDesign1.ddb

任务书.doc

基于CAN总线的汽车仪表设计开题报告.doc

基于CAN总线的汽车仪表设计说明书.doc

开题报告封皮.doc

汽车仪表(1).vi

答辩相关材料.doc

设计说明书封皮.doc

过程管理封皮.doc

题目审定表.doc

摘  要

   本设计致力于汽车CAN总线仪表系统的研究,深入讨论了系统的设计思想与实现方法,实现了在LabVIEW开发平台上建立基于CAN总线的虚拟仪表系统。

   整个设计分为硬件系统和软件系统两部分。其中硬件系统是以飞思卡尔公司的MC9S12XS128 作为微处理器的核心。软件系统是利用C 语言编写程序实现两个CAN节点之间的通讯以及利用LABVIEW编程实现单片机与虚拟仪表之间的通讯。

   系统首先构建了一个由两个CAN节点组成的最简单的CAN网络。对两个节点进行软件设计后,来实现相互之间的通讯和数据收发,同时在汽车的CAN 应用层协议基础上,上位机节点对接收的CAN报文进行处理,得到虚拟仪表各控件所对应的数据。其中,基于LabVIEW的虚拟仪表系统开发和单片机的C语言编程是本设计的重点和难点。  

关键词:CAN总线;汽车仪表;LabVIEW;C语言;单片机

ABSTRACT

 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.

 The whole design of hardware system and software system is divided into two parts. One of the hardware system is the MC9S12XS128 as freescale's company core microprocessor. A software system is using written in C language program realization of the communication between two CAN node using G language preparation and MCU and virtual instrument LABVIEW realization of the communication between.

 To construct a system first composed by two CAN node of the most simple CAN network. Two nodes software design, to realize mutual communication and data transceiver, meanwhile in automobile CAN application-layer protocol basis, PC node to receive message processing, CAN get virtual instrument corresponding each control the data. Among them, the LabVIEW virtual instrument based on SCM system development and the C programming language is the design of the key and difficult.

Key words: CAN Bus;Automotive Instrument;LabVIEW;C Language;SCM

目录

摘要

Abstract

第1章 绪论1

   1.1课题研究的目的和意义1

 1.2汽车仪表的发展2

 1.3 CAN总线技术推动汽车仪表的升级换代2

 1.4研究的基本内容3

第2章 CAN总线原理5

 2.1汽车总线5

 2.2 CAN总线5

 2.2.1 CAN总线简介5

 2.2.2 CAN总线基本特点7

 2.2.3 CAN总线通讯介质访问控制方式7

 2.2.4 CAN总线的物理层设计8

 2.2.5 CAN应用软件设计原则8

 2.3汽车的其他总线8

 2.3.1 LIN总线简介8

 2.3.2 FLEXRAY总线简介9

 2.3.3 MOST总线简介10

 2.3.4汽车总线比较11

 2.4汽车通讯协议11

 2.4.1 SAE J1939通讯协议11

 2.4.2 CAN总线协议12

 2.5本章小结15

第3章 汽车智能仪表系统的硬件设计16

 3.1硬件系统的组成16

 3.2微处理器的选择17

 3.3微处理器的介绍17

 3.4 MSCAN总线模块18

 3.5 CAN总线节点的搭建21

 3.6串行接口电路的设计22

 3.7按键电路设计23

 3.8电位计电路设计23

 3.9本章小结24

第4章 汽车智能仪表系统的软件设计25

 4.1 LABVIEW简介25

 4.2下位机主程序流程图28

 4.3上位机流程图29

 4.4 按键中断函数流程图29

 4.5 CAN总线程序30  

 4.6 本章小结44

第5章 系统测试45

 5.1 整体概述45  

 5.2 测试46

 5.3 本章小结53

结论54

参考文献55

致谢56

1.1课题研究的目的和意义

传统的汽车仪表只能为驾驶员提供汽车运行中必要而又少量的数据信息。然而随着汽车电子技术的发展,它已经渐渐不能满足现代汽车对于汽车仪表的功能需要。因为目前对汽车仪表的要求,已经不仅仅满足于单纯的完成指示工作了,而且还要求汽车仪表能够对实现对汽车各部件参数的监测,而达到控制汽车各种运行工况的目的。在未来,自动导航和定位系统会渐渐成为汽车仪表的必不可少的配置,而且多媒体等娱乐技术也会嵌入到汽车仪表当中。所以说,汽车仪表的发展趋势一定是向着全数字仪表的方向去发展的。

仪表是汽车工作状态的信息显示中心,是驾驶员与汽车进行信息交流的平台,是保证汽车安全行驶的关键零部件之一。近年来随着微电子技术、控制技术、网络通信技术的发展,CAN总线协议在车载电控系统中得到了广泛应用,因此汽车仪表可通过CAN总线直接在总线网络上读取所需的输入信号,无须专门布置传感器,从而可使汽车仪表系统得到大大简化,同时也显著降低了仪表的成本。因此,将CAN总线通信应用于汽车仪表已成为发展的必然趋势。

本设计选用16位微控制器MC9S12XS128,将仪表与微处理器、CAN总线技术融合,基于CAN总线网络的汽车仪表将代替原有的机械式仪表、电气式仪表和模拟电路电子仪表,把各参数的测量数字化,有利于和汽车其它的电子集中控制系统进行数据交换,有利于汽车集中控制系统的发展和实现,此外还使得汽车仪表的功耗、安全性、可靠性、舒适性得到更好的提高。通过调整电路参数还可适应不同种类和量程的产品需求,使得汽车仪表在结构的通用化、模块化、标准化、系列化程度大大提高,进而简化了生产工艺和制造设备。

1.2汽车仪表的发展

   根据仪表的工作原理、内部结构和显示方式,汽车仪表的发展过程可以分为以下四个阶段[1]:

   1.传统仪表阶段。这一阶段是从20世纪初到20世纪30年代,在此阶段中汽车开始安装各种仪表,如车速里程表、水温表、燃油表、机油压力表、电流表(电压表)和发动机转速表等,这些确定了现代汽车仪表板的基本结构。

   这一阶段汽车上的传感器和仪表基本上都是机械式/电磁机械式的,是基于机械作用力而工作的机械式仪表,所以也称机械机芯表。这种汽车仪表功能单一,仅仅显示传感器的信息以向驾驶员提供自身的状态参数,更多的是为安全性着想,信息量少,整个仪表系统的精度低,可靠性较差,体积较大,容易使驾驶员疲劳。

   2.电气式仪表阶段。这一阶段从20世纪40年代到50年代,仪表功能实现不再仅仅依靠机械作用力,而是基于电测原理,即通过各类传感器将被测的非电量变换成电信号加以测量,称之为电气式仪表。

   电气式仪表中常用的是磁电式仪表,其作用原理是永久磁铁在气隙中产生的磁场和可动线圈通入电流后,相互作用而产生的旋转力矩。磁电式仪表多用于测量电流和电压,加上变换器可以进行多种非电量的测量,如温度、压力等。磁电式仪表的性能稳定,读数精确,量限多,使用方便,适应于直流电路的精密测量和实验室中的标准测量仪表。但是其存在的最大缺陷就是随着环境温度的改变,测量误差变大。

   3.现代电子仪表阶段,也称模拟电路电子式仪表。第3代汽车用仪表工作原理与电气式仪表基本相同,只不过是用电子器件取代原来的电气器件,其出现的时间大致在20世纪50~60年代。

   随着集成电路技术突飞猛进的发展,这种仪表现在均采用汽车仪表专用集成电路,是国内汽车仪表目前主流产品,目前国内大多数汽车还是采用这种结构的仪表。经过多年的发展,其结构形式经历了动圈式机心和动磁式机心阶段,围绕着提高指示精度和指针平稳性,动磁式代替了动圈式[2]。

   4.步进电机式全数字汽车仪表。全数字式汽车仪表在国外从80年代末就己经开始研究,在国内直到最近才开始对其重视。从其应用技术手段上看,还是电子技术范畴,也属于电子式仪表,但是信号传输方式己经从模拟信号变成数字信号,并朝着数字化、智能化、网络化、虚拟化方向发展。其应用特点是单片机与微处理器的广泛应用,同时软件程序在系统设计方案中占的比重也越来越大,内部程序的编写取代了外围电路的连接闭。与传统的模拟仪表相比较具有:使用寿命长、精度高、可靠性好、抗干扰性强等特点。   CAN总线是一种非常适于汽车环境的汽车局域网,在现代汽车设计中,CAN已经成为了必须采用的装置,奔驰、宝马、大众、雷诺汽车都将 CAN 总线作为控制器联网的手段。在国内汽车工业中,一些引进车型,如大众的帕萨特和POLO、丰田“花冠”,福特嘉年华等中档车中 CAN总线技术得到了广泛的应用。由于我国中高级车以欧洲车型为主,因此随着CAN总线技术的飞速发展,汽车仪表会进入一个全新的时代。

1.4 研究的基本内容

   1.基于LABVIEW软件的汽车仪表设计。

2.对汽车仪表的硬件部分进行设计。本文选用飞思卡尔MC9S12XS128单片机为微处理器。

   3.通过C语言编程和LABVIEW编程实现两个CAN节点之间的通信以及单片机和PC机之间的通讯。

   4.对所设计的系统进行试验。第2章  CAN总线原理

2.1汽车总线

   汽车总线控制是汽车发展的趋势,现代汽车的功能日新月异,而每增加一项功能都要增加相应的电气连接,使得分布车体各处的电缆趋于庞大和昂贵,且导致设计、安装、调试和维护的困难。传统的电气控制系统设计已不能满足汽车对安全性、性能和便利性的要求这种技术进展,现场总线技术的应用就是这种进展导致的必然结果。

汽车总线控制是汽车产业的发展方向,要想进行总线控制,必须从软件和硬件两个方面着手,而使用嵌入式操作系统对软硬件进行管理,不论是实时性还是从可靠性来讲,都具有无可比拟的优势。现在在汽车上使用的主要总线,CAN总线、LIN总线、FLEXRAY总线以及MOST总线[5]。

2.2 CAN总线

2.2.1 CAN总线简介

   CAN是一种汽车产业中得到广泛使用的数据与控制通信网络,是一种极具强韧性的电气规范和协议,专门设计用于轿车或卡车中危险、常常无法预料的恶劣环境,而这种环境中有许多应用需要极高的可靠性和容错能力。1986年2月,RobertBosch公司在SAE年会上介绍了一种新型的串行总线系统—CAN(Controller Area Network)。根据这个CAN协议,在1987年中期,Intel开发了首个CAN控制器—82526。不久,Philips半导体也推出了82C200。这两种CAN控制器在报文过滤和控制上有许多的不同。Philips半导体的方式叫BasicCAN;Intel的方式叫FullCAN,由此后的不断发展,从而形成了FullCAN和BasicCAN两大阵营。

   在20世纪90年代初,Bosch CAN规范(CAN 2.0)被提交给了国际标准化组织。经过讨论,应一些法国主要汽车商的要求,包含了吸收一些VAN网(Vehicle Area Network)的内容。并于1993年11月出版了正式的CAN国际标准ISO11898[6]。从此CAN协议被广泛的用于各类自动化控制领域。在1992年,奔驰公司首先在他们的高级轿车上使用了CAN技术。这是CAN技术在车载网络系统中的首次实际使用。   在数字电子式的汽车仪表中,单片机是最主要的器件。汽车仪表的绝大部分外围器件都是为单片机服务的。所以,单片机的功能决定了汽车仪表的功能。现在,世界上有很多大公司为汽车仪表提供专用芯片。本文选用飞司卡尔公司的MC9S12XS128芯片作为主芯片,同时汽车仪表上除了主芯片之外还有很多电子器件和功能芯片。本章将重点阐述这款芯片在应用到汽车仪表上时所涉及到的具体用法,以及电子器件与主芯片的电路连接方法以及功能芯片的外围电路设计。   汽车仪表系统显示的信息量非常大,用传统仪表的显示方法显示的话,车载的仪表数目将会不断增多,而车内的空间有限,这样既会显得很拥挤,也会加大驾驶员的操作难度,分散驾驶员的注意力。用虚拟仪器技术构建的汽车虚拟仪表系统,将这些问题迎刃而解。它将所有的信息显示集合在一个屏幕上,并以分界面的方法显示,这样将使驾驶员查看信息非常便利,也使车内空间变得更加宽敞、舒适、美观。针对国内外汽车电子行业和仪表系统的发展现状和趋势,本设计提出了基于汽车 CAN 总线技术的仪表系统显示方案,设计过程中,主要包括了以下内容:

   1.汽车 CAN 总线和汽车仪表系统方面的发展现状和趋势了解,并对这两方面的相关技术理论进行探索和分析。

   2.设计了由两个 CAN 节点组成的最简单的汽车 CAN 网络系统,用来模拟网络上的 CAN 报文接收和发送。

   3.基于微控制器进行下位机 CAN 智能节点的设计。包括节点的硬件方案选择,具体硬件的功能理解和相互之间的电路连接;并完成节点软件方面设计,接收下位机的 CAN 报文发送。

   4.基于个人电脑的上位机节点设计。在美国NI公司虚拟仪器开发软件LabVIEW8.6平台上开发汽车虚拟仪表系统,系统显示界面美观,同时该系统又具备很好的扩展性。

5.通过实验验证系统设计。本系统只实现了两个 CAN 节点的互连,缺少多节点的互连调试,因而难于发现通信冲突等其它可能存在的问题,有待于今后针对具体车型制订相应应用层协议,并通过试验来进一步验证系统的实用性和通用性。  

参考文献

[1]杨忠敏.汽车仪表的发展现状[J].汽车电器,2004.28(10):103-110.

[2]李卫东.现代汽车电子技术的发展趋势[J].信息时代,2005.12(1):5-8.

[3]徐胜云.汽车电子技术的运用与发展[J].汽车与船舶,2005.1(7):60-68.

[4]饶运涛,邹继军,关勇芸.现场总线CAN 原理与应用技术[M].北京:北京航空航天大学出版社,2003.

[5]秦贵和.车上网络技术[M].北京:机械工业出版社,2006.

[6]王田苗,魏洪兴. CAN原理与规范[M].北京: 清华大学出版社,2003.

[7]邬宽明编著.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,2005.

[8]史久根,张培仁,陈真勇.CAN现场总线系统设计技术[M].北京:国防工业出版社,2004.

[9]胡思德.汽车车载网络(VAN/CAN/LIN)技术详解[M].北京:机械工业出版社, 2006.

[10]SAE J1939 Recommended practice for a serial control and communication vehicle network [S]. Society of Automotive Engineers,2000.

[11]刘剑,沙微,姜凡.CAN 总线及SAE J1939通讯协议在汽车上的应用[J].机电工程技术,2006.35(10):10-16.

[12]赵方庚等.现代汽车总线技术的发展[J].汽车运用,2005.12(1):23-33.

[13]Steven F.Barrett&Daniel J.Pack.Embedded Systems Design and Applications with the 68HC12 and HCS12[M].Publishing House of Electronics Industry,2006.

[14]孙同景,Freescale 9s12十六位单片机原理及嵌入式开发技术[M].机械工程出版社,2008.

[15]杨乐平,李海涛,杨磊.LabVIEW程序设计与应用[M].北京:电子工业出版社,2005.

[16]阮奇桢.我和LabVIEW[M].北京:北京航空航天大学出版社,2009.

内容简介:
SY-025-BY-2毕业设计(论文)任务书学生姓名朱智涛系部汽车与交通工程学院专业、班级车辆工程07-11班指导教师姓名张金柱职称教授从事专业车辆工程是否外聘是否题目名称基于CAN总线的汽车仪表设计一、设计(论文)目的、意义(一)研究现状汽车仪表是汽车工作状态的信息显示中心,是驾驶员与汽车进行信息交流的平台,是保证汽车安全行驶的关键零部件之一。近年来随着微电子技术、控制技术、网络通信技术的发展, CAN总线协议在车载电控系统中得到了广泛应用,因此汽车仪表可通过CAN总线直接在总线网络上读取所需的输入信号,无须专门布置传感器,从而可使汽车仪表系统得到大大简化,同时也显著降低了仪表的成本。因此,将CAN总线通信应用于汽车仪表已成为发展的必然趋势。(二)选题的目的、意义目的:在CAN 总线技术的基础上,研究和设计了一款CAN 总线汽车仪表。该仪表通过编程实现数据接收、处理以及显示。该设计利用CAN 总线将仪表纳入整个车身网络,通过对CAN 总线数据读取、处理和显示,实时反映车辆工况。意义:将CAN总线技术应用于汽车数字式组合仪表的开发,使仪表所需的发动机转速、车速、水温等主要信号均通过其它车载电控系统的CAN协议接口直接读取,避免现有汽车数字式仪表每个信号均采用传感器到仪表点对点的信号获取与传输方式带来汽车线束多、质量大、故障率高的不足,减少了传感器和汽车线束的数量,降低了仪表成本,提高了系统工作可靠性。二、设计(论文)内容、技术要求(研究方法)1.主要内容1、汽车仪表模拟信号的设计2、CAN总线通信的研究与实现,仪表与信号模拟装置的之间能进行CAN总线通信。3、通过PC上位机显示LABVIEW设计的虚拟仪表。2.要求(1)对系统的软、硬件进行设计,并利用C语言进行软件编程。(2)进行实验分析。三、设计(论文)完成后应提交的成果设计的实物模型,设计说明书,程序。四、设计(论文)进度安排(1)熟悉任务书,了解相关信息,准备资料,填写开题报告:第12周(3月1日3月13日)(2)掌握CAN总线与汽车仪表的绘制,并提出相应问题:第37周(3月14日4月18日)(3)对系统的软、硬件进行设计,并利用C语言进行软件编程:第811周(4月19日5月16日)(4)进行实验分析:第1214周(5月17日6月6日)(5)毕业论文总结、评阅、审核及修改不足:第1516周(6月7日6月20日)(6)为毕业论文答辩做准备及答辩:第17周(6月21日6月27日)五、主要参考资料1王绍光,夏群生,李建秋. 汽车电子学M. 北京:清华大学出版社, 2005.2(法)胡思德(Daniel ROUCHB) . 汽车车载网络(VAN /CAN /LIN)技术详解M. 北京:机械工业出版社, 2006.3吴浩珪. 汽车电子控制技术和车内局域网M. 北京:电子工业出版社, 2003.4江思敏. PCB 和电磁兼容设计M. 北京: 机械工业出版社,2006 .5陈智勇,罗诗途,田希晖,基于CAN总线技术的车辆虚拟仪表数据采集系统的设计,微计算机信息,2003年第19卷第12期:78-80.6唐志勇,暴宏志. 汽车仪表指针控制技术J . 汽车电器,2007 (7) :123.7马忠梅. ARM 嵌入式处理器结构与应用基础M.北京:北京航空航天大学出版社,2002.8周立功. ARM 微控制器基础与实战M.北京:北京航空航天大学出版社,2005.9史久根,张培仁,陈真勇. CAN 现场总线系统设计技术M.北京:国防工业出版社,2004.10饶运涛,邹继军,关勇芸. 现场总线CAN 原理与应用技术M.北京:北京航空航天大学出版社,2003.11朱建军,刘进.基于C/ OS -操作系统的汽车组合仪表的设计J.中国仪器仪表,2007 (1) :60262.12王田苗,魏洪兴. 嵌入式系统设计与实例开发M.北京: 清华大学出版社,2003.13饶云涛,邹继军,郑勇芸现场总线CAN 原理与应用技术M.北京:北京航空航天出版社,200314刘剑,沙微,姜凡CAN 总线及SAE J1939 通讯协议在汽车上的应用J机电工程技术,2006,35(10)15Steven F Barrett, Daniel J Pack. Embedded Systems Design and App licationswith the 68HC12 and HCS12 M.Publishing Houseof Electronics Industry,2006. 16 SAE J1939/21 Data link layerS.Society of Automotive Engineers,2000.17 SAE J1939 Recommended practice for a serial control and communication vehicle network S. Society of Automotive Engineers,2000.六、备注指导教师签字:年 月 日教研室主任签字: 年 月 日SY-025-BY-3毕业设计(论文)开题报告学生姓名系部汽车与交通工程学院专业、班级车辆工程07-11班指导教师姓名职称教授从事专业车辆工程是否外聘是否题目名称基于CAN总线的汽车仪表设计一、课题研究现状、选题目的和意义(一)研究现状随着汽车中电子部件数量的增加, 线束与配套接插件的数量也在成倍上升。在1955年平均一辆汽车所用线束的总长度为45米,而到了今天,平均一辆汽车所用线束的总长度却达到了6千米。线束的增加不但占据了车内的有效空间、增加了装配和维修的难度、提高了整车成本,而且妨碍整车可靠性的提高。这无形中使汽车研发进入了这样一个怪圈: 为了提高汽车的性能而增加汽车电器, 汽车电器的增加导致线束的增加, 而线束的增加又妨碍了汽车可靠性的进一步提高, 因此就要有一种新的连接技术来代替传统的线束。1、国外CAN总线发展现状德国Bosch公司CAN总线正是在这样的环境下应运而生的。CAN总线是一种现场总线,通讯线可以是一根双绞线、同轴电缆或光导纤维, 将各种汽车电子装置连接成为一个网络。它可以有效地支持分布式控制或实时控制的串行通信网络。在这个系统中,各控制装置独立运行,控制和改善汽车某一方而的性能, 同时可为其他控制装置提供数据服务。以分布式控制系统为基础构造的汽车车载电子网络系统, 由于CAN总线具有通信速率高、可靠性好、连接方便、多主站点、通讯协议简单和性价比高等突出的优点,如今,CAN总线现已成为汽车电子控制装置之间通信的标准总线, 在汽车分布式控制系统中得到了广泛的应用。同时,CAN总线得到Freescale、Intel、Philips等著名半导体器件生产厂家的广泛支持,他们纷纷推出了CAN接口芯片与直接带有CAN接口的微控制器(MCU)芯片, 如Intel公司的82527等。因此在接口芯片技术方面,CAN已遥遥领先于其他的现场总线,正逐步形成系列。到目前为至,世界上已拥有20多家CAN总线控制器芯片生产商,110多种CAN总线协议控制器芯片和集成CAN总线协议控制器的微控制器芯片。CAN总线是一种极适于汽车环境的汽车局域网, 在现代汽车设计中,CAN已经成为了必须采用的装置,奔驰、宝马、大众、雷诺汽车都将CAN总线作为控制器联网的手段。在国内汽车工业中, 一些引进车型, 如大众的帕萨特和POLO、丰田“花冠”,福特嘉年华等中档车中CAN总线技术得到了广泛的应用。但自主品牌汽车产品总线技术的应用目前基本上处于概念设计和原理样机试验阶段。目前,国外的汽车总线技术已经成熟,采用总线系统的车辆有BENZ、BMW、RORSCHE、ROLLSROYCE、JAGUAR、VOLVO等。国内完全引进技术生产的奥迪A6车型已于2000年起采用总线替代原有线束,帕萨特B5、BORA、POLO、FIATPALIO和SIENA等车型也都不同程度地使用了总线技术。此外,部分高档客车、工程机械也都开始应用总线技术。2、我国CAN总线动态总线系统对于汽车行业, 特别是对于我国的汽车行业来说还是一项新生事物,总线系统和传统汽车电器有着本质的不同。从研发、应用和维护出发, 为整车提供一个安全可靠的总线系统,以达到以“XBYWIRE”的目标还需要业界付出长期的努力。为了加速我国汽车总线技术的标准化进程, 在“十五”期间,科技部连续五年支持电动汽车总线通信协议方面的研究工作,国家汽车标准化组织也成立了商用车控制系统局域网络(CAN总线)通讯协议起草小组。其中电动汽车总线通信协议以J1939为基础,并针对电动汽车的特点进行了补充。根据目前得到的信息,商用车控制系统局域网络(CAN总线)通讯协议是完全基于J1939的,同时国内一些单位也研发出符合J1939的汽车智能零部件。02年中国首辆CAN网络系统混合动力轿车在奇瑞公司试装成功, 并进行了初步试运行, 这标志着中国在混合动力轿车项目上取得突破性进展;2008年深圳航盛公司去年推出了第一款带CAN总线的车载CD/MP3播放器, 该产品具有AM/FM收音功能、CD/MP3播放功能,带CAN BUS总线、蓝牙免提接口、中文显示及数字信号处理芯片,音质优美动听。该产品结构设计独特,获得国家发明专利。我国的CAN总线时代正在来临。(二)选题的目的、意义 在CAN 总线技术的基础上,研究和设计了一款CAN 总线汽车仪表。该仪表通过编程实现数据接收、处理以及显示。该设计利用CAN 总线将仪表纳入整个车身网络,通过对CAN 总线数据的读取、处理和显示,实时反映车辆工况。将CAN总线技术应用于汽车数字式组合仪表的开发,使仪表所需的发动机转速、车速、水温等主要信号均通过其它车载电控系统的CAN协议接口直接读取,避免现有汽车数字式仪表每个信号均采用传感器到仪表点对点的信号获取与传输方式带来汽车线束多、质量大、故障率高的不足,减少了传感器和汽车线束的数量,降低了仪表成本,提高了系统工作可靠性。二、设计(论文)的基本内容、拟解决的主要问题(一)研究的基本内容1、虚拟仪表的设计2、在硬件设计中根据系统功能选择合适的PC机、CAN总线控制器和外围电子元器件3、通过C语言编程实现CAN总线数据的收发任务(二)拟解决的主要问题1、CAN总线硬件系统的搭建2、信号产生的方法3、虚拟仪表的显示程序三、技术路线(研究方法)1、调查研究,收集资料2、CAN总线理论分析3、构架出系统功能结构图,选取合适的PC机、CAN总线控制器和外围电子元器件4、通过单片机及外围元器件实现对车速信号、转速信号、油量信号、水温信号的模拟5、用C语言对CAN总线收发程序进行编写6、LABVIEW编程,完成虚拟仪表的设计7、试验四、进度安排(1)熟悉任务书,了解相关信息,准备资料,填写开题报告:第12周(3月1日3月13日)(2)CAN总线理论分析:第34周(3月14日3月27日)(3)硬件的选择:第5周(3月28日4月3日)(4)信号处理:第67周(4月4日4月17日)(5)C语言编程:第810周(4月18日5月8日)(6)虚拟仪表的设计及程序编写:第1112周(5月9日5月22日)(7)进行试验:第13周(5月23日5月29日)(8)毕业论文修改不足:第1416周(5月30日6月19日)(9)准备答辩:第17周(6月20日6月26日)五、参考文献1李涵武,赵雨旸.汽车电器与电子技术M.哈尔滨:哈尔滨工业大学出版社, 2006.2(法)胡思德(Daniel ROUCHB).汽车车载网络(VAN/CAN/LIN)技术详解M.北京:机械工业出版社, 2006.3吴浩珪.汽车电子控制技术和车内局域网M.北京:电子工业出版社,2003.4秦贵和.车上网络技术M.北京:机械工业出版社,2006.5陈智勇,罗诗途,田希晖.基于CAN总线技术的车辆虚拟仪表数据采集系统的设计J.微计算机信息,2003,19(12):78-80.6唐志勇,暴宏志. 汽车仪表指针控制技术J.中国仪表,2008,7(11):30-32.7王绍光,夏群生,李建秋. 汽车电子学M.北京:清华大学出版社, 2005.8邬宽明编著.CAN总线原理和应用系统设计M.北京:北京航空航天大学出版社,2005.9史久根,张培仁,陈真勇.CAN现场总线系统设计技术M.北京:国防工业出版社,2004.10饶运涛,邹继军,关勇芸.现场总线CAN 原理与应用技术M.北京:北京航空航天大学出版社,2003.11朱建军,刘进.基于C/OS-操作系统的汽车组合仪表的设计J.中国仪器仪表,2007,7 (1) :60-62.12王田苗,魏洪兴. 嵌入式系统设计与实例开发M.北京: 清华大学出版社,2003.13赵方庚.现代汽车总线技术的发展J,汽车运用,2005,12(5):103-110.14刘剑,沙微,姜凡CAN 总线及SAE J1939通讯协议在汽车上的应用J.机电工程技术,2006,35(10):10-16 15Steven F Barrett, Daniel J Pack. Embedded Systems Design and App licationswith the 68HC12 and HCS12 M.Publishing Houseof Electronics Industry,2006.16SAE J1939/21 Data link layerS.Society of Automotive Engineers,2000.17SAE J1939 Recommended practice for a serial control and communication vehicle network S. Society of Automotive Engineers,2000.六、备注指导教师意见:签字: 年 月 日黑龙江工程学院本科生毕业设计摘 要 本设计致力于汽车CAN总线仪表系统的研究,深入讨论了系统的设计思想与实现方法,实现了在LabVIEW开发平台上建立基于CAN总线的虚拟仪表系统。 整个设计分为硬件系统和软件系统两部分。其中硬件系统是以飞思卡尔公司的MC9S12XS128 作为微处理器的核心。软件系统是利用C 语言编写程序实现两个CAN节点之间的通讯以及利用LABVIEW编程实现单片机与虚拟仪表之间的通讯。 系统首先构建了一个由两个CAN节点组成的最简单的CAN网络。对两个节点进行软件设计后,来实现相互之间的通讯和数据收发,同时在汽车的CAN 应用层协议基础上,上位机节点对接收的CAN报文进行处理,得到虚拟仪表各控件所对应的数据。其中,基于LabVIEW的虚拟仪表系统开发和单片机的C语言编程是本设计的重点和难点。 关键词:CAN总线;汽车仪表;LabVIEW;C语言;单片机ABSTRACTThis 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.The whole design of hardware system and software system is divided into two parts. One of the hardware system is the MC9S12XS128 as freescales company core microprocessor. A software system is using written in C language program realization of the communication between two CAN node using G language preparation and MCU and virtual instrument LABVIEW realization of the communication between.To construct a system first composed by two CAN node of the most simple CAN network. Two nodes software design, to realize mutual communication and data transceiver, meanwhile in automobile CAN application-layer protocol basis, PC node to receive message processing, CAN get virtual instrument corresponding each control the data. Among them, the LabVIEW virtual instrument based on SCM system development and the C programming language is the design of the key and difficult.Key words: CAN Bus;Automotive Instrument;LabVIEW;C Language;SCMI黑龙江工程学院本科生毕业设计目 录摘要Abstract第1章 绪论1 1.1课题研究的目的和意义1 1.2汽车仪表的发展2 1.3 CAN总线技术推动汽车仪表的升级换代2 1.4研究的基本内容3第2章 CAN总线原理5 2.1汽车总线5 2.2 CAN总线5 2.2.1 CAN总线简介5 2.2.2 CAN总线基本特点7 2.2.3 CAN总线通讯介质访问控制方式7 2.2.4 CAN总线的物理层设计8 2.2.5 CAN应用软件设计原则8 2.3汽车的其他总线8 2.3.1 LIN总线简介8 2.3.2 FLEXRAY总线简介9 2.3.3 MOST总线简介10 2.3.4汽车总线比较11 2.4汽车通讯协议11 2.4.1 SAE J1939通讯协议11 2.4.2 CAN总线协议12 2.5本章小结15第3章 汽车智能仪表系统的硬件设计16 3.1硬件系统的组成16 3.2微处理器的选择17 3.3微处理器的介绍17 3.4 MSCAN总线模块18 3.5 CAN总线节点的搭建21 3.6串行接口电路的设计22 3.7按键电路设计23 3.8电位计电路设计23 3.9本章小结24第4章 汽车智能仪表系统的软件设计25 4.1 LABVIEW简介25 4.2下位机主程序流程图28 4.3上位机流程图29 4.4 按键中断函数流程图29 4.5 CAN总线程序30 4.6 本章小结44第5章 系统测试45 5.1 整体概述45 5.2 测试46 5.3 本章小结53结论54参考文献55致谢56第1章 绪论1.1课题研究的目的和意义传统的汽车仪表只能为驾驶员提供汽车运行中必要而又少量的数据信息。然而随着汽车电子技术的发展,它已经渐渐不能满足现代汽车对于汽车仪表的功能需要。因为目前对汽车仪表的要求,已经不仅仅满足于单纯的完成指示工作了,而且还要求汽车仪表能够对实现对汽车各部件参数的监测,而达到控制汽车各种运行工况的目的。在未来,自动导航和定位系统会渐渐成为汽车仪表的必不可少的配置,而且多媒体等娱乐技术也会嵌入到汽车仪表当中。所以说,汽车仪表的发展趋势一定是向着全数字仪表的方向去发展的。仪表是汽车工作状态的信息显示中心,是驾驶员与汽车进行信息交流的平台,是保证汽车安全行驶的关键零部件之一。近年来随着微电子技术、控制技术、网络通信技术的发展,CAN总线协议在车载电控系统中得到了广泛应用,因此汽车仪表可通过CAN总线直接在总线网络上读取所需的输入信号,无须专门布置传感器,从而可使汽车仪表系统得到大大简化,同时也显著降低了仪表的成本。因此,将CAN总线通信应用于汽车仪表已成为发展的必然趋势。本设计选用16位微控制器MC9S12XS128,将仪表与微处理器、CAN总线技术融合,基于CAN总线网络的汽车仪表将代替原有的机械式仪表、电气式仪表和模拟电路电子仪表,把各参数的测量数字化,有利于和汽车其它的电子集中控制系统进行数据交换,有利于汽车集中控制系统的发展和实现,此外还使得汽车仪表的功耗、安全性、可靠性、舒适性得到更好的提高。通过调整电路参数还可适应不同种类和量程的产品需求,使得汽车仪表在结构的通用化、模块化、标准化、系列化程度大大提高,进而简化了生产工艺和制造设备。1.2汽车仪表的发展根据仪表的工作原理、内部结构和显示方式,汽车仪表的发展过程可以分为以下四个阶段1:1传统仪表阶段。这一阶段是从20世纪初到20世纪30年代,在此阶段中汽车开始安装各种仪表,如车速里程表、水温表、燃油表、机油压力表、电流表(电压表)和发动机转速表等,这些确定了现代汽车仪表板的基本结构。 这一阶段汽车上的传感器和仪表基本上都是机械式/电磁机械式的,是基于机械作用力而工作的机械式仪表,所以也称机械机芯表。这种汽车仪表功能单一,仅仅显示传感器的信息以向驾驶员提供自身的状态参数,更多的是为安全性着想,信息量少,整个仪表系统的精度低,可靠性较差,体积较大,容易使驾驶员疲劳。2电气式仪表阶段。这一阶段从20世纪40年代到50年代,仪表功能实现不再仅仅依靠机械作用力,而是基于电测原理,即通过各类传感器将被测的非电量变换成电信号加以测量,称之为电气式仪表。电气式仪表中常用的是磁电式仪表,其作用原理是永久磁铁在气隙中产生的磁场和可动线圈通入电流后,相互作用而产生的旋转力矩。磁电式仪表多用于测量电流和电压,加上变换器可以进行多种非电量的测量,如温度、压力等。磁电式仪表的性能稳定,读数精确,量限多,使用方便,适应于直流电路的精密测量和实验室中的标准测量仪表。但是其存在的最大缺陷就是随着环境温度的改变,测量误差变大。3现代电子仪表阶段,也称模拟电路电子式仪表。第3代汽车用仪表工作原理与电气式仪表基本相同,只不过是用电子器件取代原来的电气器件,其出现的时间大致在20世纪5060年代。随着集成电路技术突飞猛进的发展,这种仪表现在均采用汽车仪表专用集成电路,是国内汽车仪表目前主流产品,目前国内大多数汽车还是采用这种结构的仪表。经过多年的发展,其结构形式经历了动圈式机心和动磁式机心阶段,围绕着提高指示精度和指针平稳性,动磁式代替了动圈式2。4步进电机式全数字汽车仪表。全数字式汽车仪表在国外从80年代末就己经开始研究,在国内直到最近才开始对其重视。从其应用技术手段上看,还是电子技术范畴,也属于电子式仪表,但是信号传输方式己经从模拟信号变成数字信号,并朝着数字化、智能化、网络化、虚拟化方向发展。其应用特点是单片机与微处理器的广泛应用,同时软件程序在系统设计方案中占的比重也越来越大,内部程序的编写取代了外围电路的连接闭。与传统的模拟仪表相比较具有:使用寿命长、精度高、可靠性好、抗干扰性强等特点。1.3 CAN总线技术推动汽车仪表的升级换代随着汽车电子技术的飞速发展,将汽车工业推入了一个全新的时代。由于汽车排放、节能、安全和舒适性等使用性能不断提高,使得汽车电子控制程度也越来越高。汽车电子装置发展的一个重要趋势,是大量使用微型计算机来提高汽车的性能。目前,平均每辆车上汽车电子装置的费用约占整车成本的 20%,而且越是高档的轿车电子化程度越高。有的豪华轿车已经使用了48个单片微型计算机。汽车电子控制装置的增多,使得连接汽车电子控制装置之间导线也变得更为复杂3。因此,解决现代汽车中众多控制装置和电子仪表之间的数据交换问题,以及车载电子装置之间的数据通信问题变得越来越重要,汽车仪表技术网络化已经成为汽车工业发展的必然趋势。为解决该问题,德国 Bosch 公司在 80 年代初开发了一种串行数据总线,CAN 总线。CAN总线是一种现场总线,通讯线可以是一根双绞线、同轴电缆或光导纤维,将各种汽车电子装置连接成为一个网络4。它可以有效地支持分布式控制或实时控制的串行通信网络。在这个系统中,各控制装置独立运行,控制和改善汽车某一方面的性能,同时可为其他控制装置提供数据服务。以分布式控制系统为基础构造的汽车车载电子网络系统,由于 CAN 总线具有通信速率高、可靠性好、连接方便、多主站点、通讯协议简单和性能价格比高等突出的优点。如今,CAN总线已成为汽车电子控制装置之间通信的标准总线,在汽车分布式控制系统中得到了广泛的应用。为使不同厂家生产的零部件能在同一辆汽车中协调工作,1993 年 11 月,ISO在充分考虑工业现场环境的背景下,正式颁布了CAN国际标准,为控制器局域网标准化、规范化推广铺平了道路。同时,CAN总线得到 Motorola、Intel、Philips 等著名半导体器件生产厂家的广泛支持,他们纷纷推出了CAN接口芯片与直接带有CAN 控制器的微控制器(MCU)芯片,如 Intel 公司的82527,Philips公司的SJA1000,82C250 等。因此在接口芯片技术方面,CAN已遥遥领先于其它的现场总线,正逐步形成系列。到目前为至,世界上已拥有 20 多家 CAN总线控制器芯片生产商,110 多种 CAN 总线协议控制器芯片和集成CAN总线协议控制器的微控制器芯片。在仪表中的CAN应用,主要使用低速通讯接收汽车信息数据,可以从其他ECU接收实时的车速、转速、剩余油量以及发动机水温信号进行模拟指示;另外也可以接收如ABS、油压等报警信息提示驾驶员。CAN在汽车中另外一个重要应用是诊断(Diagnosis),有专门利用CAN通讯的诊断仪提供给维修厂,汽车各电子控制部分的诊断信息,也可以通过仪表显示。CAN总线是一种非常适于汽车环境的汽车局域网,在现代汽车设计中,CAN已经成为了必须采用的装置,奔驰、宝马、大众、雷诺汽车都将 CAN 总线作为控制器联网的手段。在国内汽车工业中,一些引进车型,如大众的帕萨特和POLO、丰田“花冠”,福特嘉年华等中档车中 CAN总线技术得到了广泛的应用。由于我国中高级车以欧洲车型为主,因此随着CAN总线技术的飞速发展,汽车仪表会进入一个全新的时代。1.4 研究的基本内容 1基于LABVIEW软件的汽车仪表设计。2对汽车仪表的硬件部分进行设计。本文选用飞思卡尔MC9S12XS128单片机为微处理器。3通过C语言编程和LABVIEW编程实现两个CAN节点之间的通信以及单片机和PC机之间的通讯。4对所设计的系统进行试验。第2章 CAN总线原理2.1汽车总线汽车总线控制是汽车发展的趋势,现代汽车的功能日新月异,而每增加一项功能都要增加相应的电气连接,使得分布车体各处的电缆趋于庞大和昂贵,且导致设计、安装、调试和维护的困难。传统的电气控制系统设计已不能满足汽车对安全性、性能和便利性的要求这种技术进展,现场总线技术的应用就是这种进展导致的必然结果。汽车总线控制是汽车产业的发展方向,要想进行总线控制,必须从软件和硬件两个方面着手,而使用嵌入式操作系统对软硬件进行管理,不论是实时性还是从可靠性来讲,都具有无可比拟的优势。现在在汽车上使用的主要总线,CAN总线、LIN总线、FLEXRAY总线以及MOST总线5。2.2 CAN总线2.2.1 CAN总线简介CAN是一种汽车产业中得到广泛使用的数据与控制通信网络,是一种极具强韧性的电气规范和协议,专门设计用于轿车或卡车中危险、常常无法预料的恶劣环境,而这种环境中有许多应用需要极高的可靠性和容错能力。1986年2月,RobertBosch公司在SAE年会上介绍了一种新型的串行总线系统CAN(Controller Area Network)。根据这个CAN协议,在1987年中期,Intel开发了首个CAN控制器82526。不久,Philips半导体也推出了82C200。这两种CAN控制器在报文过滤和控制上有许多的不同。Philips半导体的方式叫BasicCAN;Intel的方式叫FullCAN,由此后的不断发展,从而形成了FullCAN和BasicCAN两大阵营。在20世纪90年代初,Bosch CAN规范(CAN 2.0)被提交给了国际标准化组织。经过讨论,应一些法国主要汽车商的要求,包含了吸收一些VAN网(Vehicle Area Network)的内容。并于1993年11月出版了正式的CAN国际标准ISO118986。从此CAN协议被广泛的用于各类自动化控制领域。在1992年,奔驰公司首先在他们的高级轿车上使用了CAN技术。这是CAN技术在车载网络系统中的首次实际使用。CAN网络是现场总线技术的一种,它是一种架构开放、广播式的新一代网络通信协议,称为控制器局域网现场总线,是国际上应用最广泛的现场总线之一。随着汽车电子技术的不断发展,汽车上各种电子控制单元的数目不断增加,连接导线显着增加,因而提高控制单元间通讯可靠性和降低导线成本已成为迫切需要解决的问题。CAN推出之初是用于汽车内部测量和执行部件之间的数据通信。例如汽车刹车、防抱死系统、安全气囊等。机动车辆总线和对现场总线的需求有许多相似之处,即能够以较低的成本、较高的实时处理能力在强电磁干扰环境下可靠地工作。CAN总线可广泛应用于离散控制领域中的过程监测和控制,特别是工业自动化的底层监控,以解决控制与测试之间的可靠和实时数据交换。CAN总线能有效支持分布式控制或实时控制的串行通信网络,具有抗干扰性强和使用可靠等优点,现在广泛应用于汽车工业、航空工业和工业控制等自动化领域,如分布式环境监测系统、温室环境监控系统、变电站变监测系统等,CAN总线可在同一网络上连接多种不同功能的传感器(如位置,温度或压力等)。总线上的每个CAN组件都分配有一个软件赋值的ID。总线在逻辑上等效于线与功能,可以被任意一个试图发送数据的组件拉低。发送时脉是由发送组件产生的,因此所有接收组件必须重建时脉和数据位。组件之间传送的数据遵循标准的CAN通讯格式,其中包括目的组件ID、控制和数据信息负荷以及CRC。最终指定的接收器将把总线拉低以确认收到一个完整的、CRC正确的讯框,然后释放总线使之回到空闲状态。每个试图发送的组件在发送之前首先要检查总线是否处于空闲状态。如果出现多个组件试图同时发送的情况,并且总线上数据出错时它们必须相互侦听,先后退一段时间然后再尝试发送。CAN总线是一种串行多主站控制器局域网总线,是一种有效支持分布式控制或实时控制的串性通讯网络。CAN总线的通信介质可以是双绞线,同轴电缆或光导纤维,通信速率可达1Mbps/40m,通信距离可达10Km/40Kbps。由于其通信速率高,可靠性好以及价格低廉等特点,使其特别适合中小规模的工业过程监控设备的互连和交通运载工具电气系统中。现代汽车典型的控制单元有电控燃油喷射系统,电控传动系统,防抱死制动系统(ABS),防滑控制系统(ASR),废气再循环系统,巡航系统和空调系统,车身电子控制系统(包括照明指示和车窗,刮雨器等)。2.2.2 CAN总线基本特点CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对数据的成帧处理,用户可在其基础上开发适应系统实际需要的应用层通信协议7。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块编码,采用这种方法可使网络内节点个数在理论上不受限制,还可使不同的节点同时收到相同的数据。CAN采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,有效避免了总线冲突,节省了总线冲突仲裁时间;CAN采用短帧结构,数据段长度最多为8个字节,每一帧的有效字节数为8个(CAN技术规范2.0A),数据传输时间短,受干扰的概率低,重新发送的时间短,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN的每帧数据都有CRC效验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境中使用;CAN节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其它操作不受影响;CAN是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行。通信网络上任意节点均可以在任意时刻主动地向总线上其它节点发送信息,可以点对点、一点对多点(成组)及全局广播集中方式传送和接受数据;CAN总线提供高速数据传送,通信介质可以是双绞线、同轴电缆或光导纤维,在短距离(40m)条件下具有高速(1Mbit/s)数据传输能力,而在最大距离10000m时具有低速(5kbits/s)传输能力,采用不归零码(NRZ-Non-Return-to-Zero)编码解码方式,并采用位填充(插入)技术。2.2.3 CAN总线介质通讯访问方式CAN采用了的3层模型:物理层、数据链路层和应用层。CAN支持的拓扑结构为总线型。传输介质为双绞线、同轴电缆和光纤等。采用双绞线通信时,速率为1Mbps/40m,50Kbps/10Km,结点数可达110个。CAN的通信介质访问为带有优先级的CS-MA/CA。采用多主竞争方式结构,网络上任意节点均可以在任意时刻主动地向网络上其它节点发送信息,而不分主从,即当发现总线空闲时,各个节点都有权使用网络。在发生冲突时,采用非破坏性总线优先仲裁技术,当几个节点同时向网络发送消息时,运用逐位仲裁原则,借助帧中开始部分的表示符,优先级低的节点主动停止发送数据,而优先级高的节点可不受影响的继续发送信息,从而有效地避免了总线冲突,使信息和时间均无损失。例如,规定0的优先级高,在节点发送信息时,CAN总线作与运算。每个节点都是边发送信息边检测网络状态,当某一个节点发送1而检测到0时,此节点知道有更高优先级的信息在发送,它就停止发送信息,直到再一次检测到网络空闲。CAN的传输信号采用短帧结构(有效数据最多为8个字节)和带优先级的CS-MA/CA通信介质访问控制方式,对高优先级的通信请求来说,在1Mbps通信速率时,最长的等待时间为0.15ms,完全可以满足现场控制的实时性要求。CAN突出的差错检验机理,如5种错误检测、出错标定和故障界定;CAN传输信号为短帧结构,因而传输时间短,受干扰概率低,这些保证了出错率极低。另外,CAN节点在严重错误的情况下,具有自动关闭输出的功能,以使总线上其它节点的操作不受其影响。CAN的通信协议主要有CAN总线控制器完成。CAN控制器主要由实现CAN总线协议部分和微控制器接口部分电路组成。通过简单的连接即可完成CAN协议的物理层和数据链路层的所有功能,应用层功能由微控制器完成。CAN总线上的节点即可以是基于微控制器的智能节点,也可以是具有CAN接口的I/O器件8。2.2.4 CAN总线物理层设计 CAN总线协议对物理层没有严格定义,给使用者较大的灵活性,同时也给设计者带来了困难。CAN总线物理层的设计原则是:针对CTXO的输出状态显性、隐性,总线应具有两种不同电平,接收端呈现(显性和隐性)两种状态。不要求总线必须是数字逻辑电平,只要是能够呈现两种电平(显性和隐性)的模拟量,满足上述设计原则就可以。CAN控制器芯片的片内输出驱动器和输入比较器可编程,它可方便地提供多种发送类型,诸如:单线总线、双线总线(差分)和光缆总线。它可以直接驱动总线,若网络的规模比较大,节点数比较多,需要外加总线驱动元件,以增大输出电流。用CAN收发器作为CAN控制器和物理总线之间的接口,提供向总线的差动发送能力和对CAN控制器的差动接收能力。一般在驱动芯片和CAN控制器之间加入光电耦合器,增加抗干扰能力。CAN总线的速度将由光电耦合器的速度决定。比如:用4N27光耦,因为它的响应速度比较慢,CAN网络的位速度只能达到几十Kbit/S。如果采用6N137高速光电耦合器,CAN网络速度可以达到和电阻网络驱动时的速度一样。2.2.5 CAN应用软件设计原则CAN控制器其内部硬件实现CAN总线物理层和数据链路层的所有协议内容,有关CAN总线的通信功能均由CAN控制器自动管理执行。CAN控制器对于CPU来说,是以确保双方独立工作的存储影像外围设备出现的。CAN控制器的地址域由控制段和报文缓存器组成,在初始化向下加载期间,控制段可被编程以配置通信参数。CAN总线上的通信也通过此段由CPU控制,被发送的报文必须写入发送缓存器,成功接收后,CPU可以从接收缓存器读取报文,然后释放它,以备下次使用。对于在片的CAN控制器,它与CPU之间的接口一般借助于4个特殊寄存器:CAN地址寄存器、数据寄存器、控制寄存器、状态寄存器。对于单独的CAN控制器,MCU可以通过其地址总线对其寄存器直接寻址,就像MCU对一般外部RAM寻址一样。通过对这些寄存器编程操作,可很方便控制CAN控制器完成通讯功能。2.3汽车其他总线2.3.1 LIN总线简介LIN总线是用于车体控制应用的新兴标准,用于汽车中分布电子系统的新型低成本串行通讯系统,它是现有汽车多重传输网络的补充。LIN瞄准一些低端应用,在这些应用中每个节点的通讯成本都必须大大低于CAN而且不需要CAN的高性能、高带宽和多功能。LIN相对于CAN的成本节省主要是由于采用单线传输、硅片中硬件或软件的低实现成本和无需在从属节点中使用石英或陶瓷谐振器。LIN总线是一种串行通信网络,可以将开关、显示器、传感器和执行器等简单控制设备连接起来,主要用于汽车中的分布式电子控制系统。LIN采用单主机/多从机的总线拓扑结构(没有总线仲裁),仅使用一根12V信号总线。主节点包含主任务和从任务,从节点只包含从任务。它不需要专门的片上通讯模块,采用标准串行通信接口USART,速率可达20kbps,总线长度不大于40m。 LIN总线作为一种辅助的总线网络,在不需要CAN总线的优越性能的场合,相比于CAN总线具有更高的性价比LIN瞄准一些低端应用,在这些应用中每个节点的通讯成本都必须大大低于CAN而且不需要CAN的高性能、高带宽和多功能。LIN是关于汽车本地互连网络的一个总体通讯概念。该规范包含协议的定义、物理层以及用于开发工具和应用软件的接口定义。对于不需要控制器局域网络的高带宽和多种功能的应用,LIN实现了一种具有成本效益的智能传感器和执行器的通讯方式。这种通讯是基于串行通讯接口(SCI)、数据格式、单宿主/多从概念、单线12V总线和没有稳定时间基的节点的时钟同步。低端多路通讯的汽车标准不久前才出现。LIN协会开发了一个串行低成本通讯概念和开发环境的标准,采用这个标准,汽车制造商及其供应商能以非常经济的方式创建、实现和处理复杂的分层化多路复用系统。LIN规范包含传输协议、传输介质以及用于开发工具和应用软件的接口。LIN在硬件和软件方面支持网络节点的互操作性并具有可预测的电磁兼容(EMC)行为。这个概念可以实现无缝的开发和设计工具链并提高了开发速度和网络的可靠性。LIN瞄准一些低端应用,在这些应用中每个节点的通讯成本都必须大大低于CAN而且不需要CAN的高性能、高带宽和多功能。LIN相对于CAN的成本节省主要是由于采用单线传输、硅片中硬件或软件的低实现成本和无需在从属节点中使用石英或陶瓷谐振器。这些优点是以较低的带宽和受局限的单宿主总线访问方法为代价的。2.3.2 FLEXRAY总线简介FlexRay标准在车内通信网络中具有较大优势和广泛的潜在应用机会。在FlexRay协议制定5年后,该协议规范的第二版(V2.1)在2005年春季发布。由于新技术能实现经济高效的新应用,整个行业对这个标准产生了浓厚的兴趣,FlexRay提供了传统车内通信协议所不具备的大量特性,包括:210Mbps的数据速率,FlexRay支持两个通信信道,每个信道的速度达到10Mbps。与CAN协议相比,将可用带宽提高10-40倍,具体大小取决于配置和对比模式的不同。FlexRay中使用的访问方法是基于同步时基的。该时基通过协议自动建立和同步,并提供给应用。时基的精确度介于0.5us和10us之间(通常为1-2us)。知道消息的到达时间,通信是在不断循环的周期中进行的,特定消息在通信周期中拥有固定位置,因此接收器已经提前知道了消息到达的时间。到达时间的临时偏差幅度会非常小,并能得到保证。冗余和非冗余通信为了增强系统的可用性,FlexRay提供了冗余传输消息的选项。消息能够冗余传输,但并不是所有消息都必须冗余传输,否则会导致带宽的过多损耗。在FlexRay协议的开发过程中,关注的主要问题是灵活性。不仅提供消息冗余传输或非冗余传输两种选择,系统还可以进行优化,以提高可用性(静态带宽分配)或吞吐量(动态带宽分配)。用户还可以扩展系统,而无需调整现有节点中的软件。同时,还支持总线或星型拓扑。FlexRay提供了大量配置参数,可以支持对系统进行调整,如通信周期的持续时间、消息长度等,以满足特定应用的需求。FlexRay适合于很多应用领域,替代CAN总线在数据速率要求超过CAN的应用中,人们现在同时使用了两条或多条CAN总线。FlexRay是替代这种多总线解决方案的理想技术。骨干网络FlexRay具有很高的数据速率,因而非常适合于汽车骨干网络,用于连接多个独立网络。实时应用,分布式控制系统用户可以提前知道消息到达时间,消息周期偏差非常小,这使得FlexRay成为具有严格实时要求的分布式控制系统的首选技术。面向安全的系统FlexRay本身不能确保系统安全,但它具备大量功能,可以支持面向安全的系统(如线控系统)设计。2.3.3 MOST总线简介MOST是汽车业合作的成果,是车内多媒体通讯的一个协议,但是不具备正式的标准,最初构想始于90年代中期,作为宝马公司、戴姆勒克莱斯勒(DaimlerChrysler)公司、Harman/Becker公司(音响系统制造商)和OasisSilicon Systems公司之间的一项联合。(1998年),参与各方建立了一个自主的实体,即MOST公司,由它控制总线的定义工作。MOST定义标准OSI模型的所有七层,对汽车多媒体环境作了高度的优化,对要处理的主要流量类型规定了信号类别。在物理层上传输介质本身是有塑料保护套、内芯为1mm的PMMA(聚甲基丙烯酸甲酯)光纤,OEM供应商可将一束光纤像电线一样捆成光缆。光纤传输采用650nm(红色)的LED发射器。MOST的定义是非常普通的,允许采用多种拓扑结构,包括星形和环形,大多数汽车装置都采用环形布局。一个MOST网络中最多可以有64个结点。一旦汽车接通电源,网络中的所有MOST结点就全部激活。MOST结点在通电时的默认状态是直通(Pass-throught),即进入的数据从接收器直接传送至发器,以保持环路的畅通。MOST的数据传送使用512b的帧,以及16个帧的块。帧的重复率为44.1kHz每帧22.67ms,每个帧内除了前导码和其它内部管理位以外,还包含有同步、异步和控制数据。总线是完全同步的,可将网络内的任何设备指定为主设备,其它所有结点都从主设备处获得自己的时钟。网络完全是即插即用的,当上电或有连接改变时,主结点上保持着一个所连设备的中心注册处。2.3.4 汽车总线比较LIN为CAN的补充,两者一般结合使用,与CAN总线相比,LIN总线控制方式的成本较低是最大的优势;从高容错性的比较而言,CAN总线的目标应用是汽车的高速和多路数据通信。目前,CAN仍然是汽车电子控制中可靠性最高的总线,Flexray是它的升级,但是目前成本还很高,不能实际应用。MOST主要用于音视频流传输的基于光纤的总线,不能用于控制9。LIN专门应用于低端系统,作为CAN的辅助网络或子网络。在不需要CAN总线的带宽和多功能的场合,比如智能传感器和制动装置之间的通信,使用LIN总线可以大大节省成本。未来整个网络将是CAN、LIN、MOST三网合一的整体。MOST负责音视频,CAN负责重要的电子控制单元,如发动机、ABS、安全气囊等,LIN负责次要的电子控制单元,如门窗、车灯等。FlexRay能够把所有系统连接在一起,同时为汽车系统以一个整体而不是分散的多个系统工作提供了机会。使用FlexRay后,汽车的安全系统将从这一全新的整合中获益,从而显著提高汽车的安全性能。FlexRay将会逐渐取代CAN而成为未来车内网络的主流技术。2.4 汽车通讯协议2.4.1 SAE J1939通讯协议SAE J1939通信协议使汽车电子产品的开发变得简捷、快速。所有在SAEJ1939规范中定义的通讯装置都可用该软件来实现,从而使汽车电子产品开发者能够集中精力进行自己应用软件的开发。这种基于OSI层模型的协议软件具有标准组件的结构,这种结构最适于移植到特殊的目标系统。例如,访问CAN控制器通过一个适当的CAN接口来实现,该接口的功能包含在一个单独的模块之中。如果需要的话,该软件能够很容易地移植到不被支持的CAN控制器中。另外,通过配置文件,SAE J1939通信协议栈能够被精确地移植,完全适合特定应用的需要,因此要求这种通信协议栈完全由C源代码编写。所提供的源代码、文档、例子程序使用户能够很快地应用SAE J1939软件进行工作。所有的源代码、例子程序都能够在参考平台上直接运行(重型车和客车组合仪表)。通常接入目标硬件能够在几天内实现,而借鉴例子程序,汽车电子产品开发者很容易完成自己的应用程序。J1939协议栈完全实现SAE J1939协议,协议栈处理了J1939网络中涉及到的所有低端细节,汽车电子产品开发只需要从应用层的角度实现应用即可。J1939协议栈实现OSI标准中定义的数据链路层及传输层,实现J1939协议为传输报文所附加的两层10。协议栈的源代码采用标准C语言编写。通信协议栈配套有完整的开发文档,可帮助汽车电子产品开发者迅速理解整套代码。协议栈包括数据链路层、传输层、网络管理层、过滤层。数据链路层:CAN控制芯片实现了几乎全部的数据链路层内容,但J1939对该层进行了一些修改,如对ID号重新进行了定义,J1939只支持扩展帧模式。传输层:这是最复杂的一层,需要根据J1939协议实现接收和发送报文的算法规则。本层有两种传输模式,广播通讯(TP-BAM)及连接管理(TP-CM)。J1939通信协议栈需要完全支持这两种传输模式。网络管理层:该层不属于OSI标准的一部分,但对于采用J1939协议通讯的设备很重要。网络管理层支持所有的J1939网络管理功能,如地址声明及地址请求。用户所要实现的J1939设备类型对这一层的具体实现方法是有影响的,J1939协议定义了不同的设备类型以及该类型设备与网络连接的具体操作标准。过滤层:该层允许用户应用程序根据报文的PGN或目的地址进行接收滤波。将J1939协议栈转换到应用硬件平台,将J1939协议栈成功应用在需要的硬件平台上,汽车电子产品开发只需要完成硬件抽象层(HAL)程序的编写,该程序由用户采用的CAN物理器件决定11。协议栈将向目标重型车和客车组合仪表提供完善的文档信息,以帮助用户完成HAL层到数据链路层的连接。议栈的主要功能:传送和接收特殊的请求信息(已知的和未知的),处理大规模数据块的传输协议(面向信息和用户的),同时通讯到若干个可能的节点,支持结点地址动态定义的地址需求处理目标硬件所需资源为一个自由定时器中断,以实现协议的时间控制和CAN控制器的中断控制。通过配置文件,SAE J1939协议软件能够被精确地向多种MCU硬件移植,完全适合特定应用的需要。通信协议栈源代码完全由标准ANSIC代码编写,可以和多种商业用实时操作系统配套使用。CAN控制器的编程和激活,启动时地址声明(Address Claiming)的传输,在启动和以后操作过程中对地址声明报文的响应,支持命令地址(Commanded Address)参数群(Parameter group),支持请求(Reques)参数群,联接节点数据传输块的独立处理,广播报文块的独立处理,自动传输和接收应用特定PG(application-specific PGs)循环接收的超时监控。2.4.2 CAN总线协议CAN总线协议最早是由Bosch公司在20世纪80年代初为汽车应用而开发的。在CAN的概念形成之后,CAN所带来的收益很快吸引了很多其它工业领域的应用,使之成为小型分布式实时系统所需的联网方法之一。 最新的CAN协议2.0版有两个不同的部分12:A部分(标准格式)和B部分(扩展格式)。A部分由以下三层组成:(1)对象层;(2)传输层;(3)物理层。对象层负责处理信息,比如选择传输或接收信息,作为传输层和CPU上运行的应用程序之间的接口。传输层确保消息符合协议,而物理层实际发送和接收消息。B部分包括数据链路层和物理层。数据链路层依次由逻辑链路(LLC)子层和中间访问子层(即MAC子层)组成。LLC子层、MAC子层以及物理层与CAN 2.0版A部分中的对象层、传输层和物理层一一对应。图2.1显示了CAN 2.0中A、B部分的协议层。图2.1 CAN 2.0A&B协议的ISO/OSI参考模型CAN协议中独有的特点是缺少消息的起始和目标地址,而是使用了内嵌在每个消息中的标识符。这意味着一个节点可以在不改变网络上任何已有软件和硬件的情况下可连接到网络上,并能使多个节点可以执行同一个消息,这样就提供了多信道广播(multicasting)的能力。网络上的任何一个成员都可以在网络上传输和请求消息。协议包括了一个直接仲裁技术和复杂的错误检测机制。为了节约能源,协议同时支持睡眠模式和唤醒模式的节点操作。在CAN网络总线上有四种不同的消息(帧):(1)数据帧;(2)远程帧;(3)错误帧;(4)过载帧。数据帧包括多个子域,如图2.2所示。图2.2 CAN数据帧开始域由一个单独的支配位(逻辑0)组成。接收节点用这个位来同步数据的接收。仲裁域包括一个消息标识数字,接收节点用这个标识数字来决定接受或者拒绝一个特定的数据帧,这个标识有11位或者29位,前者对应于标准格式,后者对应于扩展格式。仲裁域也包括一个远程传输请求(RTR)位来区别一个数据帧和远程帧。对于数据帧,这个位必须为支配(逻辑低),而远程帧则必须为退让(逻辑高)。控制域用以字节为单位的四个位指定数据的长度。数据的长度用4个不同的位表示,允许数据长度为18个字节。数据域包含实际的传输信息。对于每个字节,最高位先传。循环冗余校验(CRC)域用来测试接收数据的有效性。CRC域以CRC分隔符(退让位)结束。应答域(ACK)包含了一个ACK槽发送一个支配位表示。ACK分隔符位是一个单独的退让位。帧的最后一个域由7个退让位组成。接收点用远程帧来请求重新传输一个数据帧。除了没有数据域,远程帧很像数据帧。仲裁域中的RTR位把远程帧和数据帧区别开来,远程帧的RTR域是退让位,而数据帧是支配位。错误帧表明了CAN总线上发生了错误,如图2.3所示。每个错误帧由一个错误标记和一个错误分隔符组成。错误标记域包含主动错误标记,即6个支配“0”位(由于CAN总线上的其它节点也能发送错误位,支配位的数量能最多达到12位);或包含被动错误标记,即6个退让“1”。错误分隔域由8个退让位组成。图2.3 CAN错误帧过载帧和错误帧格式相似,如图2.4所示,过载标记由6个支配位组成。过载标记位产生的条件是:(1)接收点不能在分配的时间内处理有效帧而需要额外的时间;(2)在帧间空间发现了支配位。通过至少三个退让位的帧间空间把CAN总线上的数据帧和远程帧与其它帧分隔开来。过载分隔符由8个退让位组成。图2.4 CAN过载帧错误处理在消息传输过程中可能发生错误。当一个主动(发送消息)或者被动(接受消息)节点探测到错误,相应的节点就会发送前文描述的错误帧。若一个主动节点发送一个错误消息,错误标记成为主动错误标记;若一个被动节点发送一个错误标记,相应的错误标记就成为被动错误标记。有5种可能的错误会造成发送错误帧:(1)位错误;(2)填充错误;(3)CRC错误;(4)构成错误;(5)应答错误。当一个传输节点探测到一个传输到总线上的位和受监控的同一位不一致时就会发生位错误。当一个消息域中6个连续的支配位或者6个连续的退让位中包含错误时发生位填充错误。当接收方计算的CRC值和收到的CRC值不相符时发生CRC错误。当一个帧的子域包含无效应位时发生构成错误。最后,当ACK槽中的支配位不存在时发生应答错误。位定时如图2.5所示,CAN总线中的每个位时间段分为4个部分:(1)同步段;(2)传播时间段;(3)相位缓冲段1;(4)相位缓冲段2。一个位的逻辑状态在相位缓冲段1之后采样。同步段包含了一个上升沿跳变电压,用来与总线上的节点同步。传播时间段协调总线上的发送/接收延迟和信号传播时间。相位段1和相位段2可以变长或变短,用于总线上的位协调。图2.5 标称比特时间段2.5本章小结本章介绍了CAN总线汽车仪表的相关理论知识和协议规范。其中详细描述了CAN总线协议以及在应用时应重点注意的事项,为后续进行CAN总线仪表硬件电路的开发设计奠定了基础。 第3章 汽车仪表系统的硬件设计在数字电子式的汽车仪表中,单片机是最主要的器件。汽车仪表的绝大部分外围器件都是为单片机服务的。所以,单片机的功能决定了汽车仪表的功能。现在,世界上有很多大公司为汽车仪表提供专用芯片。本文选用飞司卡尔公司的MC9S12XS128芯片作为主芯片,同时汽车仪表上除了主芯片之外还有很多电子器件和功能芯片。本章将重点阐述这款芯片在应用到汽车仪表上时所涉及到的具体用法,以及电子器件与主芯片的电路连接方法以及功能芯片的外围电路设计。3.1硬件系统的组成显示(PC机) 串行通讯微控制器msCAN模块 TxCAN RxCANPCA82C250 CAN_H CAN_L 仪表传感器 下位机msCAN模块 TxCAN RxCANPCA82C250 CAN_H CAN_L CAN总线 图3.1 硬件系统组成3.2微处理器的选择因为单片机的片上资源非常宝贵,所以汽车仪表的芯片大都是专用芯片。针对汽车仪表的使用环境,世界上各大芯片生产商都争相推出功能强大、价格合理的汽车仪表专用芯片。为汽车仪表提供芯片的供应商很多,有美国飞司卡尔(Freescale)公司的16位MC9S12系列芯片;美国Micronas公司的16位CDC16xyF系列芯片;富士通公司的16位MB90F428芯片;NEC电子公司的32位V850E/Dx3芯片;德州仪器(TI)的32位TMS470芯片;瑞萨公司的基本型H8S/2282以及高端的H8SX/1544系列芯片;意法半导体(ST)公司的M29W320芯片13。从上面的介绍中可以知道,在整个装置的硬件系统中,微处理器是最为核心的部分,所以它的选择工作就显得十分重要。在本设计中,选用了美国飞思卡尔(Freescale)生产的 MC9S12 系列的微处理器。飞思卡尔半导体是全球领先的半导体公司,它的产品在汽车半导体产品市场占有量位居世界领先地位,并且已经广泛应用在了奔驰、宝马、福特、现代和通用汽车之中。显然,飞思卡尔的微处理器已经经过了市场检验,所以这款芯片对于完成本论文所需要的任务来说,更加显得绰绰有余,所以更无需为它的工作性能、可靠性等因素提出担心。从另一方面来讲,要选择一款芯片,就必须考虑它的经济性和实用性。由于飞思卡尔公司的芯片功能强大,说明文挡丰富,而且价格适中,所以最终选中MC9S12XS128芯片作为本文设计用的主芯片。3.3 微处理器的介绍本次设计采用的微控制器为MC9S12XS128。MC9S12XS128是Freescale公司推出的S12系列微控制器中的一款增强型16位微控制器。其集成度高,片内资源丰富,接口模块包括SPI、SCI、IIC、A/D、PWM等,它不仅在汽车电子、工业控制、中高挡机电产品等应用领域具有广泛的用途,而且在FLASH存储控制及加密方面也有很强的功能14。MC9S12XS128微控制器采用增强型16位S12CPU,片内总线时钟最高可达40MHz片内资源包括8K RAM、128K Flash、6K EEPROM。SCI、SPI、PWM串行接口模块。脉宽调制(PWM)模块可设置成8路8位,可宽范围的选择逻辑时钟频率。它还提供两个8路10位精度A/D转换器,控制器局域网模块(CAN),增强型捕捉定时器,并支持背景调试模式。如图3.2所示,MC9S12XS128系统结构大致可以分为MCU核心和MCU外设两部分。图3.2 MC9S12XS128系统结构图1MCU核心该部分包括MCU的的三种内存(FLASH、RAM、EEPROM);多电压调整器,包括数字电路和模拟电路电源电压;具有单线背景调试接口(BDM)和运行监视功能的增强S12CPU;程序内存的页面模式控制;具有终端识别、读写控制、工作模式等。2MCU外设S12外设部分包括:A/D转换器,增强型定时与捕捉模块(ECT),串行接口SPI、CAN等接口是许多微控制器所没有的。3.4 msCAN总线模块msCAN 模块是飞思卡尔 MC9S12 系列单片机中直接集成的 CAN 总线控制器。它是完全按照 CAN2.0A/B 的协议标准所设计开发的,支持标准帧和扩展帧格式数据的发送,同时也支持远程帧的传送。对于CAN总线的通讯速率可以允许用户编程设置,最大可以达到 1Mbps。msCAN 模块设计了3个具有局部优先级的发送缓冲器和5个拥有FIFO(先入先出)机制的接收缓冲器。在接受数据的时候,用户可以灵活的对接受信息进行数据选择过滤。当msCAN模块做出发送,接受等一系列操作的时候,允许引起相应的中断。图3.3是msCAN模块的系统结构图,从直接用户的角度,并不需要了解其内部工作的详细机理,只需要从应用的角度上去理解其详细功能即可。从图3.3中,对msCAN模块直观的感觉就是:它可以直接应用系统总线时钟,也可以外接振荡器时钟。它一共可以引起 4 种类型的中断,而且与外界联系的引脚有两个:RxCAN(接受信息)和TxCAN(发送信息)。图3.3 MSCAN模块结构图1传输单元由于CAN总线对实时性的要求很高,总希望任何一个CAN总线节点在连续发送数据的时候,并不会轻易释放总线。当前一个数据发送完毕之后,下一个待发送的数据也能及时去竞争总线。也就是说,希望任何一个CAN总线节点只有在失去优先级仲裁的情况下,才会释放总线。显然,如果 msCAN模块只设计有一个发送缓冲区的话,当一个CAN总线数据发送完毕的时候,由于 CPU 将下一帧数据装载到发送缓冲区中的过程必须需要一定的系统时间,所以这样很难能够保证CAN总线的下一帧数据在开始传送之前,就完成数据装载的过程。所以,即使该节点待发送的数据拥有着最高的优先级,也有可能迫使它释放总线。所以msCAN为了解决这一问题,就设计了3个发送缓冲区的结构。但是这3个发送缓冲区,却只对用户开放了一个公共的访问地址。并且如果这3个发送缓冲区中均装载好待发送的数据的时候,msCAN 可以允许用户自行决定它们发送的内部优先次序。图 3.4 说明了发送缓冲器的结构。图3.4 发送缓冲器结构2接收单元msCAN 模块设计有5个拥有 FIFO(先入先出)机制的接收缓冲区。与发送缓冲区相类似,它也只提供给用户一个公共的访问地址。这样的设计简化了用户对于接收数据的操作。图 3.5 说明了接收缓冲器的结构。图3.5 接收缓冲器结构3msCAN模块寄存器在内存中的映射地址在这里,映射地址是采用相对地址来表示的,寄存器地址等于基地址加相对地址,其中PWM模块的基地址为$0140,是一个MCU级地址,相对地址是模块级地址。msCAN在内存中占据了64个字节。表3.1是msCAN模块寄存器组织情况。 表3.1 msCAN寄存器的组织相对地址组织情况$_00控制寄存器12字节$_0B$_0C保留2字节$_0D$_0E错误计数器2字节$_0F$_10标识符过滤器16字节$_1F$_20输入缓存16字节$_2F$_30输出缓存16字节$_3F3.5 CAN总线节点的搭建 图3.6 CAN总线节点的搭建 在上一小节曾经提到过,msCAN 模块与外界接触的引脚只有 RxCAN(接受信息)和 TxCAN(发送信息)这两个引脚。但并不是说明,将这两个引脚连接到 CAN 总线上就实现了 CAN 总线节点的搭建。实际上,在 msCAN 与 CAN 总线之间还需要安装有一个 CAN 收发器,来作为从 msCAN 控制器到 CAN 物理总线的接口。msCAN 模块的作用是将想要发送到 CAN 总线的数据打包成 CAN 总线协议规定的数据格式。同时,它也可以将接受到的 CAN 格式的数据进行解读。而 CAN 收发器的作用则是将符合 CAN 总线格式的数据转化成实际的电信号,也就是转化成 CAN 总线上CAN_H 和CAN_L 两个时刻互补的信号。同时,也可以将 CAN 总线上接收到的信号,传送到 msCAN 模块。在 CAN 总线的终端,需要分别安装有两个 120 欧姆的电阻,它们实际上就是数据传递的终端,作用是避免数据传输终了反射回来,产生反射波而使数据遭到破坏。这样一个 CAN 总线节点就可以搭建完毕,其模型可以参见图3.7。在本论文中,选用PCA公司的PCA82C250收发器。该芯片作为 msCAN 控制器和物理总线之间的接口,可以为 CAN 总线提供不同的发送性能,同时也可以为 CAN控制器提供不同的接收性能。芯片本身的电磁辐射很低,而且设计有多种保护措施,工作性能可靠。图3.7是PCA82C250收发器在CAN总线节点的电路图。 图3.7 CAN总线节点的硬件电路图3.6 串行接口电路的设计每一台 PC 机上,都配置有标准的串行通讯端口COM1 和COM2。但是它们是遵循RS-232标准设计的,这是由美国电子工业协会制定的通讯标准。它规定了-3V 至-15V的电压为逻辑“1”,而3V 至15V 的电压为逻辑“0”。所以,它显然与单片机SCI串行接口的逻辑电压值并不兼容。所以要想成功实现PC机与单片机之间的串行通讯,还需要使用额外的电子芯片来解决电压转换的问题。在本文中,选用了 MAX232 芯片来处理电压转换的问题。这是一款为解决 RS232标准兼容问题而专门设计的芯片。它可以将单片机发送过来的0V和5V的电压信号,转化成相应RS-232标准的+10V和-10V的电压信号。而且它只需要 5V的电压供电,即可完成这一系列电压转换的工作。图3.8是串行接口电路图。 图3.8 串行接口电路图3.7 按键电路设计利用四个按键来分别控制发动机转速和档位的增加和减小。按下KEY1键使发动机转速表增加100r/min,同理按下KEY2键使发动机转速表减小100r/min。按下KEY3键使汽车增加一个档位,按下KEY4键使汽车减少一个档位。车速随着发动机转速的变化而变化。图3.9 按键电路图3.8 电位计电路设计水温和油量的输入信号为模拟电压信号,通过芯片AD模块的转换,将05V的电压信号转换为具体数据发送到总线上。图3.10 电位计电路图3.9本章小结本章主要讲述了CAN总线汽车仪表硬件部分的设计。首先从整体组成部分开始讲述,然后给出了硬件系统所选用的微处理器。接着又分别从 CAN总线节点和串行接口以及按键和电位计几方面具体讲述了硬件系统的详细组成结构。 第4章 汽车智能仪表系统的软件设计硬件设计完成之后,系统的主要功能将依赖于系统软件来实现。系统能否正常可靠地工作,除了硬件的合理设计外,与完善的软件设计是分不开的。汽车虚拟仪表系统的上位机软件部分将采用虚拟仪器技术目前比较流行、比较成熟的开发软件 LabVIEW 来开发,并配合硬件实现 CAN 信息报文的采集、处理,最终实现汽车仪表的部分功能。为了保证软件的通用性和可移植性,下位机和上位机的通信采用 C 语言编写,因为 C 语言编写的软件易于实现模块化,生成的机器代码质量高、可读性强、移植好。本文在CODEWARRIOR5.0版本的集成开发环境下进行编译连接。4.1 LabVIEW简介LabVIEW 是美国 NI 公司开发的一套基于 G 语言(Graphics Language,图形化编程语言),专为数据采集与仪器控制、数据分析和数据表达而设计的开发软件。符合国际标准 IEEE488.2 接口驱动程序,适合于用户组建小型的测试系统和较简单的虚拟仪器或者用于大系统中某个分系统的编程。它增强了用户在标准的计算机上配以高效经济的硬件设备来构建自己的仪器系统的能力。将 LabVIEW 与一般的数据采集以及仪器设备加以组合,就可以设计出虚拟仪器并将其应用于许多领域,从而摆脱传统的仪器功能的限制15。LabVIEW具有丰富的库函数供用户调用。以 LabVIEW8.6为例,功能模板包括各种功能的子模板,每个子模板中又含有该类型的控制命令、函数、变量等。能充分满足用户的不同要求。LabVIEW 的特色在于拥有功能超强且庞大的分析函数库,足以与专业数学分析套装软件相匹敌,这些函数库包括了统计、回归分析、线性代数、信号处理演算法则、时域频域演算法则、数字滤波器、三维图形处理等。LabVIEW 提供了强大功能调试工具:单步执行、设置断点和探针(查看数据流)。单步执行,如果要使框图程序一个节点一个节点地执行,则按下单步执行按钮从而进入单步执行模式16。这样下一个将要执行的节点就会闪烁,指示它将被执行。再次点击单步按钮,程序将会变成连续执行方式。探针从Tools 工具模板中选择探针工具将探针置于该连线上,可以用来查看运行过程中数据流在某根连线时的数据。断点,使用断点工具可以在程序的某一地方终止程序运行,用探针或者单步方式查看数据。LabVIEW的帮助系统使得用户尽快掌握编程方法,此外LabVIEW提供的例子程序也加快了开发进程。LabVIEW 是一种直觉式图形程序语言,编程人员并非要以写传统程序的方法来建立自己的虚拟仪表,而是可以按照直觉的方法建立前面板人机界面和方块图程序,便可以完成编程过程。LabVIEW 拥有流程图程序设计语言的专利权,使用户免于传统程序语言线性结构的困扰,因为 LabVIEW 的执行顺序是依方块图间数据的传递来决定的,并不像传统文字式程序语言必须逐行地执行。因此用户能设计出可同时执行多个程序的流程图。也就是说,LabVIEW 是一套多工系统,可同时执行多个 LabVIEW 子程序。LabVIEW 应用程序的设计包括前面板及程序框图。前面板是用户可以见到的,类似传统仪器的操作面板,利用工具模板从控件模板中添加输入控制器输出指示器,控制器和指示器种类可选择。程序框图是支持虚拟仪器实现其功能的核心。对程序框图的设计涉及节点、数据端口和连线的设计。连线代表数据走向,节点则是函数、VI 子程序、结构或代码接口。利用 LabVIEW 提供的这些强大的功能函数,用户可以很方便地进行虚拟仪器的设计。图4.1是用LabVIEW绘制的虚拟仪表。图4.1 汽车虚拟仪表前面板 图4.2 汽车虚拟仪表流程图 单片机与LabVIEW进行通讯时需要设置参数。串口波特率:9600bit/s,数据位:8位,校验位:无,停止位:1位。发送数据的格式如下表:表4.1 串口数据传输结构0XAA启始标志字节2油量字节3水温字节4发动机转速低字节字节5发动机转速高字节字节6车速字节7档位0XBB结束标志4.2 下位机主程序流程图开始初始化各模块设置CAN参数计时是否达到1秒计算期望车速否 计算实际发动机转速和实际车速写入缓冲是修改车速信号采集油量信号和水温信号处理油量信号和水温信号并写入缓冲区发送CAN数据 图4.3 下位机主程序流程图发送数据之前,首先初始化各模块,之后定义标识符和数据等信息。数据帧定义如下: 表4.2 数据帧结构DATA0油量/取值范围(050)/单位(L)DATA1水温/取值范围(0140)单位()DATA2 发动机转速低8位取值范围(08000)/单位(r/min)DATA3 发动机转速高8位DATA4车速/取值范围(0240)/单位(km/h)DATA5档位/取值范围(05)/单位(档)DATA6无定义DATA7无定义4.3 上位机流程图开始初始化各模块判断是否有新数据串口发送数据是否 图4.4 上位机流程图4.4 按键中断函数流程清除中断标志位 判断按下的按键 KEY1 KEY2 KEY3 KEY4档位减少1档位增加1 发动机转速减小100转发动机转速增加100转 退出中断修改发动机信号指示灯显示档位 图4.5 中断函数流程图4.5 CAN总线程序发送程序:#include #include derivative.h #include CAN.h #define LEDCPU PORTK_PK4#define LEDCPU_dir DDRK_DDRK4#define BUZZ PORTK_PK5#define BUZZ_dir DDRK_DDRK5#define BUS_CLOCK 32000000 /总线频率 #define OSC_CLOCK 16000000 /晶振频率#define KEY1 PTIH_PTIH3#define KEY2 PTIH_PTIH2#define KEY3 PTIH_PTIH1#define KEY4 PTIH_PTIH0#define KEY1_dir DDRH_DDRH3#define KEY2_dir DDRH_DDRH2#define KEY3_dir DDRH_DDRH1#define KEY4_dir DDRH_DDRH0#define LED PORTB#define LED_dir DDRB#define ID 0x0001 /发送标识符#define data_len_TX 6 /发送数据长度unsigned char k;unsigned char senddata8 = 0,0,0,0,0,0,0,0; /发送的数据struct can_msg msg_send, msg_get;unsigned char datain=0;unsigned int AD_in1,AD_in0;unsigned char youliang,shuiwen; /油量和水温unsigned char dangwei=0; /档位unsigned int engine_speed=0; /发动机转速设定值unsigned int vehicle_speed=0; /车速设定值unsigned int vehicle_speed_qiwang=0; /车速设定期望值unsigned int engine_speedfinal=0; /发动机转速最终值unsigned int vehicle_speedfinal=0; /车速最终值unsigned int engine_PWM=0;unsigned int vehicle_PWM=0;unsigned int timeT0=0;unsigned int timeT1=0;unsigned int timecycle=0;/初始化锁相环 void INIT_PLL(void) CLKSEL &= 0x7f; /set OSCCLK as sysclkPLLCTL &= 0x8F; /Disable PLL circuitCRGINT &= 0xDF; #if(BUS_CLOCK = 40000000) SYNR = 0x44;#elif(BUS_CLOCK = 32000000) SYNR = 0x43; #elif(BUS_CLOCK = 24000000) SYNR = 0x42;#endif REFDV = 0x81; /PLLCLK=2OSCCLK(SYNR+1)/(REFDV+1)64MHz ,fbus=32MPLLCTL =PLLCTL|0x70; /Enable PLL circuitasm NOP;asm NOP;while(!(CRGFLG&0x08); /PLLCLK is Locked alreadyCLKSEL |= 0x80; /set PLLCLK as sysclk/初始化ECT模块 void initialize_ect(void) TSCR1_TFFCA = 1; / 定时器标志位快速清除 TSCR1_TEN = 1; / 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器) TIOS = 0xf0; /指定所有通道为输出比较方式 TCTL1 = 0x00; / 后四个通道设置为定时器与输出引脚断开 TCTL4 = 0x05; / 0和1捕捉上升沿 TIE = 0x03; / 使能0和1通道捕捉中断 TSCR2 = 0x07; / 预分频系数pr2-pr0:111,时钟周期为4us, TFLG1 = 0xff; / 清除各IC/OC中断标志位 TFLG2 = 0xff; / 清除自由定时器中断标志位/初始化PWM void init_pwm(void) PWMCTL_CON01= 1; /联结通道0,1为16位的PWM PWMCTL_CON23= 1; /联结通道2,3为16位的PWM PWMPOL_PPOL1= 1; /通道01的极性为高电平有效 PWMPOL_PPOL3= 0; /通道23的极性为低电平有效 PWMPRCLK = 0x55; /A时钟和B时钟的分频系数为32,频率为1MHz PWMSCLA = 25; /SA时钟频率为20KHz PWMSCLB = 25; /SB时钟频率为20KHz PWMCLK =0x0a; /通道01用SA时钟作为时钟源,通道23用SB时钟作为时钟源 PWMCAE = 0x00; /脉冲模式为左对齐模式 PWMPER01 = 0; /通道01的周期 PWMPER23 = 0; /通道23的周期 PWMDTY01 = 0; /通道01的占空 PWMDTY23 = 0; /通道23的占空 PWME_PWME1 = 1; /使能通道01 PWME_PWME3 = 1; /使能通道23/初始化按键 void init_key(void) KEY1_dir =0; /设置为输入 KEY2_dir=0; KEY3_dir=0; KEY4_dir=0; PPSH = 0x00; /极性选择寄存器,选择下降沿; PIFH = 0x0f;/对PIFH的每一位写1来清除标志位; PIEH = 0x0f; /中断使能寄存器;/延时函数 void delay(void) unsigned int i;for(i=0;i50;i+) asm(nop); /初始化AD模块 void INIT_AD(void) ATD0CTL2 = 0xc0; /启动A/D模块,快速清零,禁止中断 delay(); ATD0CTL1_SRES=2; /选用12位模数转换 ATD0CTL3 = 0x88; /每次只转换一个通道 ATD0CTL4 = 0x07; /AD模块时钟频率为2MHz/起动AD转换 unsigned int AD_capture(unsigned char s) unsigned int AD_data; switch(s) case 1: ATD0CTL5 = 0x01; /转换AD01 while(!ATD0STAT2_CCF0); AD_data = ATD0DR0; break; case 0: ATD0CTL5 = 0x00; /转换AD00 while(!ATD0STAT2_CCF0); AD_data = ATD0DR0; break; return(AD_data);/按键中断函数 #pragma CODE_SEG _NEAR_SEG NON_BANKEDinterrupt void PTH_inter(void) if(PIFH != 0) /判断中断标志 PIFH = 0xff; /清除中断标志 BUZZ=1; if(KEY1 = 0) /按键1按下 if(engine_speed=0) engine_speed=700; else if(engine_speed700) engine_speed-=100; engine_PWM=600000/engine_speed; /计算发动机转速对应的PWM的周期 PWMPER01= engine_PWM; PWMDTY01= engine_PWM/2; if(KEY3 = 0) if(dangwei0) dangwei-=1; switch(dangwei) case 0:LED=0XFF;break; case 1:LED=0XFE;break; case 2:LED=0XFC;break; case 3:LED=0XF8;break; case 4:LED=0XF0;break; case 5:LED=0XE0;break; /发动机脉冲捕捉中断 interrupt void captureT0(void) unsigned int temp; if(TFLG1_C0F = 1) TFLG1_C0F = 1; temp = TC0; timeT0+=1; /累计脉冲数量/车速脉冲捕捉中断 interrupt void captureT1(void) unsigned int temp; if(TFLG1_C1F = 1) TFLG1_C1F = 1; temp = TC1; timeT1+=1;#pragma CODE_SEG DEFAULT/主函数 void main(void) DisableInterrupts; INIT_PLL(); initialize_ect(); INIT_CAN0(); INIT_AD(); init_key(); init_pwm(); LEDCPU_dir=1; LEDCPU=0; LED_dir=0XFF; LED=0XFF; BUZZ_dir=1; BUZZ=0; EnableInterrupts;/填写报文内容 msg_send.id = ID; for(k=0;k=5) timecycle=0; engine_speedfinal=timeT0*30; /根据每秒的脉冲数反退出发动机转速,发动机一转产生两个脉冲。 msg_send.data2=engine_speedfinal%256; /写入CAN总线的发送缓冲区 msg_send.data3=engine_speedfinal/256; timeT0=0; vehicle_speedfinal= timeT1/2; /计算车速 msg_send.data4=vehicle_speedfinal; /写入CAN的缓冲区 msg_send.data5=dangwei; timeT1=0; if(dangwei=0) vehicle_speed_qiwang=0; else switch(dangwei) case 1: vehicle_speed_qiwang=engine_speed/45/4; /1档传动比4 break; case 2: vehicle_speed_qiwang=engine_speed*2/45/5; /2档传动比2.5 break; case 3: vehicle_speed_qiwang=engine_speed*2/45/3; /3档传动比1.5 break; case 4: vehicle_speed_qiwang=engine_speed/45; /4档传动比1 break; case 5: vehicle_speed_qiwang=engine_speed*5/45/4; /5档传动比0.8 break; if(vehicle_speedvehicle_speed_qiwang&vehicle_speed=2) vehicle_speed-=2; else; vehicle_PWM=10000/vehicle_speed; /生成车速信号。 PWMPER23= vehicle_PWM; PWMDTY23= vehicle_PWM/2; AD_in0= AD_capture(0); /采集油量的值 AD_in1= AD_capture(1); /采集水温的值 youliang= AD_in0/35; /计算油量 if(youliang50) youliang=50; shuiwen =AD_in1/26; /计算水温 if(shuiwen140) shuiwen=140; msg_send.data0=youliang; msg_send.data1=shuiwen; if(!MSCAN0SendMsg(msg_send) /发送过程出现错误 BUZZ=1; /蜂鸣器响 else LEDCPU=LEDCPU; /指示灯闪烁 接收程序:#include /* common defines and macros */#include derivative.h /* derivative-specific definitions */#include CAN.h #define LEDCPU PORTK_PK4#define LEDCPU_dir DDRK_DDRK4#define BUS_CLOCK 32000000 /总线频率#define OSC_CLOCK 16000000 /晶振频率#define BAUD 9600 /串口波特率#define ID 0x0001 /发送标识符#define data_len_TX 8 /发送数据长度unsigned char k;struct can_msg msg_send, msg_get;unsigned char datain=0;unsigned char i;unsigned char datasend8=0xAA,0,0,0,0,0,0,0XBB;/初始化锁相环 void INIT_PLL(void) CLKSEL &= 0x7f; /set OSCCLK as sysclk PLLCTL &= 0x8F; /Disable PLL circuit CRGINT &= 0xDF; #if(BUS_CLOCK = 40000000) SYNR = 0x44; #elif(BUS_CLOCK = 32000000) SYNR = 0x43; #elif(BUS_CLOCK = 24000000) SYNR = 0x42; #endif REFDV = 0x81; /PLLCLK=2OSCCLK(SYNR+1)/(REFDV+1)64MHz ,fbus=32M PLLCTL =PLLCTL|0x70; /Enable PLL circuit asm NOP; asm NOP; while(!(CRGFLG&0x08); /PLLCLK is Locked already CLKSEL |= 0x80; /set PLLCLK as sysclk/初始化ECT模块 void initialize_ect(void) TSCR1_TFFCA = 1; / 定时器标志位快速清除 TSCR1_TEN = 1; / 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器) TIOS = 0xff; /指定所有通道为输出比较方式 TCTL1 = 0x00; / 后四个通道设置为定时器与输出引脚断开 TCTL2 = 0x00; / 前四个通道设置为定时器与输出引脚断开 TIE = 0x00; / 禁止所有通道定时中断 TSCR2 = 0x07; / 预分频系数pr2-pr0:111,时钟周期为4us, TFLG1 = 0xff; / 清除各IC/OC中断标志位 TFLG2 = 0xff; / 清除自由定时器中断标志位/初始化SCI void INIT_SCI(void) SCI0BD = BUS_CLOCK/16/BAUD; /设置SCI0波特率为9600 SCI0CR1 = 0x00; /设置SCI0为正常模式,八位数据位,无奇偶校验 SCI0CR2 = 0x08; /允许发送数据,禁止中断功能 /串口发送函数 void SCI_send(unsigned char data) while(
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:基于CAN总线的汽车仪表设计【汽车类】【电路图】【优秀】
链接地址:https://www.renrendoc.com/p-351383.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!