基于第二代车载诊断系统接口的汽车嵌入式诊断仪设计

2023-08-14 10:36秦颖颀陈雪峰
汽车工程师 2023年8期
关键词:存储模块收发器电源模块

秦颖颀 陈雪峰

(上海蔚来汽车有限公司,上海 201800)

1 前言

第二代车载诊断系统(On Board Diagnostics Ⅱ,OBD Ⅱ)将汽车排放和驾驶相关故障的诊断标准化,使不同制造商生产的车辆具有相同的故障代码[1-7]。目前,大多数整车制造商采用OBD Ⅱ标准+ISO 14229 统一诊断服务(Unified Diagnostic Services,UDS)协议[8]开发车载电子控制单元(Electric Control Unit,ECU),车载诊断功能逐步扩展为支持多种车载ECU 的诊断。但汽车诊断仪的种类繁多,体积和质量通常较大,成本较高,且不支持二次开发或者二次开发比较困难,难以满足整车制造商的特殊使用需求,如软件定制化更改、研发阶段大量的诊断工具需求、无网络覆盖的离线场景等。

为此,本文开发一种嵌入式诊断仪,通过连接整车OBD Ⅱ接口与整车诊断控制器局域网(Controller Area Network,CAN)总线通信,并设计3种工作模式,即与外部手机等蓝牙设备通信、与外部计算机等串行接口设备通信、自行记忆上一次的指令,快速执行各项诊断任务,如诊断故障码(Diagnostic Trouble Code,DTC)删除与读取、开关运输模式、执行器标定等。诊断仪硬件基于STM32 单片机开发,并设计电源模块、快闪存储(Trans Flash,TF)卡存储模块、蓝牙模块、CAN 驱动模块、发光二极管(Light Emitting Diode,LED)显示模块、蜂鸣器发声模块以及通用串行总线(Universal Serial Bus,USB)接口模块等外设扩展模块;诊断仪软件基于C语言进行嵌入式开发。

2 诊断仪基本工作原理

OBD Ⅱ接口一般采用标准尺寸的16 针梯形母接头,诊断仪通过OBD Ⅱ接口与车辆网关的诊断CAN 总线 连接,进 而接入整 车ECU 的CAN/LIN 网络,与整车ECU 进行诊断通信,引脚及其定义如图1和表1所示。本文主要使用6个引脚,即Pin1、Pin4、Pin5、Pin6、Pin14、Pin16:Pin4、Pin5、Pin16 用于获取12 V 电源,为诊断仪供电;Pin6、Pin14 是诊断CAN总线引脚,诊断仪通过一路CAN(500 kbit/s)与网关通信,支持CAN 2.0A/B 数据传输协议和UDS 协议,支持各种中断服务,保证信息及时处理;Pin1 为点火信号端子KL15,用于获取车辆点火/上电状态。

表1 OBD Ⅱ接口引脚定义

图1 OBD Ⅱ接口引脚排布

该诊断仪支持BLE 4.0协议,可通过蓝牙接口与外部手机连接,也可通过USB 2.0接口与外部计算机设备连接。在线模式下,手机和计算机可以发出不同的诊断指令,同时显示诊断结果。离线模式适用于执行单一指令操作,如打开运输模式,诊断仪通过记忆之前的指令,每次上电时均执行同一指令。

诊断仪支持TF卡存储,可将所有诊断过程信息存储到TF卡上,用于测试结果追溯。诊断仪的系统原理如图2所示。

图2 诊断仪的系统框图

3 电路结构

3.1 MCU最小系统电路

主控制器选择STM32F103 系列微控制单元(Micro Controller Unit,MCU),采用ARM Cortex-M内核的32 位微控制器,供电电压为2.0~3.6 V(一般选择3.3 V),最高工作频率为72 MHz,片上集成256 KB的闪存(Flash Memory),48 KB 的静态随机存取存储器(Static Random-Access Memory,SRAM),可满足中等复杂度的程序要求[9]。该MCU具有丰富的硬件接口,如CAN 2.0B 接口、安全数字输入输出(Secure Digital Input and Output,SDIO)接口、通用同步/异步收 发 器(Universal Synchronous/Asynchronous Receiver/Transmitter,USART)接口,非常适合作为OBD诊断仪的主控制器,最小系统电路如图3所示。

