汽车发动机模拟器的设计与实现
摘要
随着现代汽车制造业的发展,人们对汽车发动机智能化控制的要求越来越高,从而使得发动机智能控制的核心——ECU变得越来越重要。在传统的ECU研发过程中,研发人员需要将ECU在实际的汽车发动机上进行测试之后才能够出厂。这就使得ECU的开发周期长,成本高。本课题设计了一种汽车发动机的模拟器,它能够模拟汽车发动机实际工作时产生的各种信号,就相当于一台虚拟的汽车发动机。将该发动机模拟器与ECU相连,就能够测试ECU的有关性能,从而避免了将ECU装在实际发动机上进行测试的麻烦,进而缩短了ECU的开发时间,节约了开发成本。
本课题的硬件设计分为三大块,分别是核心板电路设计、液晶板电路设计和信号接口面板电路设计。在这三部分中,又包括了电源模块设计、处理器模块设计、信号发生电路模块设计、CAN通信模块设计等电路设计。软件部分包括核心板程序设计、液晶板驱动设计和CAN通信驱动设计。
本模拟器经过调试,能够很好地模拟发动机产生的各类信号,有效地协助了某ECU厂商进行新款ECU的开发。
关键词:发动机模拟器,STM32芯片,CAN通信,触摸屏,嵌入式
作者:王磊
指导老师:曲波
I
Abstract Design and Implementation of Automotive Engine Simulator
Design and Implementation of Automotive Engine
Simulator Abstract
With the development of modern auto industry,people make higher requirement for the intelligent control of automotive engine.So the core of intelligent control——ECU is becoming more and more important.In the process of traditional ECU development,R&D engineer need to test the ECU in the actural automotive engine before it leave factory.This research and development way makes the period of ECU development long and the cost high.This time we will design an automotive engine simulator.It can simulate all kinds of signals of the automotive engine when it is working.In other words,it is equivalent to a virtual automotive engine.Connecting the simulator with the ECU can test the performance of the ECU.The method avoids the trouble of testing ECU on actual automotive engine.It shortens the development time and development cost of ECU.
The hardware design of the simulator is divided into three parts:the circuit design of the core panel,the circuit design of LCD panel,and the circuit design of signal interface panel.The three parts include the design of power module,the design of processor module,the design of signal generating circuit,the design of CAN bus communication circuit.The sofeware part includes the design of the core panel program,the design of the LCD driver program,and the design of CAN communication driver program.
Atder testing ,the simulator can simulate the signals of automotive engine well.It has helped an ECU manufacturer develop a new ECU.
Keywords:Simulator,STM32,CAN Communication,Touch Screen,ARM
Written by:Wang Lei Supervised by:Qu Bo
II
汽车发动机模拟器的设计与实现 目录
目录
第一章 绪 论 ................................................................................................................... 1
1.1引言........................................................................................................................... 1 1.2课题研究背景........................................................................................................... 2 1.3课题研究的目标和主要工作................................................................................... 2 1.4 论文的结构安排...................................................................................................... 3 第二章 系统总体设计和相关通信协议简介 ..................................................................... 5
2.1系统总体设计方案................................................................................................... 5 2.2相关通信协议简介................................................................................................... 6
2.2.1 SPI总线协议 ............................................... 6 2.2.2 UART总线协议 .............................................. 7 2.2.3 CAN总线协议 ............................................... 8 2.3本章小结................................................................................................................. 10 第三章 系统硬件设计 ....................................................................................................... 11
3.1核心板电路设计..................................................................................................... 12
3.1.1核心板电源模块电路 ........................................ 12 3.1.2 核心板处理器模块电路...................................... 14 3.1.3 发动机转速信号和油泵转速信号发生电路...................... 16 3.1.4 空气流量计诊断信号和正时行程传感器信号发生电路............ 17 3.1.5 空气流量计流量信号和车速传感器信号发生电路................ 18 3.1.6 ECU输出信号检测电路 ...................................... 21 3.1.7 CAN通信模块电路 .......................................... 22 3.1.8 USB转串口模块电路 ........................................ 23 3.2液晶板电路设计..................................................................................................... 24
3.2.1液晶板电源模块电路 ........................................ 25 3.2.2液晶板处理器模块电路 ...................................... 25 3.2.3触摸屏控制器电路 .......................................... 27 3.2.4 编码器电路................................................ 28 3.3信号接口面板电路设计......................................................................................... 29
目录 汽车发动机模拟器的设计与实现
3.3.1可变电压量信号模块设计 .................................... 29 3.3.2可变电阻量信号模块设计 .................................... 31 3.3.3开关量信号模块设计 ........................................ 32 3.4 本章小结................................................................................................................ 33 第四章 系统软件设计 ................................................................................................... 34
4.1 核心板程序设计.................................................................................................... 34
4.1.1 模拟器核心信号程序设计.................................... 35 4.1.2 ECU反馈信号检测程序设计 .................................. 39 4.2 液晶板驱动程序设计............................................................................................ 40 4.3 CAN通信模块驱动程序设计 ............................................................................... 42 4.4 本章小结................................................................................................................ 46 第五章 模拟器核心信号测试 ....................................................... 错误!未定义书签。
5.1 发动机转速信号ENGSPIN测试 ......................................... 错误!未定义书签。 5.2 油泵转速信号SPIN测试 ..................................................... 错误!未定义书签。 5.3 空气流量计诊断信号HFMREF测试.................................. 错误!未定义书签。 5.4 正时行程传感器信号TIMIN测试 ...................................... 错误!未定义书签。 5.5 空气流量计流量信号HFMSIG测试 .................................. 错误!未定义书签。 5.6 车速传感器信号VSPIN测试 .............................................. 错误!未定义书签。 第六章 总结与展望 ..................................................................................................... 47
6.1 课题总结................................................................................................................ 47 6.2 对未来的展望........................................................................................................ 47 参考文献 ............................................................................................. 错误!未定义书签。 附录1 模拟器核心板PCB图 .......................................................... 错误!未定义书签。 附录2 模拟器液晶板PCB图 .......................................................... 错误!未定义书签。 附录3 模拟器信号接口面板PCB图 .............................................. 错误!未定义书签。 附录4 汽车发动机模拟器实物图 .................................................... 错误!未定义书签。 致谢 ..................................................................................................................................... 67
汽车发动机模拟器的设计与实现 第一章 绪论
第一章 绪 论
1.1引言
随着现代汽车制造业的发展,人们对汽车发动机智能化控制的要求越来越高,这就使得汽车发动机智能控制的核心——ECU的重要性日益凸显。
ECU是电子控制单元(Electronic Control Unit)的英文缩写,它主要由微处理器(CPU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器以及整形、放大等电路组成。它的主要功能是根据发动机工作时传输过来的各项参数自动调节发动机的工作,使发动机达到最佳的工作状态。ECU先接收汽车发动机上各种传感器传来的信号,对信号进行模数转换和放大,然后传送给微处理器。微处理器根据设定好的程序对输入信号进行处理,然后根据信号处理的结果输出相应的指令给发动机,调节发动机的工作,以使发动机达到比较理想的工作状态。因此,ECU被称作是发动机的“大脑”。
正因为ECU是如此的重要,所以世界上各大汽车零部件制造商都在不断地开发和生产ECU,博世、德尔福、电装等公司都是著名ECU制造商。图1-1是某公司的一款ECU。
图1-1 某公司的一款ECU
1
第一章 绪论 汽车发动机模拟器的设计与实现
1.2课题研究背景
在传统的ECU开发模式下,必须先由系统工程师利用功能开发工具进行功能的开发和建模;然后需要软件工程师将建好的模型通过编码转换为十六进制的机器码,并将机器码写入ECU;之后由软件工程师和硬件工程师利用开发工具依次进行软件测试、系统测试和标定以及功能测试;最后需要匹配工程师利用匹配工具在实车上对ECU进行测试,并将出现的问题反馈给开发部门重新修改和完善[1]。这样的开发模式存在诸多的不足之处,其中最大的缺陷就是必须等到ECU在实车上运行之后才能发现ECU设计中存在的一些问题。这就使得ECU的开发周期较长,开发成本较高。
1.3课题研究的目标和主要工作
针对上述ECU开发过程中存在的不足之处,本课题的目标是设计一款用来辅助ECU开发的汽车发动机模拟器。该模拟器能够模拟汽车发动机工作时的各种信号,并可接收和显示ECU的反馈信号,它就相当于一台虚拟的汽车发动机。使用该模拟器开发ECU,可以不必到实车上进行测试,能够有效地缩短开发周期,节约开发成本。
本课题所设计的模拟器是以某ECU开发商订单中要求的性能为标准。在订单中,该公司提供了所要模拟的汽车发动机信号的基本类型和取值范围,如表1-1所示:
表1-1 汽车模拟器性能指标要求
零部件/设备 发动机转速传感器 油泵转速传感器 正时行程传感器 空气流量计流量信号 空气流量计诊断信号 车速传感器 进气压力传感器 EGR升程传感器 排气压差传感器 油门踏板(两路) 信号类型 差分信号,正弦波(频率0~5KHz可调) 差分信号,正弦波(频率0~1.5KHz可调) 方波(固定频率250Hz,占空比可调) 方波(频率1.5KHz~15KHz可调) 方波(频率17KHz~19KHz可调) 方波(频率0~1KHz可调) 电压(0~5V可调) 电压(0~5V可调) 电压(0~5V可调) 电压(0~5V可调,可以选择联动模式或者分2
汽车发动机模拟器的设计与实现 第一章 绪论
别调整模式,油门信号A=2×油门信号B) 进气温度传感器 水温传感器 燃油温度传感器 流量计温度传感器 空挡开关 热敏电阻(0~100KΩ可调) 热敏电阻(0~100KΩ可调) 热敏电阻(0~100KΩ可调) 热敏电阻(0~100KΩ可调) 开关量(接通时接地或12V电源,断开时没有连接) 空调开关 开关量(接通时接地或12V电源,断开时没有连接) 离合器开关 开关量(接通时接地或接12V电源,断开时没有连接) 刹车开关 开关量(接通时接地或接12V电源,断开时没有连接) 本课题的主要工作是实现上述所有的技术指标,并且提供友好的人机交互界面,以期有效地协助该公司的研发人员进行ECU的开发工作。
课题的设计工作可以分为硬件设计和软件设计两部分。 硬件设计部分主要包括以下内容: 1、核心板硬件电路设计; 2、液晶板硬件电路设计; 3、信号接口面板电路设计。 软件设计部分主要包括以下内容: 1、核心板程序设计; 2、液晶板驱动程序设计; 3、CAN通信程序设计。
1.4 论文的结构安排
第一章 绪论,阐述了本课题的研究背景和研究的意义,以及课题的研究目标和主要工作。
第二章 简述系统的总体设计方案和本课题所涉及的通信协议。
第三章 系统硬件设计,详细介绍了核心板电路、液晶板电路、信号接口面板电
3
第一章 绪论 汽车发动机模拟器的设计与实现
路等模块的电路设计;
第四章 系统软件设计,详细介绍了核心板程序设计、液晶板驱动程序设计和CAN通信程序设计等软件设计;
第五章 模拟器核心信号测试,对模拟器输出的几个核心信号进行了测试,并给出了测试的结果;
第六章 总结与展望,对本课题完成的工作和存在的不足进行总结,对下面的工作进行了展望。
4
汽车发动机模拟器的设计与实现 第二章 系统总体设计和相关通信协议简介
第二章 系统总体设计和相关通信协议简介
2.1系统总体设计方案
系统的总体设计框架如图2-1所示,该模拟器主要包括核心信号产生模块、液晶显示模块和信号接口面板等三个部分。核心信号产生模块负责产生汽车发动机工作时的核心信号,例如发动机转速信号、油泵转速信号、正时行程信号等。另外它还负责处理由ECU反馈回来的控制信号,并把相关反馈信号的参数值发送给液晶显示模块显示出来。液晶显示模块是用户与模拟器的交互界面,用户可以通过液晶显示模块知道当前核心信号的参数值是多少,并能够根据自己的需要对信号参数值进行调节。信号接口面板主要负责把核心信号产生模块所产生的发动机核心信号引出来,连接到ECU上,对ECU进行测试。此外信号接口面板还能够模拟较为简单的一些发动机信号,例如进气压力信号、水温信号等。
模拟器信号接口面板ECU液晶显示模块核心信号产生模块图2-1 模拟器系统结构框图
核心信号产生模块包括电源模块、处理器模块、发动机转速信号和油泵转速信号发生模块、正时行程信号和空气流量计诊断信号发生模块、车速信号和空寂流量计流量信号发生模块、USB转串口模块、CAN通信模块等。
液晶显示模块包括电源模块、处理器模块、液晶控制模块、编码器模块、CAN通信模块等。
信号接口面板包括可变电压量信号发生模块、可变电阻量信号发生模块、开关量
5
第二章 系统总体设计和相关通信协议简介 汽车发动机模拟器的设计与实现
信号发生模块等。
2.2相关通信协议简介 2.2.1 SPI总线协议
SPI是串行外围设备接口(Serial Peripheral Interface)的缩写。它是由摩托罗拉公司开发的一种同步、高速、全双工的通信总线。该总线大量用在与FLASH、ADC、EEPROM和显示驱动器之类的慢速外设器件通信中。
SPI是一种串行同步通信协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通信,从而完成数据交换。SPI接口由MOSI(主出从入)、MISO(主入从出)、SCK(串行时钟)、NSS(从属选择、即CS从使能信号)组成。NSS信号决定了唯一能够与主设备通信的从设备,主设备通过产生唯一时钟来发起通信。通信时,数据由MOSI口输出,由MISO口输入。在时钟的下降沿或上升沿数据从MOSI输出后,在下一个来临的上升或下降沿便由MISO读入。这样经过连续的8次或者16次时钟脉冲之后,就能完成8位或者16位的数据传输[4]。
在SPI传输中,数据的发送和接收是同步进行的。数据传输的时钟基于来自主处理器的时钟脉冲。摩托罗拉没有定义任何通用SPI的时钟规范。但是最常用的设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数。这两个参数的四种不同组合决定了SPI接口的四种不同的数据传输时序,如图2-2所示。
6
汽车发动机模拟器的设计与实现 第二章 系统总体设计和相关通信协议简介
图2-2 SPI时序图
在本课题中,主要利用STM32处理器通过SPI总线实现对DDS器件AD9833和液晶驱动芯片TSC2046的控制。
2.2.2 UART总线协议
UART是英文Universal Asynchronous Receiver/Transmitter的缩写,即通用异步接收/发送装置。UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可实现全双工传输和接收。
UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是5~8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶,UART就在数据位后面加上奇偶位。奇偶位可用来帮助进行错误校验。
在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。UART也产生额外的信号来指示发送和接收的状态。例如,如果产生一个奇偶错误,UART就置位奇偶标志。
本课题所采用的STM32处理器芯片,具有USART模块,可以进行同步或异步两种通信方式。在本课题的串口调试中,我们采用异步通信的方式传送数据。数据开始传送时,以bit为单位逐位传送,其格式为1位停止位、8位数据位、1位奇偶校验位和1位停止位。没有奇偶校验时的字符格式如图2-3所示。
7
第二章 系统总体设计和相关通信协议简介 汽车发动机模拟器的设计与实现
图2-3 无奇偶校验时的字符格式
其中各位的意义如下:
起始位:先发送一个逻辑“0”的信号,表示字符传输的开始。
资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或者奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据结束的标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备都有自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正同步时钟的机会。适用于停止位的位数越多,不同时钟同步的容忍度越大,但是数据的传输速率同时也越慢。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送[5]。
在本课题中,UART串口通信采用异步模式,在设计中主要应用在核心板的调试测试部分。
2.2.3 CAN总线协议
CAN是控制器局域网络(Controller Area Network)的简称,是由研发和生产汽
8
汽车发动机模拟器的设计与实现 第二章 系统总体设计和相关通信协议简介
车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准,是国际上应用最广泛的现场总线之一。
在当今世界的汽车产业中,出于对低成本、低公害、方便性、舒适性的要求,各大汽车制造商开发出了各式的汽车电子控制子系统。各个子系统之间要进行通信。但在各个子系统之间通信所用的数据类型和对通信可靠性的要求不同,很多情况下子系统之间的通信由多条总线构成,这样就增加了线束的数量。为了适应“减少线束数量”、“利用多个LAN,进行大数据量的高速通信”的要求,德国的博世公司于1986年开发出了面向汽车的CAN通信协议。后来,CAN通信协议通过ISO11519及ISO11898进行了标准化,现在它是欧洲汽车网络的标准协议。
CAN总线使用差分电压传送信号,两条信号线称为CAN_H和CAN_L,它们的数值为两种互补逻辑数值:“显性”或“隐性”,分别用来表示逻辑“0”和“1”。隐性状态下,CAN_H和CAN_L都被固定为平均电压电平2.5V,两者之间的电压差约为0;显性状态下,CAN_H和CAN_L的电平分别为3.5V和1.5V,两者的差分电压约为2V,如图2-4所示。
图2-4 CAN总线的状态表示
CAN总线控制器根据CAN_H和CAN_L上的电位差来判断总线电平,总线电平要么为显性电平,要么为隐性电平。发送方通过使总线电平发生变化,将消息传送给接收方。
CAN总线协议具有以下特点:
CAN可实现全分布式多机系统,且无主从之分,网络上任意一个节点均可以
在任意时刻、主动地向其他节点发送信息,通讯方式灵活。利用这一特点,可以方便地构成多机备份系统。
9
第二章 系统总体设计和相关通信协议简介 汽车发动机模拟器的设计与实现
CAN可以点对点、一点对多点及全局广播几种方式传送和接收数据。 CAN采用非破坏性总线优先级仲裁技术,当2个节点同时向网络上发送消息
时,优先级低的节点主动停止发送数据,而优先级高的节点可以不受影响继续发送信息,有效地避免了总线冲突。按节点类型分成不同优先级,可以满足不同的实时要求。
CAN支持4类报文帧:数据帧、远程帧、出错帧、超载帧。采用短帧结构,
每帧有效字节数为8个。这样传输时间短,受干扰的概率低,重发时间短,且具有良好的检错效果。
CAN采用循环冗余校验CRC及其他校验措施,保证了极低的信息出错率。 CAN节点具有自动关闭功能,当节点错误严重时,自动切断与总线的联系,
这样可以不影响总线的正常工作。
CAN总线用户接口简单,编程方便,很容易构成用户系统[6]。
在本课题中,CAN通信主要应用在核心板和液晶板之间,用于两者之间的信息交互。
2.3本章小结
本章介绍了汽车发动机模拟器的总体设计框架及其模块化的硬件架构,对本课题中所涉及到的SPI、UART和CAN等三个通信协议做了简要的介绍。
10
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
第三章 系统硬件设计
本课题的硬件部分主要由核心信号发生模块、液晶显示模块和信号接口面板等三部分组成。整个汽车模拟器的外形设计为一个金属框架的旅行箱,如图3-1所示。
图3-1 汽车模拟器外形图
打开箱子,模拟器可分为箱盖与箱体两部分,箱盖可以从箱体上取下,便于用户对面板进行操作。模拟器的操作面板位于箱体部分的上部,是一块铝合金板,面板上包括电源部分、输入信号部分和输出信号部分,如图3-2所示。
图3-2 模拟器操作面板
11
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
信号接口面板和液晶显示模块位于操作面板的背面,核心信号产生模块被固定在箱体的内部。
因为模拟器内部的器件都是以12VDC及以下的电压作为供电电压,所以模拟器设有两种电源的输入接口,可分别使用220V市电或外接12V直流电源。若使用220V市电,则模拟器内置的一个220VAC转12VDC的明纬SP-320-12开关电源为模拟器提供12V的直流电压。
下面分别介绍各模块的硬件电路设计。
3.1核心板电路设计
核心板部分共有八个模块,分别是电源模块、处理器模块、发动机转速信号和油泵转速信号发生模块、空气流量计诊断信号和正时行程传感器信号发生模块、空气流量计流量信号和车速传感器信号发生模块、ECU反馈信号检测模块、CAN通信模块、USB转串口模块,整个核心板的结构如图3-3所示。
图3-3 核心板结构图
下面将对每一模块分别加以介绍。
3.1.1核心板电源模块电路
在核心板中,各种芯片所需要的供电电压共有三种:12V、±5V和3.3V。因此,
12
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
核心板的电源模块设计也必须要满足这三种电压的需要。
前面提到,模拟器内部的开关电源或外接的直流电源可以提供12V的直流供电电压,可将此12V的电源直接给额定电压为12V的芯片供电。
核心板上有两个差分放大器EL5170需要±5V电压进行供电,因此需要设计一个电压转换电路将12V转换为±5V。本课题选择A1205-T-1W作为电压转换芯片,电路如图3-4所示。
图3-4 直流12V转±5V电路
A1205-T-1W电压转换芯片具有体积小、效率高、温度特性好、稳定性高等特点。在该芯片的输入端与地之间和输出端与地之间都接了一个电容来改善瞬态响应和其稳定性能。为确保该芯片能够高效可靠地工作,使用时要求其输出最小负载不能小于额定负载的10%,因此在该芯片的正负输出端和地之间都加了一个200Ω的电阻来保证该芯片的最小输出。我们在芯片正负输出端的附近各留下了一个测试点,便于对芯片输出电压的准确值进行测试。
核心板上还有一些芯片是需要3.3V的供电电压,因此我们还要设计一个将12V转换为3.3V的电路模块。考虑到器件的耐压范围、工作温度范围、负载电路电流相对较小等因素后,12V转换为3.3V的电压转换电路我们选用了NCP1117芯片。NCP1117相对于其他稳压器芯片来说,有较高的输出电压精度、较好的温度稳定性。NCP1117是一款正电压输出的低压降三端线性稳压器,最大压差仅有1.2V,并且没有最低负载要求,可提供超过1A的电流输出,在较大的工作温度范围内输出电流仍可达800mA。NCP1117有8个(1.5V、1.8V、2.0V、2.5V、2.85V、3.3V、5V、12V)
13
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
固定电压输出型号,另有可调电压输出版本,可以通过2个外部电阻实现1.25~18.8V的输出电压调节范围。
本次设计选用NCP的3.3V固定电压输出型号,电路的具体链接方式如图3-5所示。
图3-5 直流12V转3.3V电路
我们在NCP1117的输入端和输出端各接一个10uF的钽电容来改善瞬态响应和其稳定性能。
3.1.2 核心板处理器模块电路
核心板的处理器模块采用了ST公司的STM32F103RET6微处理器。该处理器是ST公司推出的全新STM32互联型系列微控制器中的一款性能较强的产品,它使用高性能的ARM Coretex-M3内核,此芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性。STM32F103RET6拥有丰富的资源,其有如下特点:
1、拥有32位的ARM Cortex-M3内核,最高工作频率可达72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。
2、片上集成512K字节的闪存存储器和高达64K字节的SRAM。带4个片选的灵活的静态存储器控制器。支持CF卡、SRAM、PSRAM、NOR和NBAND存储器。并行LCD接口,兼容8080/6800模式。
14
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
3、拥有上电/断电复位(POR/PDR)电路和可编程电压监测器(PVD)。 4、内部嵌入了4~16MHz的晶体振荡器、经出厂调校的8MHz的RC振荡器、带校准的40KHz的RC振荡器和带校准功能的32KHz的RTC振荡器。
5、该芯片拥有睡眠、停机和待机等三种模式,可以根据实际情况选择需要的模式,从而降低了芯片的功耗。
6、拥有3个12位的AD转换器,转换范围是0~36V。
7、拥有12通道的DMA控制器。DMA采用了循环缓冲器管理,从而避免了中断在缓冲区末端产生。
8、多达51个多功能的双向I/O口,所有的I/O口都可以映像到16个外部中断。 9、多达4个16位的通用定时器,每个定时器有4个用于输入捕获、输出比较或是脉冲计数的通道。
10、通信接口数量众多。多达2个I2C接口、5个USART接口、3个SPI接口、一个CAN接口、一个USB2.0全速接口等,能够方便的对各种外接芯片进行控制[7]。
强大的定时器功能是STM32F103RET6芯片的一大优势。该芯片有8个定时器——4个通用定时器、2个基本定时器和2个高级控制定时器,每个定时器由一个可编程预分频的16位自动装载计数器构成,计数频率高达72MHz,适用于多种场合,包括产生输出波形或者检测输入信号的脉冲长度(输入捕获)。本课题就是利用该芯片强大的定时器功能进行输出信号波形的产生和输入信号波形的检测。处理器电路连接原理图如图3-6所示。
15
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
图3-6 核心板处理器电路原理图
3.1.3 发动机转速信号和油泵转速信号发生电路
由该ECU开发商提供的技术指标可知,发动机转速信号传感器和油泵转速信号传感器传发出的都是差分正弦信号,因此模拟这两种信号的设计电路是相类似的。
在此模块中,要产生两组差分正弦信号,因此我们采用了一款差分信号驱动器EL5170。该芯片由±5V双电源供电,固定的放大增益为2,输入信号可以是单端形式或差分形式,输出固定为差分形式,硬件连接如图3-7所示。
16
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
图3-7 差分正弦信号发生电路
对STM32F103RET6的两个DAC进行软件编程,使PA4和PA5引脚产生正弦信号,将两信号引出后,分别接到两块EL5170芯片的正向输入端,经过差分放大后输出两对差分信号,这两对差分信号经导线引到前面板后可以作为产品的输入,用来对产品进行测试。
3.1.4 空气流量计诊断信号和正时行程传感器信号发生电路
空气流量计诊断信号和正时行程传感器信号同属于方波信号,这里我们通过软件编程利用STM32RET6的定时器3的通道3和定时器4的通道4来产生这一组方波信号。由于STM32输出方波的幅度是0~3.3V,为了达到客户关于输出方波幅度的要求,在后面还要再分别接一个场效应管BSP75N作为一个反相器,目的是为了把输出方波的幅度拉伸到0~12V。具体电路如图3-8所示。
17
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
图3-8 方波信号发生电路(一)
3.1.5 空气流量计流量信号和车速传感器信号发生电路
空气流量计流量信号和车速传感器信号也属于方波信号,理论上也可以利用STM32的定时器生成方波波形。但是STM32RET6只有4个通用定时器,上一小节中的空气流量计诊断信号和正时行程传感器信号已经用去了STM32RET6的两个定时器,下一小节还要用到两个定时器对ECU的输出信号进行检测。所以本小节的两个方波信号我们采用DDS器件AD9833生成。
AD9833是可编程波形发生器,能够产生正弦波、三角波和方波输出。AD9833无需外接元件,输出频率和相位都可通过软件编程,易于调节,频率寄存器是28位,主频时钟是25MHz时,精度为0.1Hz,主频时钟为1MHz时,精度可以达到0.004Hz。
AD9833的主要特点如下: 频率和相位可数字编程
工作电压为3V时,功耗仅为20mW 输出频率范围为0MHz—12.5MHz
频率寄存器为28位(在25MHz的参考时钟下,精度为0.1Hz) 可选择正弦波、三角波或者是方波输出 无需外接元件
18
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
3线SPI接口
温度范围为﹣40℃——+105℃
AD9833的内部电路主要有数控振荡器、频率和相位调节器、Sine ROM、数模转换器、电压调整器,其功能框图如图3-9所示。
图3-9 AD9833功能框图
AD9833有3根串行接口线,与SPI接口标准兼容,在串口时钟SCLK的作用下,数据是以16位的方式加载到设备上。FSYNC引脚是使能引脚,电平出发方式,低电平有效。在进行数据传输时,引脚FSYNC必须要置低,还要注意从FSYNC有效到SCLK下降沿建立的时间t7的最小值。在FSYNC引脚被置低后,数据在16个SCLK的下降沿被送入AD9833的移位寄存器,FSTNC在第16个SCLK的下降沿允许被置高,但要注意从SCLK下降沿到FSYNC上升沿的数据保持时间ts的最大值和最小值。也可以在FSYNC是低电平的时候,连续载入多个16位的数据,只在最后一个数据的第16个SCLK的下降沿时将FSYNC置高。最后要注意的是,写数据时SCLK时钟为高低电平脉冲,但是,在FSYNC刚开始变为低时,(即将开始写数据时),SCLK必须为高电平(注意t11这个参数)[13]。AD9833串行时序图如图3-10所示。
19
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
图3-10 AD9833串行时序图
AD9833各引脚的功能如表3-1所示。
表3-1 AD9833各引脚功能
本设计中,我们选用一款25MHz的晶振作为AD9833的主频数字时钟,AD9833外接晶振电路图如图3-11所示。
20
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
图3-11 AD9833外接晶振电路图
DDS_MCLK是该晶振的输出信号,该信号作为AD9833的主时钟,AD9833的输出频率是DDS_MCLK信号频率的二进制分数形式
我们选用两个AD9833分别产生空气流量计流量信号和车速传感器信号,如图3-12所示。
图3-12 方波信号发生电路(二)
图中的WSS和VSS分别是空气流量计流量信号和车速传感器信号。
3.1.6 ECU输出信号检测电路
本设计中,还有两个信号是从ECU产品反馈给模拟器的,分别是冷却液温度输
21
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
出信号和发动机转速输出信号。这两个信号也是方波,我们需要利用STM32的定时器1通道1和定时器2通道2对它们进行检测。因为STM32的引脚电压是0~3.3V,而ECU输出信号的电压是0~5V,所以我们利用一个光耦器件LTV_355T作为一个反相器,将输入信号的电压拉低到0~3.3V,如图3-13所示。
图3-13 ECU输出信号检测电路
3.1.7 CAN通信模块电路
SMT32F103RET6内置了CAN模块,CAN总线因其较高的通信速率、良好的抗干扰能力而在实际工程中得到广泛的应用。不过,现在随着集成技术的不断进步与发展,为了缩小芯片体积,节省功耗,这些新型CAN总线控制器的逻辑电平均采用了LVTTL,这就需要连接与之相适应的总线收发器,SN65HVD230这款芯片就非常好地解决了这个问题。SN65HVD230是由德州仪器公司生产的,它兼容ISO11898标准,传输速率可达1Mb/s,具有开路失效保护和热保护功能,抗电磁干扰能力强,适用于高可靠性CAN通信中。
需要注意的是,为了保证CAN通信的稳定和防止芯片损坏,对外接口加入了瞬态抑制二极管(TVS)DIO-MMBZ33VA,它并联在信号线与地线之间。当TVS上电电
22
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
压超过额定值时,期间就会迅速导通将浪涌能量释放掉,从而将电压幅值限定在一定范围内,起到对CAN通信芯片的保护作用。CAN通信电路连接图如图3-14所示。
图3-14 CAN通信模块电路
3.1.8 USB转串口模块电路
USB转串口模块主要包括两个部分:防噪声干扰电路和USB转串口电路。 在电路中经常会遇到噪声瞬变的情况,如果不降低噪声瞬变很可能会对USB接口造成损害。为了防止这种损害,我们选用了TI公司的单路通用串行总线端口瞬态抑制器SN65220。防噪声干扰电路原理图如图3-15所示。
图3-15 防噪声干扰电路
采用了SN65220之后,降低了USB 的损坏风险,提高了电路的整体稳定性。 在USB转串口电路中,选用的是FTDI公司的USB-UART转换器FT232R芯片,如图3-16所示。
23
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
图3-16 USB转串口电路
该芯片的1脚TXD是异步传输数据的输出,与一个二极管相连,因为两个串行接口都挂接在一个STM32串口上,如果同时传输数据会导致通信冲突;芯片的5脚RXD是接收异步数据的输入。
3.2液晶板电路设计
液晶板的主要作用是显示核心板产生的核心信号的数值,并能够对核心信号的数值大小进行调整。另一个用途是显示ECU反馈给核心板的输入信号。液晶板与核心板通过CAN总线进行信息的交互。液晶板主要由四个模块组成,分别是电源模块、处理器模块、触摸屏控制模块和编码器模块,其总体框图如图3-17所示。
图3-17 液晶板总体框图
24
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
下面分别介绍这四个模块。
3.2.1液晶板电源模块电路
液晶板上的芯片都是以3.3V作为供电电压,这就需要设计一个将12V转换为3.3V的电路模块。考虑到液晶板的面积较小,芯片之间较为紧凑,若直接使用类似于核心板的线性电源芯片由12V降压到3.3V会发热比较严重,会对系统的稳定性造成较大的影响。因此这里选用了发热少、效率高的开关电源芯片SC4524。SC4524是降压型开关稳压器,该芯片输入电压范围是3V~28V,有2A的电流输出,允许使用小型电感器和陶瓷电容器,使得电源模块的设计可以非常紧凑,同时散热效果良好。液晶板电源电路如图3-18所示。
图3-18 液晶板电源电路
3.2.2液晶板处理器模块电路
在考虑了性能、功耗、价格和设计者对芯片的熟悉程度等方面之后,我们决定液晶板的处理器仍然选用ST公司的STM32F103RET6。该款芯片的特点前文已经介绍过了,在液晶板中它主要用来作为液晶模块的核心处理器,具体的电路如图3-19所
25
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
示。
图3-19 液晶板处理器电路
在此电路中,我们用STM32的PB10引脚产生液晶模块的片选信号LCD_CS,用PB0、PB1两个引脚分别产生液晶模块的读、写选通信号LCD_RD和LCD_WR,利用PC0~PC15共16个引脚作为液晶模块的16位数据输入端。与其相连接的触摸屏接口电路如图3-20所示。
26
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
图3-20 触摸屏接口电路
3.2.3触摸屏控制器电路
本课题中,我们采用了新一代的触摸屏控制器TSC2046,其核心是一个具有采样和保持功能的12位逐次逼近式A/D转换器。正常工作时,X+、Y+、X-、Y-四个引脚接收从触摸屏上传来的触摸点的信号,并进行A/D转换。之后芯片通过SPI接口与微处理器进行通信,将触摸点的坐标等信息传输给微处理器。微处理器得到触摸点的坐标等信息后根据事先设定好的程序就可得知触摸者的意图,从而进行相应的响应动作。触摸屏控制器电路如图3-21所示。
27
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
图3-21 触摸屏控制器电路
3.2.4 编码器电路
我们在液晶显示模块中加入一个编码器用来控制核心板发生信号的数值大小以及选择液晶屏上相应的菜单。编码器电路如图3-22所示。
图3-22 编码器电路
该编码器的型号为EC05E1220401,是一款带开关的增量型编码器。旋转编码器
28
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
的中轴,ENCODERA端和ENCODERB端会输出两组相位相差90°的脉冲,从而可以方便地判断出旋转的方向。当编码器中轴未被按下时,STM32可以根据旋转的方向来判断核心信号量的大小是应该增加还是减小;当编码器的中轴被按下时,S_ENCODER端会输出一个脉冲给STM32,此时,STM32则根据编码器旋转的方向来选择液晶屏上相应的菜单。
3.3信号接口面板电路设计
信号接口面板主要有以下两个功能:
1,引出核心板产生的核心信号,为模拟器与ECU的交互提供一个接口; 2,模拟一些较为简单的汽车发动机信号。
信号接口面板模拟的汽车发动机信号主要有以下三类:可变电压量信号,可变电阻量信号,开关量信号。下面分别予以介绍。
3.3.1可变电压量信号模块设计
由第一章中的表1-1可知,在某ECU生产商提供的模拟器技术指标中,进气压力传感器、EGR阀传感器和排气压差传感器传来的都是电压信号,且都是0~5V可调电压。因此这三个信号的电路设计是类似的。我们采用运算放大器LM358和单圈电位器构成一个可变电压跟随器,为ECU提供0~5V可调的电压信号。具体电路如图3-23所示,+5V的电压由ECU提供。
29
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
图3-23 可变电压量信号电路
油门踏板信号A和信号B也是0~5V的可变电压信号,但是技术指标中要求可以配置成联动调整模式或分别调整模式,且在联动调整模式中,信号A=信号B×2。根据技术指标的要求,我们做了如下电路设计,如图3-24所示。
30
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
图3-24 油门踏板信号电路
VYMA和VYMB都是ECU提供的5V电压信号。开关S20接“3”时,该电路被配置为分别调整模式;开关S20接“1”时,该电路被配置为联动调整模式。在联动调整模式下,因为要满足信号A=信号B×2这个条件,所以电阻R92和R98的组织我们分别选取了1.24KΩ和13.7KΩ。根据电阻的分压法则可以算出无论电位器的位置如何,在联动调整模式下都满足信号A=信号B×2这个条件。
3.3.2可变电阻量信号模块设计
由表1-1可知,进气温度传感器、水温传感器、燃油温度传感器和流量计温度传感器传送的都是0~100KΩ的可变电阻信号,因此我们设计了四组可变电阻器来模拟这四个信号。每组电阻器包括一个0~100K的粗调电位器和一个0~1K的细调电位器,如图3-25所示。
31
第三章 系统硬件设计 汽车发动机模拟器的设计与实现
图3-25 可变电阻量信号电路
3.3.3开关量信号模块设计
由表1-1可知,空挡开关、空调开关、离合器开关和刹车开关发出的信号都是开关量信号,接通时接12V或接地,断开时没有连接。因此我们用三档开关设计的如下电路来模拟开关量,如图3-26所示。
32
汽车发动机模拟器的设计与实现 第三章 系统硬件设计
图3-26 开关量信号电路
3.4 本章小结
本章介绍了发动机模拟器的硬件实现,对组成模拟器的核心信号产生模块、液晶显示模块和信号接口面板模块等三大主要模块的设计做了详细地说明。
33
第四章 系统软件设计 汽车发动机模拟器的设计与实现
第四章 系统软件设计
本课题软件设计所使用的开发平台为EWARM5.0,该款开发工具是目前市面上最流行的ARM开发工具之一,能够满足各种主流ARM芯片的开发要求。
模拟器系统的软件设计主要分为核心板软件设计、液晶板驱动设计和CAN总线驱动设计三大部分。核心板软件设计的主要目标是产生模拟器的核心输出信号,并检测从ECU反馈过来的两个信号;液晶板驱动设计的主要目标是提供一个人机交互界面,让用户能够根据自己的需要对信号的参数进行修改;CAN总线驱动设计主要目标是使核心板与液晶板能够进行CAN通信,从而使二者之间能够进行较好的信息交互。下面对这三个模块分别予以介绍。
4.1 核心板程序设计
核心板的程序框架主要分为系统初始化和系统主循环两个部分,其流程图如图4-1所示。
开始系统初始化Weifu_Init( )系统主循环Weifu_Update( )
图4-1 核心板主程序流程图
系统初始化程序主要包括系统时钟初始化、程序中的各参数初始化、发动机转速信号和油泵转速信号等模拟器核心信号初始化等。系统的主循环是函数Weifu_Update( )。由于本课题没有移植操作系统,所以该函数被设置在一个死循环中。它的主要作用有两个:一是在系统成功初始化后使系统持续不断地运行下去,连续不断地产生模拟器的核心信号;二是不停地检测从液晶板上传来的信号参数值,看其是
34
汽车发动机模拟器的设计与实现 第四章 系统软件设计
否与核心板内存储的信号参数值相同。若相同,则表明使用者未对输出信号的参数进行修改,那么核心板就继续按照之前设置的信号参数输出相关的信号;若不同,则表明使用者对输出信号的参数进行了修改,那么核心板的芯片先把修改后的参数存储起来,然后根据新的信号参数值输出相应的信号,从而达到输出信号可调的功能。
4.1.1 模拟器核心信号程序设计
本模拟器的核心信号总共有以下六个: 车速传感器信号(方波,0~1KHz可调)
空气流量计流量信号(方波,1.5KHz~15KHz可调) 空气流量计诊断信号(方波,17KHz~19KHz可调) 正时行程信号(方波,固定频率250Hz,占空比可调) 发动机转速信号(差分信号,正弦波,0~5KHz可调) 油泵转速信号(差分信号,正弦波,0~5KHz可调)
经过分析,以上六个核心信号可以分为两类:1,方波信号;2,正弦波信号。 下面来介绍方波信号的设计。
方波信号我们既可以利用DDS器件产生,也可以利用STM32的定时器来产生。若使用DDS器件产生方波,程序的设计较为简便,但DDS器件的成本较高,且一个DDS器件要占用一个SPI接口,STM32处理器的SPI接口有限;若使用STM32定时器产生方波,硬件成本较低,但程序的设计较为复杂,且STM32只有四个通用定时器,满足不了方波信号数量的要求。综合以上因素,本课题决定采用DDS器件和STM32定时器相结合的方式来产生方波信号。
本课题的DDS器件我们采用了AD9833,该芯片的特点在之前的硬件设计部分已经介绍过了。STM32通过2个SPI接口控制两个AD9833产生频率可调的方波,车速传感器信号和空气流量计流量信号就是这样产生的。AD9833信号的输出频率由下式来决定:
foutM*FMCLK (4-1) 282其中fout为AD9833的输出频率,M为处理器发送给AD9833的频率控制字,
35
第四章 系统软件设计 汽车发动机模拟器的设计与实现
FMCLK为AD9833的参考时钟频率。在本设计中,系统初始化后STM32一边检测液晶板上的信号参数是否发生了变化,一边通过SPI接口不停地给AD9833发送频率控制字,AD9833根据接收到的频率控制字输出相应频率的方波。其程序流程图如图4-2所示。
开始系统初始化STM32向AD9833发送控制字AD9833输出方波N液晶屏上信号参数是否有更新YSTM32重新向AD9833发送控制字
图4-2 方波信号程序流程图1
另外两个方波信号我们利用STM32的定时器产生。我们分别利用定时器3和定时器4的各一个通道来产生空气流量计诊断信号和正时行程信号。
定时器采用向上计数的方式,方波的周期就是定时器定时的时间。定时器计数到设定好的时间溢出,然后产生一个定时器中断,之后自动装载设定好的值重新开始计数。定时器的时钟频率是72MHz,主时钟360分频,则方波的输出频率由下式确定: fout72000kHz (4-2)
360*T其中fout为定时器输出方波的频率,T为定时器计数的参数值。 在程序中,我们先用如下语句定义一个结构体:
36
汽车发动机模拟器的设计与实现 第四章 系统软件设计
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
结构体TIM_TimeBaseStructure中的参数TIM_TimeBaseStructure.TIM_Period决定了计数器计数的周期,也就决定了输出方波的频率。例如我们要输出频率为1KHz的方波,则我们把TIM_TimeBaseStructure.TIM_Period的值设为200,计数到200时溢出,由上面的公式可以算出输出方波的频率为1KHz。
输出方波的占空比由下式决定: DCT0 (4-3) T其中DC(DutyCycle)为输出方波的占空比,T为定时器计数的值,T0为用来计数输出高电平时间的参数值。
在程序中,我们用如下语句定义一个结构体: TIM_OCInitTypeDef TIM_OCInitStructure;
结构体TIM_OCInitStructure中的参数TIM_OCInitStructure.TIM_Pusle决定了T0的值。以上面输出1KHz的方波为例,T=200,若要输出的占空比为75%,则设置参数TIM_OCInitStructure.TIM_Pusle的值为150就能够满足要求。
在具体的程序中,我们调用函数void pwmout(int frq,int dc)来实现不同频率和占空比的方波输出。其中参数frq控制输出方波的频率,dc控制输出方波的占空比。对于要求占空比固定,频率可调的方波,我们在调用该函数的时候固定dc的参数值,只改变frq的参数值;对于要求频率固定,占空比可调的方波,我们在调用该函数的时候固定参数frq的值,只改变参数dc的值。该程序模块的流程图如图4-3所示。
37
第四章 系统软件设计 汽车发动机模拟器的设计与实现
开始定时器初始化定时器输出方波N是否有参数改变Y定时器参数修改
图4-3 方波信号程序流程图2
发动机转速信号和油泵转速信号是两个正弦波信号,本课题采用STM32的DAC模块和外部中断相配合的方式产生正弦波。STM32F103RET6有两个DAC模块,是12位数字输入,它们可以配置成8位或12位模式,也可以与DMA控制器配合使用。外部中断我们采用一个AD9833芯片产生的方波来实现。AD9833每发送一个脉冲给处理器,处理器就会产生一个中断,中断处理函数就给DAC赋一个相应的数值,DAC就会有相应的波形输出。赋给DAC的数值是根据采样定理,由matlab对正弦信号采样生成,存放在一个数组中。程序运行时对到来中断的个数进行计数,将中断的个数与数组的大小做取余运算,所得的结果代入数组中查找,将查找到的对应的数组值周期性地赋值给DAC,这样DAC就会周期性地输出正弦波。因为正弦波是根据外部中断生成的,所以调整外部中断频率的大小(也就是AD9833输出方波频率的大小)就能够调整输出正弦波的频率。该程序模块的主流程图与图4-2类似,只是这里AD9833输出的方波信号又反馈给了STM32,作为其外部中断信号。其中断处理程序流程图如图4-4所示。
38
汽车发动机模拟器的设计与实现 第四章 系统软件设计
中断开始中断计数器加1中断计数器数值和数组大小做取余运算根据中断计数器的值查找正弦数组中相应的值将查找到的正弦数组中的值赋给DACDAC输出相应的波形中断结束
图4-4 正弦波信号中断处理函数流程图
4.1.2 ECU反馈信号检测程序设计
ECU给模拟器的反馈信号有两个:冷却液温度输出信号和转速输出信号。这两个信号都是方波,我们采用定时器1通道1和定时器2通道2进行检测。
以定时器1为例,我们将TIM1设为输入捕获模式,ECU反馈的方波信号经从通道CH1进入。每次检测到捕获输入就出发一次中断。在中断处理程序中,保留第一次和第二次的捕获值,之后计算两次捕获的差值,从而可以计算出信号的频率。其中断处理程序的流程图如图4-5所示。
39
第四章 系统软件设计 汽车发动机模拟器的设计与实现
中断开始清空捕获标志是否是第一次捕获Y保留第一次捕获值N保留第二次捕获值设置标志计算两次的差值计算方波频率值中断结束 图4-5 ECU反馈信号中断检测流程图
4.2 液晶板驱动程序设计
液晶板驱动程序也分为系统初始化和系统主循环两个部分,其流程图如图4-6所示。
开始系统初始化lcm_Init( )系统主循环lcm_Update( )
图4-6 液晶板主程序流程图
40
汽车发动机模拟器的设计与实现 第四章 系统软件设计
在液晶板的系统初始化程序中,主要的工作有液晶屏幕显示初始化、液晶屏上信号参数初始化等等。我们调用函osd_ConstructDialog(const osd_dialog_t *dlg)和osd_SetActiveDialog(int handle)来创建一个活动的菜单。
在系统主循环中,我们先判断触摸屏上有无触摸事件发生,若有触摸事件发生,则根据触摸点的位置来改变改变活动菜单的位置。然后再判断菜单上的参数有没有改变,若有改变,则将改变后的参数值存入存储器中,并通过CAN总线发送给核心板。液晶板系统主循环流程图如图4-7所示。
开始是否有触摸事件发生?NY改变活动菜单位置菜单上是否有参数值改变?Y存储改变后的参数值N将改变后的参数值发送给核心板结束
图4-7 液晶板系统主循环流程图
调试完成后的液晶显示模块如图4-8所示。
41
第四章 系统软件设计 汽车发动机模拟器的设计与实现
图4-8 调试完成后的液晶模块
4.3 CAN通信模块驱动程序设计
STM32F103处理器的CAN为bxCAN,即基本扩展CAN(Basic Extended CAN)。它支持2.0A和2.0B版本的CAN协议。
CAN总线通信的软件设计主要分为三个部分:数据发送,数据接收和出错管理。 (1)数据发送
使用CAN总线进行数据发送的过程如下:
指定空的传输邮箱(transmit mailbox),并为该邮箱设置唯一标识; 设置要传输的数据长度DLC(Data Length Code)和要传输的数据; 设置CAN_TixR寄存器的TXRQ传输标志位,邮箱进入挂起(pending)状
态,等待被系统分配最高优先级; 该邮箱得到最高优先级后,数据传输开始; 数据传输结束,邮箱重新进入空闲(empty)状态。 整个数据发送过程的流程图如图4-9所示:
42
汽车发动机模拟器的设计与实现 第四章 系统软件设计
开始CAN模块初始化选择一个空发送邮箱设置标识符,填充数据请求发送邮箱进入挂号状态N总线是否空闲YN当前邮箱是否为最高优先级Y发送报文清空当前邮箱结束
图4-9 CAN总线数据发送流程图
(2)数据接收
CAN总线接收数据时,将3个邮箱组织成一个FIFO buffer,为了提高系统性能,STM32F103处理器的CAN控制器完全使用硬件控制接收FIFO buffer。应用程序通过
43
第四章 系统软件设计 汽车发动机模拟器的设计与实现
FIFO输出邮箱(FIFO Output Mailbox)访问接收到的数据。
CAN总线数据接收的过程如下:
邮箱由空状态通过FIFO接收消息进入到Pending_1状态;
硬件发出接收到消息信号,将CRFR急促器的FMP[1:0]位设为0x01; 软件从该邮箱读走消息,并将CRFR寄存器的RFOM位置1; 邮箱重新标识为empty状态。
整个数据接收过程的流程图如图4-10所示:
开始CAN模块初始化是否有报文到达Y接收报文N是否通过标识符过滤Y放入FIFO的邮箱N无效报文,丢弃读取报文释放邮箱结束
图4-10 CAN总线数据接收流程图
44
汽车发动机模拟器的设计与实现 第四章 系统软件设计
(3)出错管理
根据CAN协议描述出错管理完全由硬件通过一个发送错误计数器(CAN_ESR寄存器中的TEC域)和一个接收错误计数器(CAN_ESR寄存器中的REC域)处理,计数器的值随着错误情形增加或者减少。
此外,CAN_ESR寄存器提供了当前错误状态的详细信息。通过设置CAN_IER寄存器(比如ERRIE位),当检测到出错时软件可以灵活地控制中断的产生。
当TEC超过255时,bxCAN就进入离线状态,同时CAN_ESR寄存器的BOFF位被置1.在离线状态下,bxCAN无法接收和发送报文。
根据CAN_MCR寄存器的ABOM位的设置,bxCAN可以自动或在软件的请求下,从离线状态恢复(变为错误主动(Error Active)状态)。在这两种情况下,bxCAN都必须等待一个CAN标准所描述的恢复过程(CAN_RX引脚上检测到128次11个连续的隐性位)。如果ABOM位为1,bxCAN进入离线状态后,就自动开启恢复过程。如果ABOM位为0,软件必须先请求bxCAN进入然后再退出初始化模式,随后恢复过程才被开启。
在本课题中,核心板与液晶板之间的CAN通信的软件实现主要是驱动程序的编写,由上层程序调用。CAN通信的驱动程序主要由下列几个函数构成:
(1)static int can_init(const can_cfg_t *cfg),为初始化函数,用于配置CAN参数,如过滤器组、标识符、波特率的设置等;
(2)int can_send(const can_msg_t *msg),为数据发送函数,负责CAN总线的数据发送;
(3)int can_recv(can_msg_t *msg),为数据接收函数,负责CAN总线的数据接收处理;
(4)void CAN1_RX0_IRQHandler(void),为中断管理函数,负责管理CAN通信中的中断;
(5)int can_filt(can_filter_t const *filter, int n),为过滤符标识设置函数,用于设置过滤器组;
(6)void can_flush(void),为CAN FIFO释放函数,用于取消数据传输,释放CAN FIFO。
45
第四章 系统软件设计 汽车发动机模拟器的设计与实现
4.4 本章小结
本章主要介绍了模拟器的核心板软件设计、液晶板软件设计和CAN通信设计等三个主要模块的软件设计内容。
46
汽车发动机模拟器的设计与实现 总结与展望
第六章 总结与展望
6.1 课题总结
本课题所设计制作的汽车发动机模拟器在实际的工作中有良好的稳定性和实用性,较好地协助了某ECU生产商进行发动机电控单元ECU的开发,得到了客户的肯定。
本文详细地介绍了整个发动机模拟器的硬件设计和软件设计等,具体的工作主要体现在以下几个方面:
1、简要地介绍了本课题所涉及到的SPI、UART和CAN等通信协议。 2、利用Altium Designer完成了系统的硬件设计,绘制出了系统的原理图和PCB图,完成了PCB板的制作和元器件的焊接调试工作。硬件设计主要包括核心板电路设计、液晶板电路设计和信号接口面板电路设计三部分。
3、完成了核心板程序设计、液晶板驱动设计和CAN通信程序设计等模块的程序设计。
4、完成了模拟器实物的组装和相关信号的测试。
6.2 对未来的展望
受时间和本人能力有限,对于该发动机模拟器的开发还有很多未完善之处,许多问题有待进一步研究:
1、有必要进一步提高模拟器的信号精度,从而能够更精确地模拟汽车发动机的各种信号,以更好地帮助ECU生产商进行ECU的研发工作。
2、本模拟器只是单纯地依据客户订单所要求的技术指标设计,对客户没有要求的部分还可以做些改进,例如可以把人机交互界面做的更加友好,更加便于操作等。
3、对系统的软、硬件还要进一步完善,以提高模拟器长时间工作时的稳定性。 汽车发动机模拟器的开发是一个逐渐深入和完善的过程,论文中难免有不足之处,希望各位老师和同学批评指正。
47
参考文献 汽车发动机模拟器的设计与实现
参考文献
[1] 邵华,钱人一,郭晓潞,习纲.LabCar的功能与构成[J].世界汽车.2001(11):22-23. [2] 牛跃听,周立功,方丹.CAN总线嵌入式开发[M].北京:北京航空航天大学出版社,2012.
[3] 王永虹,徐炜,郝立平.STM32系列ARMCoretex-M3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.
[4] 谭力.嵌入式系统SPI总线控制器的内核设计[D].华中科技大学,2002. [5] 江应红.基于单片机控制的牛肉电刺激嫩化仪研究与实验[D].华中农业大学,
2011.
[6] Data Sheet.3.3-V CAN TRANSCEIVERS.TEXAS INSTRUMENTS,2006. [7] 刘波文.ARMCoretex-M3应用开发实例详解[M].北京:电子工业出版社,2011. [8] 刘艳强,马秋霞,王健.CAN总线通讯的电磁兼容性能分析与设计[J].电子技术应用,2006(08):77-79.
[9] Datasheet Single and Dual Universal Serial Bus Port Transient Suppressors, SN65220.
Oct,2000-Rev,2.www.ti.com.
[10] Datasheet Incorporating Clock Generator Output and FTDIChip-IDtm Security Dongle,FT232RL.Version 1.04.www.ftdichip.com.
[11] Data Sheet.28V 2A Step-Down Switching Regulator.SEMTECH,2008.
[12] 朱品伟,乔学亮,陈建国.下一代TSC触摸屏控制器[J].单片机与嵌入式系统,
2005(10):2-4.
[13] 刘国良,廖力清,施**.AD9833型高精度可编程波形发生器及其应用[J].国外
电子元器件,2006(6):44-51.
[14] 蒙屈.汽车发动机信号智能模拟系统[D].吉林大学,2010.
[15] 吴远波.汽车发动机电控单元辅助调试系统人机交互的实现[D].吉林大学,2011. [16] 王兴武.汽车发动机曲轴凸轮信号模拟系统[D].吉林大学,2011.
[17] 江宏林.基于μC/OS-Ⅱ汽车发动机电控单元辅助调试系统信号源的设计[D].吉
48
汽车发动机模拟器的设计与实现 参考文献
林大学,2012.
[18] 喻金钱,喻斌.STM32F系列ARMCoretex-M3核微控制器开发与应用[M].北京:
清华大学出版社,2010.
[19] 姜平,周根荣,李俊红.基于AD9833的多通道信号发生器设计[J].仪表技术与
传感器,2006(12):46-48.
[20] 黄斌,洪嬴政,朱康生.基于AD9833的高精度可编程波形发生器系统设计[J].
电子设计工程,2009,,17(5): 6-7.
[21] 肖伸平,窦颖艳,曾红兵,邹恩.基于AD9833信号发生器的设计[J].机电产品
开发与创新,2008,21(2):67-73.
[22] 吴立松.CAN总线智能节点设计[D].哈尔滨理工大学,2009.
[23] 魏宗寿,杨春杰.基于CAN总线的一种计算机通信系统设计及CAN常见错误分
析[J].测控技术,2006(2):36-39.
[24] 张铖瑶.用于数字输出传感器的I2C/SPI总线设计[D].哈尔滨工业大学,2012. [25] 陆林.基于ARM9的大型触摸屏控制器的研究与开发[D].江南大学,2008. [26] 吴青萍,沈凯.基于ARM处理器的TSC2046触摸屏控制器的应用[J].先打电子
技术,2011,34(23):195-198.
[27] 陶庆生.基于LPC2378和TSC2046的汽车触摸屏智能控制系统[J].东方企业文
化,2012,(4):212-213.
[28] 唐思超.嵌入式系统软件设计实战——基于IAR Embedded Workbench[M].北京:
北京航空航天大学出版社,2010.
[29] 周润景.ARM7嵌入式系统设计与仿真——基于Proteus、Keil与IAR[M].北京:
清华大学出版社,2012.
[30] 徐爱钧.IAR EWARM V5嵌入式系统应用编程与开发[M].北京:北京航空航天
大学出版社,2009.
[31] 徐爱钧.IAR EWARM嵌入式系统编程与实践[M].北京:北京航空航天大学出版
社,2006.
49
汽车发动机模拟器的设计与实现 致谢
致谢
时光荏苒,白驹过隙,转眼间已经要毕业了,回首这两年的研究生学习和生活,不由得从心里感激众多帮助过我的老师和朋友。
首先要感谢我的导师曲波老师。从研究生入学至今,曲老师一直非常平易近人地培养帮助我,无论是在学习上还是生活上,曲老师都给了我无微不至的关心。两年来,曲老师细致严谨的科研精神、谦逊和蔼的处事方法和积极乐观的生活态度一直对我有着潜移默化的影响,不仅使我在学术上受益良多,更让我学到了许多为人处世的道理。在此,我向曲老师表达我最衷心的谢意。
还要感谢陈小平、侯嘉、施国梁、周鸣赖、胡丹峰、王加俊、胡剑凌、汪一鸣、羊箭峰等老师,在两年的研究生阶段的学习中,这些老师传授我们知识和学习的方法,他们认真的治学态度让我肃然起敬,他们渊博的学识让我钦佩。
在课题研究和设计期间,倪峰、孔康、郭鹏等师兄给了我很多帮助和指导,使我少走了许多弯路。这里特别要感谢顾家茂同学给与我在技术上的帮助与支持,有许多问题都是在和他讨论之后才渐渐明晰、豁然开朗的。
同时还要感谢我实验室的董亮、徐晓明、刘润,同寝室的王凯、封士永、宋春生等同学,在这两年的时间里,他们在学术上给予了我很大的帮助,在生活上给与了我很大的关心。
最后,我要衷心感谢我的父母这么多年来对我的培养,感谢他们的支持使我顺利完成了学业。
67
因篇幅问题不能全部显示,请点此查看更多更全内容