摘 要: 针对当前驾驶安全备受关注的现状,基于ARM Cortex⁃M3内核的STM32设计了一种车载安全预警系统,该系统是实现对车辆超速监测、司机超劳监测、车辆定位、蓝牙免提和无线通信功能于一体的车载终端。详述了系统实现各功能模块的硬件设计方案,以及在软件方面如何移植μC/OS⁃Ⅱ实时操作系统,并完成各应用任务的调度和外围设备管理。
关键词: STM32; μC/OS⁃Ⅱ; 嵌入式; 车载系统
中图分类号: TN911.7⁃34; TP29 文献标识码: A 文章编号: 1004⁃373X(2013)03⁃0154⁃04
随着社会经济的发展,汽车已成为人们工作和生活不可缺少的一种交通工具[1],给人们生活带来方便的同时交通安全也成为人们日益关注的焦点问题。研究表明驾驶员的违章操作是导致交通事故频发主要原因之一,所以如何有效遏制交通违章、约束驾驶员不良驾驶习惯,提高车辆的运营安全已经成为一个亟待解决的重大课题。而车载电子装置与汽车本身关系不大,其开发条件要求相对较低,并且其适用环境更加广泛,因此车载电子装置的开发正在成为一个新的热点[2]。
1 车载安全预警系统功能
本文中的车载安全预警系统设计基于ARM Cortex⁃M3内核的STM32系列处理器,融合了蓝牙无线、定位导航、惯性导航、GSM无线通信等多种高科技技术。主要实现功能有:
(1)超时、超速的实时检测:通过GPS对车辆的行驶状态实时跟踪定位,获取行驶的时间和速度信息,判断驾驶员是否超劳,车辆是否超速。
(2)GPS/加速度计组合测速:利用惯性敏感器件加速度计解决GPS使在涵道、山谷内等,出现弱信号或无信号的定位问题,通过自适应卡尔曼滤波数据融合算法获取更精确的定位信息。
(3)车载电话功能:实现蓝牙免提功能,使驾驶员可以专注于驾驶,保证车主在通话过程中的驾驶安全。
(4)行驶状态检测:通过加速度传感器,对行车三维方向上的加速度值进行测量,判断车辆行驶是否超出加速度安全阈值。
(5)远程监控功能:基于无线移动通信技术,实现对车辆的远程动态监控管理,当存在驾驶安全隐患或事故发生时通过无线网络将当前状态消息(位置、速度、加速度、时间)及时上报,以便车辆监管部门采取相应的管理调度或急救措施。
(6)监控报警:当驾驶员超速或疲劳驾驶时通过声光报警及时纠正驾驶者的不规范操作。
2 系统的硬件设计
根据系统设计的功能要求,安全预警系统的整体结构框如图1所示。
2.1 微处理器MCU
设计中选用的主控芯片为STM32增强型系列的STM32F103RE,STM32系列是意法半导体推出的专为高要求、低成本、低功耗的嵌入式应用设计的Cortex⁃M3内核的ARM控制器[3]。2.0~3.6 V的工作电压,时钟频率可达到72 MHz,内置512 KB FLASH和64 KB SRAM,带片选的静态存储器控制器,支持CF卡、SRAM、NAND存储器。片上集成有三路16位数模转换器、两路I2C、五路UART和三路SPI端口等,其方便的扩展性及丰富的通信接口非常适用于本系统实现与多个外部功能模块的通信控制。
2.2 定位、测速电路设计
GPS是实现车辆定位及测速功能的核心模块,这里选用的是瑞士u⁃blox公司生产的LEA⁃5S型号的GPS模块,其具有22.4 mm×17 mm超小封装,4 Hz定位更新速率,65 mW的低功耗以及-160 dBm的高追踪灵敏度。模块的串口TTL电平是3 V,与STM32的通信电平一致,因此应用中直接将模块的Pin3 TxD,Pin4 RxD 与主控芯片PA3 USART2_RX和PA2 USART2_TX相连。
通信协议遵循NMEA⁃0183标准,协议的语句格式以“$”开始,以“
系统设计中选用Analog Device公司生产的型号为ADXL345三轴重力加速度计,主要完成的功能有:辅助测速,因其不受地理位置和周围建筑的影响,运用扩展的Kalman滤波算法,解决GPS在动态环境中信号失锁和周跳问题,保证系统测速功能的实时性;对汽车行驶过程中的加速度检测,通过检测的数据判断车辆是否行驶在安全的加速度阈值内。ADXL345是一款超低功耗,小巧纤薄的3轴加速计,可以对高达±16g的加速度进行高分辨率(13位)测量,车载系统中应用了芯片上的I2C通信接口。
2.3 蓝牙免提模块设计
设计中采用了一款集成度较高的BC05MM⁃EXT蓝牙模块,其内核芯片是英国CSR公司的BC05 Bluecore 芯片,执行标准Bluetooth 2.1+EDR,模块内嵌的通信协议支持HS/HF、A2DP,可实现免提和高质量的音频播放功能,内置噪声消除和回音处理电路。
该模块的外围电路主要包括通信电路、音频输出电路、MIC滤波电路、状态指示电路、按键输入电路。STM32通过串口与蓝牙模块相连,主要完成的任务是与带蓝牙功能的手机之间进行通信;按照模块支持的A2DP协议,音频输出电路调试阶段采用的是100 mW的立体声耳机放大器TS482,匹配32 Ω的扬声器;MIC输入电路主要是对音频信号的滤波处理,采用了差分输入设计提高抗干扰性能,保证免提的音频效果;状态指示和按键输入部分由主控芯片外接发光二级管和独立按键实现。
设计中应用结构简单的倒F天线,可直接在PCB板上按照适用蓝牙系统的倒F天线尺寸在适当的布板位置绘制天线。
2.4 GSM模块设计
常用的GSM短信模块有TC35,TC35I。因前者电压范围稍微大一些,考虑到GSM模块对电源的敏感性,所以设计中选用的是西门子公司推出的无线通信GSM模块(双频900/1 800 MHz)TC35,支持Text和PDU格式的SMS(Short Message Service,短消息),可通过AT命令或关断信号实现重启和故障恢复。
TC35外围电路主要由电源电路、数据通信电路、IGT启动电路和SIM卡电路组成[6]。在启动电路设计中实现可靠的启动脉冲十分关键,按照TC35的设计要求,上电后需要给模块的IGT脚加一个延时大于100 ms的低电平脉冲,并且电平下降时间要小于1 ms,供电电压大于 3.3 V才能使TC35进入工作状态,设计中通过STM32的I/O引脚推挽输出方式实现TC35的启动。模块对电源的稳定性要求非常高,在通信时网络连接时的瞬间电流峰值可达2 A,尤其是在信号不良时,这种情况在电源电路设计时增加了必要的电容滤波部分。通信接口为模块的18脚RXD,19脚TXD与主控芯片USART3串口通信。
2.5 电源设计
汽车上电子设备较多,使得车内的电磁环境也较复杂,在这种环境中汽车电子产品电源性能的好坏直接影响到电子设备的可靠性[8]。根据各模块的供电需求,系统采用车内点烟器提供的12 V电源,经LM2596为核心的开关稳压电源芯片为系统提供5 V和3.3 V的车载系统工作电压,LM2596其输入范围可达40 V,输出电流可达3 A,并且功耗小、效率高、具有很好的线性和负载特性,非常适合该应用系统。选用LM2596⁃3.3将车内电源转化成车载系统内主控芯片STM32、加速度传感器和GPS使用的3.3 V电源;同时选用LM2596⁃5.0为GSM提供5 V工作电压。LM2596⁃5.0应用电路如图2所示,LM2596⁃3.3的应用电路和LM2596⁃5.0原理基本相同。
如图2所示,电源电路设计考虑到应用环境,采取了相应的抗干扰和过流保护措施。为了防止电流过大,输入端串接自恢复保险丝F1保护系统的安全性; D1,D2构成电源极性反接保护电路;C1,C2,C3电容并接电路去除车内电源信号的纹波和高频噪声;输出端L1可以抑制纹波,使LM2596输出稳定的电压;电源输出端对地连接的C4,C5旁路电容也起到稳定环路的作用。
3 系统的软件设计
STM32开发工具选用的是ARM公司4.22版的Keil MDK,采用μVision 4开发环境,通过片上集成的JTAG调试接口通过JLINK V8仿真器与PC相连。
3.1 μC/OS⁃Ⅱ的简介与移植
为了便于系统的升级与维护,设计中采用了嵌入式实时操作系统μC/OS⁃Ⅱ。该操作系统具有执行效率高、占用空间小实时性能优良和可扩展性强等特点,最小内核可编译至2 KB,非常适合FLASH容量较小的系统使用[9⁃10]。
μC/OS⁃Ⅱ的文件体系结构如图3所示。
由图3中可以看出,μC/OS⁃Ⅱ的绝大部分是与处理器和其他硬件无关的代码,大大降低了移植的工作量,移植过程中需要修改的源代码文件有:
(1)在内核头文件OS_CPU.H中设置与处理器和编译器相关的代码,针对具体处理器的字长重新定义一系列数据类型,声明用于开关中断、堆栈的增长方向和任务切换的宏。
(2)在OS_CPU_A.ASM中实现与处理器相关的函数,关中断函数OS_CPU_SR_Save();恢复中断函数OS_CPU_SR_Restore();启动最高优先级任务运行OSStartHighRdy();任务切换OSCtxSw()和中断切换OSIntCtxSw()。
(3)在OS_CPU_C.C中用C语言编写与CPU相关的函数。主要是任务堆栈初始化函数OSTaskStkInit()和系统HooK函数。
整个移植的代码都在上面三个文件中,实际只要在启动文件中修改任务调度函数以及节拍函数的中断入口就完成了操作系统的移植。
3.2 μC/OS⁃Ⅱ的任务规划
操作系统按照功能模块划分为多个任务,并根据各个任务实时性的要求设置相应的运行优先级。分别是:AppTaskStartStk,操作系统的第一个任务,进行晶振和内核时钟的定义和初始化,对功能I/O端口的功能定义,初始化中断向量表和堆栈以及各模块的全局变量和数据结构,完成系统的初始化后永久挂起;AppTask_GSM负责与TC35模块有关的控制功能如模块的初始化、短信的发送;AppTask_GPS负责对LEA⁃5S模块的数据读取和解析;AppTask_Blue负责蓝牙语音模块的控制功能,包括接听、拒接、回拨、结束通话等功能;AppTask_ADXL负责ADXL345模块的数据读取和解析;AppTask_LED为工作状态指示;AppTask_Key为按键控制;监控系统稳定的看门狗任务AppTask_Dog;以及系统运行自带的空闲任务OSTaskIdle。
系统整体的任务调度流程图如图4所示。
4 测 试
对于该车载系统下面给出基于LabVIEW的GPS实车行驶速度测试,测试界面如图5所示。
5 结 语
本文详细描述了基于STM32车载安全预警系统硬件和软件的设计方案。 对整个车载系统进行了实车测试,测试结果表明整个系统符合预期的目标,可以实现对车辆的定位、超时、超速、加速度超值、并通过GSM将行车异常状态参数和定位信息发送至远程监控中心,移植的μC/OS⁃Ⅱ使得该系统具有良好的稳定性和实时性,能满足现代车辆安全远程监管的功能需求。
参考文献
[1] 高飞,王诚儒.基于ARM9的智能车载系统的设计[J].现代电子技术,2009,32(15):208⁃210.
[2] 付兴中.基于ARM的智能车载终端的设计[D].沈阳:东北大学,2009.
[3] 陈启军,余有灵.嵌入式系统及其应用[M].上海:同济大学出版社,2011.
[4] 朱炳瑜,肖纯贤,陈永虎,等.智能车载系统的设计[J].南开大学学报,2011,44(6):14⁃17.
[5] 杨凯悦.远程汽车状态监控及故障诊断系统的研究[D].上海:上海交通大学,2012.
[6] 周温庆,冯文菲.基于GIS平台的GPS智能车载终端的设计[J].重庆邮电大学学报, 2008(20):73⁃75.
[7] 林承华,覃青生.基于GSM的远程控制系统[J].计算机技术及应用,2012,34(1):40⁃42.
[8] 汪春华,王文扬.基于汽车行驶记录仪监控系统的电源处理和设计[J].汽车电器,2011(7):46⁃49.
[9] 樊士一.基于μC/OS⁃Ⅱ的车载操作系统设计与实现[D].合肥:中国科学技术大学,2010.
[10] 陈志旺.STM32嵌入式微控制器快速上手[M].北京:电子工业出版社,2012.