图3 主控制器最小系统电路

3.2 电源电路

诊断仪的输入电压为12 V,从OBD 引脚直接取电,通过两级降压:一级降压芯片选择78M05 三端正线性稳压器,将电压降至5 V,用于CAN 收发器的供电,78M05 具有芯片体积小、输出电流大(峰值电流为700 mA)、输出电压噪声低(40 μV)、工作温度范围大(-65~150 ℃)的优点[2],无需使用散热片;二级降压芯片选择AMS1117-3.3 三端正向低压降稳压器,将电压降至3.3 V,用于MCU系统、SD卡、蓝牙、串行接口等模块的供电,AMS1117-3.3芯片体积小、输出电流大(峰值电流为1 A)、工作温度范围大(-40~125 ℃)、工作压差低(最低为1 V),同样无需使用散热片[10]。电源模块电路如图4所示。

图4 电源模块电路

3.3 CAN收发器电路

MCU 的CAN 接口无法直接发送和接收符合CAN 总线物理层协议的差分信号,需要通过CAN 收发器进行电平转换,本文选择TJA1050 作为CAN 收发器。TJA1050 的供电电压为4.75~5.25 V(一般选择5 V),电磁兼容性(Electromagnetic Compatibility,EMC)斜率控制较好,无源特性良好(不上电时总线引脚漏电流为0 μA),总线传输速率最高支持1 Mbit/s,输入电平兼容3.3 V MCU 电平,与GB/T 41588.1—2022《道路车辆 控制器局域网(CAN) 第1 部分:数据链路层和物理信令》完全兼容,具有总线引脚短路保护功能[11],其电路如图5所示。

图5 CAN收发器电路

3.4 蓝牙模块接口电路

根据诊断仪的实际使用场景,人机交互均在近距离条件下进行,故选择蓝牙作为无线通信方式。选用HC-05 蓝牙模块,通过MCU 的USART 串行接口驱动,可以与手机等外部蓝牙设备进行无线通信。HC-05 蓝牙模块体积较小,适合直接焊接在印刷电路板(Printed Circuit Board,PCB)上,支持主、从模式(诊断仪选择从模式),供电电压为3.3~3.6 V(一般选择3.3 V,完全兼容MCU TTL 电平),指令集丰富,通信距离可达8 m,工作稳定,其与MCU 的接口电路如图6所示。

图6 蓝牙模块接口电路

3.5 数据存储模块接口电路

选择TF 卡作为数据存储模块,TF 卡相对SD 卡体积较小,适用于PCB 空间有限的场景。通过MCU自带的SD/TF 卡驱动接口SDIO 模块进行控制,很容易实现文件分配表(File Allocation Table,FAT)文件系统的创建和编辑,存储数据稳定,诊断结果可以实时备份在TF卡中,存储模块电路如图7所示。

图7 TF卡存储模块电路

3.6 串行接口模块电路

为实现诊断仪与计算机等设备的有线通信,选择CH340 作为USB 转通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)芯 片。CH340 完全兼容USB 2.0,与Windows 的串行接口应用程序也完全兼容,供电电压支持3.3 V 和5 V,支持50 bit/s~2 Mbit/s 传 输 速 率[12]。选 择MCU 的USART1 模块接口用于串行接口通信,同时作为STM32 的程序烧写口,串行接口电路如图8 所示,PCB 上也同时预留了串行线调试(Serial Wire Debug,SWD)+烧写接口。

图8 串口模块电路

3.7 其他辅助电路

其他的辅助电路包括:

a.声光指示模块电路。使用一支蜂鸣器发声,使用RGB混色LED发光,电路如图9所示。

图9 声光指示模块电路

b. KL15 光耦隔离电路。使用EL357 光耦实现电气隔离和降压,电路如图10所示。

