微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 基于SAE J1939协议的车辆信息采集与诊断模块

基于SAE J1939协议的车辆信息采集与诊断模块

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

汽车的电磁环境非常复杂,既有内部各模块之间的相互干扰(包括雨刮器、冷却风扇电机、发电机等产生的传导干扰、辐射干扰),也有外界对其产生的干扰(环境电磁场、人体放电和大自然的干扰雷电)。因此本模块的设计主要采用了以下几个方面的抗电磁干扰措施:首先,加装铁氧体互感器件抑制线路板的辐射和外部传导干扰;其次,采用了带隔离及过压保护功能的CAN接口器件;再次,在输入电源处采用TVS管抑制外部传导干扰。
2.2 软件设计
系统的软件设计采用Keil RealView MDK-ARM环境编写,通过J-Link调试仿真器与STM32 F103C8T6的JTAG接口连接,实现在线仿真调试。
ST公司为STM32系列微控制器开发了专门的固件库和接口函数,大大简化了软件开发的过程。系统上电后首先对微控制器的RCC(重启和时钟控制)模块以及NVIC(嵌套向量中断控制器)模块进行初始化,并使能CAN中断,设置CAN屏蔽码和验收码。CAN模块的初始化过程是这样的:a.根据CAN节点相关信息初始化一个CAN_InitTypeDef型结构,并调用CAN_Init函数对CAN接口进行初始化;b.创建CAN_FilterInitTypeDef结构体,调用CAN_FilterInit函数对CAN过滤器进行初始化;c.调用CAN_ITConfig函数对CAN中断源进行使能设置。系统初始化完成后,等待CAN总线接收中断的产生,并判断总线数据是否满足屏蔽条件,将29位标识符报文与验收码、屏蔽码值逐位比较,屏蔽码用于定位相关位(0为相关,1为不相关)。仅当标识符中的相关位与验收码相应位相同时,系统才接收报文;如满足屏蔽条件则从寄存器读取数据并存入缓冲区,并通过CAN Receive函数读取相应数据,再根据SAE J1939协议判断计算车辆工况及故障代码等信息,处理后通过USB或串行口发送到车载多媒体设备和虚拟仪表进行显示。例如:接收的数据为0C FEF2 00 xx xx xx 0D 15 xx xx xx (xx为任意数据),若验收码为Ox00000000,屏蔽码为OxlFFFFFFF,则接收该报文。根据SAE J1939-71协议,此报文为PGN65266,来自发动机ECU;可以得知第4、5字节为平均油耗,并遵循低位在前高位在后的传输方式,计算出车辆平均油耗=原始数×分辨率+偏移量=5389×1/5 12+O=10.5km/L。同理可计算其他车辆工况数据。图3为CAN总线数据接收程序流程图。

3 结语
本文介绍了基于CAN总线和SAE J1939协议的车辆信息采集与诊断模块的设计开发过程,利用STM32F103C8T6微控制器和CAN隔离收发器CTM825lT等器件实现了车辆信息的实时采集,最大限度地利用了器件本身的接口功能并降低了外围电路的成本。本模块工作稳定、性能可靠,软件各部分功能运行完好,并可与影音娱乐产品和虚拟仪表产品相互结合,有一定的实用价值。随着汽车电子化程度的不断提高,CAN总线和SALE J1939协议必将得到更为广泛的应用。

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

网站地图

Top