魏 巍,闻利群*,邸丽霞,冯铁山
(1.中北大学化工与环境学院,太原 030051;2.北方自动控制技术研究所,太原 030006;3.北京宇航系统工程研究所,北京 100076)
基于CAN总线的行车记录仪设计
魏 巍1,闻利群1*,邸丽霞2,冯铁山3
(1.中北大学化工与环境学院,太原 030051;2.北方自动控制技术研究所,太原 030006;3.北京宇航系统工程研究所,北京 100076)
为保障行车安全,设计了一种基于CAN总线通信技术的行车记录仪。该行车记录仪硬件部分选用STM32F105V8微处理器实现了对车辆各种状态信息的接收,并选用Hi3520D多媒体芯片,实现了对车辆四周环境信息的视频监控,软件部分基于嵌入式Linux平台,实现了视频存储、视频回放等功能。长期试验证明,该系统可有效监控行车过程中的各种信息,稳定可靠,有较高的应用价值。
行车记录仪;CAN总线;数据处理;Hi3520D芯片;视频回放
随着社会经济的快速发展,汽车大量普及,然而汽车为大众带来便利的同时交通事故的发生率也逐年递增。为保证车辆安全有序的行驶以及在事故发生时能够正确的判断责任,交管部门在事故频发路段都安排有摄像头和交警。但是,这些监督措施并不能满足安全行车的多方面监督要求,如:高速行驶时中的行驶监控、车辆的自身状态和“碰瓷”现象等。本文将安全要求和电子技术相结合,设计了记录行车过程中各种信息的智能设备——行车记录仪[1]。
为实时监督汽车行驶中的各项数据,汽车上安装有多个电子控制装置,如发动机转速控制器、车速控制器、油温控制器等。为了使这些控制器在不断地和被控制部件交换信息的同时实现全车信息实时共享,CAN总线应运而生[2]。CAN总线具有数据传输灵活可靠、容量大、容错率高、实时性好等多个优点,满足了各部件之间的通讯要求。
本文中设计的行车记录仪主要可分为6个模块:最小系统模块、视频采集模块、视频存储模块、CAN数据接收模块、显示模块、视频回放模块。具体的系统框架图如图1所示。
该设备采用主从板结构,主板以中央处理器Hi3520D芯片为核心,负责采集车辆四周的视频环境信息;从板以微处理器STM32F105V8芯片为核心,和收发器TJA1040组成CAN总线节点,接收CAN总线上车辆行驶过程中的各项状态信号,如:车速、发动机转速、水温、油温等。最后,车辆的状态信息和四路视频信息经处理后经显示器显示。
图1 系统框架图
2.1 CAN总线电路设计
CAN总线通信网络主要由CAN_High、CAN_Low信号线和通信节点3部分组成,以差分信号进行通信[3]。作为汽车通信的标准协议,CAN总线通信距离可达40 m,最高传输速度为1 Mbyte/s,通过了ISO11898以及ISO11519协议进行标准化[4]。当CAN通信节点需要发送信息时,CAN控制器由CAN_Tx发送命令至CAN收发器,经转换为差分信号传送至CAN通信网络。当CAN通信节点接收信息时,和发送信息的流程相反。具体通信网络图如图2所示。
图2 CAN总线通信网络图
图3 CAN总线通信节点电路图
本设计选用内部集成了CAN控制器的STM32F105V8微处理器和CAN总线收发器TJA1040组成通信节点[5]。STM32F105V8是基于ARM的32位微处理器,内核频率高达72 MHz;内置Flash和SRAM存储器;具有丰富的外设接口,同时内部集成CAN控制器,具有高效处理数据的能力。具体的CAN总线节点电路图如图3所示。
2.2 Hi3520D中央处理器
中央处理器作为系统的核心,担负着数据处理和命令收发的责任。本设计中,中央处理器主要功能为实现采集和处理车辆四周的视频信息,故选用Hi3520D芯片。Hi3520D芯片基于ARM Cortex-A9内核,内置多种高速Cache,最高工作频率可达660 MHz,可实现视频硬件加速,符合录制车辆四周视频信息的实时性要求;且芯片内部集成了多功能视频解码器、VCMP、VPSS和TDE多个模块,在抓拍的同时可实现同编同解,视频处理能力强大,满足了设计所需的要求[6]。
2.3 视频采集电路
车辆行驶过程中的视频信息作为事故处理时的重要凭证,是行车记录仪需要记录的最主要信息。本设计选用RN6318A芯片实现对四路摄像头采集到的视频信息进行A/D转换,并传送至Hi3520D芯片进行后续处理。该芯片支持8路视频输入,两路视频输出,满足了四路摄像头的输入要求。具体的视频采集电路如图4所示。
本文的软件设计分为两部分,一部分是从板对于CAN总线数据接收的软件设计,采用开发工具MDK,实现了对车辆自身信息的采集;另一部分是主板实现视频监控的软件设计,针对Hi3520D芯片采用嵌入式Linux操作系统。Hi3520D芯片具有完整的开发函数库,本设计利用所提供的函数实现了其他模块的设计。实现方法为:四路视频采集到的视频信息转换为模拟信号后,通过存储模块存放在硬盘和U盘中,或者经过通过视频回放功能直接显示,同时CAN节点读取的车辆信息传送到显示器显示车辆信息。
3.1 CAN总线接收解析数据软件实现
如图5所示,是CAN总线接收解析数据的流程图。首先,对各个接口进行初始化,然后进入等待中断阶段。软件中设置有标志性变量flag,当接收到中断信号时flag=1,根据不同的id选择不同的函数。解析结束后flag=0,重新进入中断等待下一次数据接收。
图5 CAN总线接收解析数据流程图
详细步骤为:(1)通过函数对CAN接口进行配置,包括GPIO初始化、中断配置、模式配置以及过滤器配置。(2)选用STM32F105V8芯片的CAN1接口接收报文信息。接收到报文时,提前配置好的过滤器会对其进行筛选,若报文的ID和过滤器的标识符相同,则该报文会被存储至FIFO的邮箱中[7~8]。应用程序访问FIFO的邮箱,读取收到的报文信息。读取成功后释放缓冲区邮箱,等待下一次的报文。(3)读取报文结束后,根据接收报文的ID和存储于Can data中的ECU单元进行比较,选择对应的解析函数对数据进行下一步的处理。
根据协议书,Can data结构体中定义了各个ECD报文信号,具体定义如下:
Public Structure Can data
CH_2B0_BW75
CH_320_BW75
CH_326_BW75
CH_32A_BW75
……
CH_373_BW75
Can data中的每个成员也是一个结构体,例如CH_320_BW75结构体的的定义如下:
Structure CH_320_BW75
float ESP_Vehicle_Speed //行驶车速信号
float EMS_Engine Cool Temperature //冷却液温度信号
float EMS_Engine Speed //转速信号
……
Int CH_Gate way Failure Flag //网关故障信号
例如接收到标识为0x00000320的报文时,会对应选择CH_320_BW75的结构体,调用handle CH_320()函数对数据进行处理,得到车辆的状态信息。
为实验CAN总线接收数据的正确性,模拟发送一组数据对其进行测试。对照协议书可知,车速,发动机转速、冷却液温度这3个信号在结构体CH_320_BW75中;换挡位置、发动机运行状态在结构体CH_2B0_BW75。模拟发送的数据如表1所示。
表1 模拟发送CAN数据表
对应的八位数据,控制部件的实际值可根据给出的公式确定,计算结果见表2所示。
实际值=(数据*精度值)+偏移量值 (1)
表2 计算结果
图6 行车记录仪计算结果
行车记录仪计算结果如图6所示。
经对比,手算结果和行车记录仪计算结果相同,CAN总线数据传输安全可靠。
3.2 视频存储模块软件设计
本模块设计主要实现对于四路视频采集信息的视频处理编码等,并将处理后的数据存储至硬盘或U盘中。视频存储模块软件流程图如图7所示。
为方便进行视频回放,首先进行时钟同步,然后检测设备是否插入存储卡,若检测到存储卡则调用start_storage Stream()函数开始视频压缩并存储,同时判断存储卡是否拔出,拔出后调用stop_storage Stream()函数停止存储程序。当数据存储至硬盘后,释放缓存,进入下一次存储,以防止缓存不足导致漏秒现象的发生。存储的文件名称依次以视频开始创建的时间命名,文件格式为.h264。
图7 视频存储模块软件流程图
测试过程中存储于硬盘中的视频文档如图8所示。
图8 存储文件截图
图9 视频回放流程图
3.3 视频回放模块软件设计
视频回放的实现过程和视频存储的过程刚好相反,调用了Hi3520D芯片的视频解码以及视频输出单元。软件流程图如图9所示。
当按下回放键时,系统调用start_play back()函数开始视频回放,直到再次按下回放键,调用stop_play back()函数停止回放。具体start_play back()函数工作流程为:(1)对系统初始化,开启显示器,配置视频输出通道。(2)依次对视频解码通道的码流缓存大小、所支持的解码图像的最大分辨率、解码协议类型和优先级进行配置。(3)调用SAMPLE_VOMM_VDEC_Bind VO()函数将视频解码和视频输出设备相关联。(4)通过对文件名,存储时间的检索在硬盘中找到需要的文件,按照设置的传输方式发送至视频解码通道进行调用SAMPLE_VDEC_Send Stream()函数进行视频解码,完成回放。查找回放视频文件界面如图10所示。
图10 查找视频文件界面
为测试行车记录仪的性能,对其进行了装车测试,如图11所示为装车测试图。测试结果表明系统运行良好,稳定。
本设计以CAN总线为基础,实现了对车辆行驶过程中的信息采集和视频记录,为行车安全提供了有力的保障,具有较高的应用价值。
图11 装车测试图
[1] Wu Jian,Li Yabin,Li Jing.CAN Bus of Automotive Driving Force Control System Based on SAE Protocol[J]. Journal of Jilin University(Engineering and Technology Edition).2009,39(4):855-858.
[2] 于成毅. CAN总线数据记录仪的研究与设计[D]. 太原:中北大学,2011.
[3] 刘火良,杨森. STM32库开发实战指南[M]. 北京:机械工业出版社,2013:213-234.
[4] Li Ran,Wu Junfeng,Wang Haiying. Design Method of CAN BUS Network Communication Structure for Electric Vehicle[C]//Strategic Technology(IFOST). 2010 International Forum. 2010:326-329.
[5] 亢雪琳. 基于STM32的CAN总线通信设计[D]. 长春:吉林大学,2013.
[6] Hi3520D/Hi3515A/Hi3515C H.264编解码处理器用户指南[M]. 海思公司,2013:3-7.
[7] William Prodanov,Maurizio Valle,Roman Buzas. A Controller Area Network Bus Transceiver Behavioral Model for Network Design and Simulation[J]. IEEE Transactions on Industrial Electronics,2009,56(9):3762-3771.
[8] 李平,魏长宝. CAN总线检测系统的多接口设计研究[J]. 电子器件,2015,38(4):917-921.
Design of the Vehicle Traveling Data Recorder Based on the CAN Bus
WEIWei1,WENLiqun1*,DILixia2,FENGTieshan3
(1.North University of China School of Chemical Engineering and Enivironment,Taiyuan 0300511,China;2.North Automatic Control Technology Institute,Taiyuan 030006,China;3.Beijing Institute of Astronautics System Engineering,Beijing 100076,China)
In order to ensure traffic safety,a vehicle traveling data recorder based on CAN bus communication technology was designed. In the hardware part of the vehicle,the STM32F105V8 microprocessor was used to receive various states of vehicle information,and the Hi3520D multimedia chip was chose to video monitoring the vehicle surroundings information. This technology realized the video storage,video playback and other functions based on embedded Linux platform on the software. The long term results show that,this design can effectively monitor all kinds of information in the process of driving and has higher application value.
car driving recorder;CAN bus;data processing;Hi3520D chip;video playback
2016-03-30 修改日期:2016-05-03
C:8520
10.3969/j.issn.1005-9490.2017.02.047
TP391
A
1005-9490(2017)02-0500-06