图10 KL15光耦隔离电路

c. 离线时钟电源模块电路。使用纽扣电池方案,在不连接实车时保持诊断仪的时钟正常运行,保证诊断结果可追溯,电路如图11所示。

图11 离线时钟电源模块电路

d.OBD Ⅱ接口电路。选择标准尺寸的OBD Ⅱ公头作为主接插件与车端对接,实现诊断通信,电路如图12所示。

图12 OBD Ⅱ接口电路

4 软件实现方法

使用C 语言进行嵌入式程序开发,在Keil 集成开发环境(Integrated Development Environment,IDE)下进行编译和调试,编程的主体思路是软件配合硬件,即先完成电路设计、PCB布线,再进行软件开发,因为相对于硬件更改,软件调整的灵活度更高。目前,STM32编程一般分为3个层级,即底层硬件抽象层(Hardware Abstraction Layer,HAL)、中间驱动层、上层应用层,为提高程序的可读性和简洁性,本文未采用HAL 编程,采用中间驱动层+上层应用层的编程方式。

驱动层采用STM32官方固件库函数作为应用程序接口(Application Programming Interface,API),取代传统的直接寄存器配置方案,以提高编程效率和代码的可读性。具体功能包括通用输入输出(General Purpose Input Output,GPIO)端口初始化、CAN模块初始化、USART模块初始化、SDIO模块初始化、中断初始化等,使用的典型固件库函数集合如表2所示[13]。

表2 主要使用的固件库函数集

上层应用层通过调用中间驱动层API封装具体功能需求。应用层函数主要包括2 类:一是实现基础通信功能的函数,包括CAN 信号发送和接收、蓝牙/串行接口消息的发送和接收、TF 卡的读写操作、声光逻辑控制等;二是实现具体应用,包括各种UDS诊断控制流等。

诊断仪总体的软件工作流程如图13所示。

图13 诊断仪软件流程

5 应用与测试

诊断仪不主动向手机推送蓝牙信息(除自动发送“AT+INQC”连接信息外,直接忽略该信号即可),任何信息的调取,都需要手机APP 先发送指令,避免误操作,主要功能如表3所示。

表3 诊断功能

针对表3 所示的功能,设计了功能测试和性能测试:功能测试主要包含蓝牙通信、诊断指令执行、诊断结果读取、测试结果日志打印;性能测试主要包含长时间开机(大于10 h)、反复上下电(5 000次)、循环执行指令功能。测试中发现的一些严重软件错误(Bug),如数组越界导致异常重启、压力测试下程序跑飞,进行了代码修复,可以实现连续开机超过10 h和上下电5 000次无异常。

6 结束语

本文设计了一种基于OBD II 接口的诊断仪,采用汽车行业标准的软、硬件接口(软件采用CAN 2.0/UDS 协议接口,硬件采用OBD II 接口),设计了电源模块、TF 卡存储模块、蓝牙模块、CAN 驱动模块、LED显示模块、蜂鸣器发声模块、USB接口模块等外设扩展模块,采用分层架构进行了嵌入式软件开发,对于UDS 的基本功能,均提前封装为中间层API,作为原子能力供上层APP 调用,降低了软件开发的难度,提高了功能迭代的效率。

猜你喜欢
存储模块收发器电源模块
GRAS发布新12Bx系列、支持TEDS的测量麦克风电源模块
Burden of Cirrhosis and Other Chronic Liver Diseases Caused by Specific Etiologies in China, 1990−2016:Findings from the Global Burden of Disease Study 2016
电源模块产品的智能制造探索与实践
西门子电源模块故障诊断方法研究
Virtex5 FPGA GTP_DUAL硬核两个收发器独立使用的实现
MiR-125a-5p is Upregulated in Plasma of Residents from An Electronic Waste Recycling Site
数据采集系统在环保工程中的应用研究
铁路电子25Hz电源模块主备切换故障分析与改进
弹载数据存储模块抗高过载防护技术研究
富士通半导体推出收发器家族全新LTE优化多频单芯片MB86L13A