微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于嵌入式车载安全预警系统设计

基于嵌入式车载安全预警系统设计

时间:04-25 来源:互联网 点击:

如图2所示,电源电路设计考虑到应用环境,采取了相应的抗干扰和过流保护措施。为了防止电流过大,输入端串接自恢复保险丝F1保护系统的安全性;D1,D2构成电源极性反接保护电路;C1,C2,C3电容并接电路去除车内电源信号的纹波和高频噪声;输出端L1可以抑制纹波,使LM2596输出稳定的电压;电源输出端对地连接的C4,C5旁路电容也起到稳定环路的作用。

3 系统的软件设计
STM32开发工具选用的是ARM公司4.22版的KeilMDK,采用μVision 4开发环境,通过片上集成的JTAG调试接口通过JLINK V8仿真器与PC相连。
3.1 μC/OS-Ⅱ的简介与移植
为了便于系统的升级与维护,设计中采用了嵌入式实时操作系统μC/OS-Ⅱ。该操作系统具有执行效率高、占用空间小实时性能优良和可扩展性强等特点,最小内核可编译至2 KB,非常适合FLASH容量较小的系统使用。
μ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-Ⅱ的任务规划
操作系统按照功能模块划分为多个任务,并根据各个任务实时性的要求设置相应的运行优先级。分别是:振和内核时钟的定义和初始化,对功能I/O端口的功能定义,初始化中断向量表和堆栈以及各模块的全局变量和数据结构,完成系统的初始化后永久挂起;AppTask_GSM负责与TC35模块有关的控制功能如模块的初始化、短信的发送;AppTask_GPS负责对LEA-5S模块的数据读取和解析;AppTask_Blue负责蓝牙语音模块的控制功能,包括接听、拒接、回拨、结束通话等功能;AppTask_ADXL负责ADXL345模块的数据读取和解析;AppTask_IED为工作状态指示;AppTask_Key为按键控制;监控系统稳定的看门狗任务AppTask_Dog;以及系统运行自带的空闲任务OSTaskldle。
系统整体的任务调度流程图如图4所示。

4 测试
对于该车载系统下面给出基于LabVIEW的GPS实车行驶速度测试,测试界面如图5所示。

5 结语
本文详细描述了基于STM32车载安全预警系统硬件和软件的设计方案。对整个车载系统进行了实车测试,测试结果表明整个系统符合预期的目标,可以实现对车辆的定位、超时、超速、加速度超值、并通过GSM将行车异常状态参数和定位信息发送至远程监控中心,移植的μC /OS-Ⅱ使得该系统具有良好的稳定性和实时性,能满足现代车辆安全远程监管的功能需求。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top