《电子技术应用》
您所在的位置:首页 > 模拟设计 > 业界动态 > 车载CAN总线故障诊断仪设计方案

车载CAN总线故障诊断仪设计方案

2020-04-16
来源:与非网

设计一款基于 2.4G 射频的车载 CAN 总线故障诊断仪,详细介绍其工作原理及系统硬件电路,最后分别阐述接收端、发射端和 PC 端的软件模块。

 

该方案采用自动跳频的 2.4G 空中协议,经测试统计误码率保持在有效范围之内,在 14m 内仍能正常工作。采用 USB 作为接收端和 PC 接口,保证了系统的即插即用及数据的高速传输。


控制器局域网络 CAN(Controller Area Network)为汽车内部各种复杂的电子设备、控制器、测量仪器等提供了统一数据交换渠道,已得到广泛的应用。目前,太多数汽车部件都提供了 CAN 总线通信接口。

 

在当今的中高档汽车中,都采用了 CAN 总线技术。针对车载 CAN 总线会出现的故障.结合射频和 USB 的优点,依靠 KWP2000 应用层规定的故障代码,本文提出了一种基于车载 CAN 总线故障诊断仪设计方案。本方案成本低廉,携带方便,具有很强的灵活性与适应性。

 

1 、方案设计

由于采用射频技术,使汽车 CAN 总线数据采集部分和 CAN 总线数据诊断部分得以分离,无需连线,不受空间场地限制,安装携带方便。按照 ISO 有关标准,CAN 总线传输速率最高可达 1 Mbps;但由于汽车内部特殊环境,车载 CAN 总线速率一般在 250 kbps。本系统中射频速率最高可达 l Mbps,可以很好地满足数据传输要求。

 

5e9670d861822-thumb.png

 

发射端采用 USB 作为接收模块和 PC 接口。USB 与 RS232 或 PCI 接口相比,具有用户使用方便,设备自动识别,自动安装驱动程序和配置,支持动态接入和动态配置等优点;其传输速率可达几十 Mbps,并且支持同步和异步传输方式,保证带宽,传输失真小。

 

PC 端应用层软件整合 KWP2000 的应用层协议。KWP2000 是由瑞典制定的一种车载故障诊断协议,已在微机控制的自动变速器、防抱死制动系统、安全气囊、巡航系统中得到广泛应用。它基于 OSI 七层协议,符合 IS07498 标准。其中第 1~6 层实现通信服务的功能,第 7 层实现诊断服务的功能。其应用层提出了一套完整和标准化的诊断代码,本系统利用 KWP2000 的应用层协议,对采集到的 CAN 总线数据进行分析,以实现故障诊断的功能。

 

2、 硬件实现

2.1 系统所用芯片简介

2.1.1 nRF2401 芯片

nRF240l 是单片射频收发芯片,工作在 2.4~2.5GHz ISM 频段;内置频率合成器、功率放大器、晶体振荡器、调制器和标准 SPI 等功能模块;输出功率和通信频道可通过软件进行配置,共有 125 个频道可使用,而且最高速率可达 l Mbps。芯片具有 1.9~3.6 V 宽工作电压,工作能耗非常低。当以一 5 dBm 的功率发射时,工作电流只有 10.5 mA;接收时,工作电流只有 18 mA。


5e9670d86be2e-thumb.png

 

 

nRF240l 有 4 种工作模式:收发模式、配置模式、空闲模式、关机模式。其工作模式由 PWR_UP、CE、CS 三个引脚和配置字节最低位 TX_EN 来决定。

 

收发模式分为 DirectMode 和 ShockBurst。前者在片内对信号不加任何处理,与其他射频收发器相同。后者使用片内 FIFO 堆栈,数据从 MCU 低速送入,但高速发射,而且与射频协议相关的所有高速信号处理都在片内进行。例如,nRF240l 在 ShockBurst 收发模式下自动处理字头和 CRC 校验码,在接收时自动把包头和 CRC 校验码移去;在发送数据时自动加上字头和 CRC 校验码。

 

2.1.2 TMU3100 芯片

TMU3100 是台湾 Tenx 公司 2005 年推出的 RISC 内核的单片机。它嵌入了完全兼容 USBl.1 协议的 USB 控制器,并且提供了低速 USB 接口和 3 个端点,其中 1 个控制输入/输出端点和 2 个中断输入端点。

 

TMU3100 可以配置为标准的 HID 类,可以使用 Windows 操作系统自带的 HID 类驱动程序。这样可以省去开发设备驱动程序的工作,缩短开发周期。TMU3100 芯片结构框罔如图 2 所示。

 

2.1.3 PICl8F2682 芯片

PICl8F2682 是 Microchip 公司新推出的 8 位低功耗 CAN 微控制器,主要资源有:内置标准 CAN 模组、80KB 闪存程序存储器、1 KB 数据 E2PROM、3.3 KBRAM 存储器、8 通道 ADC、1 个 8 位和 3 个 16 位 T1MER、1 个 SPI 和 I2C 串行通信端口和可编程欠压复位功能及低电压检测电路。

 

5e9670d8d0027-thumb.png

 

PIC18F2682 内置增强型的 CAN 总线模块,该模块包含 CAN 协议引擎、信息缓冲和信息控制。CAN 协议引擎自动处理 CAN 总线上所有接收和发送的消息,它可以在接收或发送信息时对数据帧进行解析。只需要首先设置适当的寄存器就可以发送信息,通过相关的寄存器即可得到信息传输的状态。

 

2.2 硬件电路

2.2.1 发射端电路原理

是系统发射端电路原理。CAN 总线接口使用 Microchip 公司内置 CAN 模块的 PIC18F2682 单片机,并由光耦 6N137 进行总线隔离;CAN 总线收发器采用 MCP2551。

 

PIC18F2682 与射频芯片 nRF2401 之间通过标准 SPI 接口 SCK、SDI、SDO 来完成,这样可以大大提高发送速率。对 nRF2401 配置控制使能 CS 和接收、发送使能 CE 分别由 RB4 和 RB5 进行控制。当 nRF240l 接收到数据包时,DRl 将被置高电平,因此 PICl8F2682 通过查询 INT0 的状态可以判断是否接收到数据。

 

2.2.2 接收端电路原理

由于 TMU3100 由 PC 供电,而 PC 机 USB 接口所提供的电压 VDD 干扰较大,故对 VDD 进行了π滤波。

 

由于 TMU3100 没有 SPI 模块,故可以通过 PB[1]、PB[0]按照 SPI 协议与 nRF2401 的 SPI 口来进行通信。对 nRF2401 配置控制使能 CS 和接收、发送使能 CE 分别由 KSO[3]和 KSO[13]控制。nRF2401 接收到数据包后,DRl 将被置高电平,因此 TMU3100 可以通过查询 KSl6 的状态判断足否接收到数据。

 

3、 软件设计

系统的软件设计包括发射端软件设计、接收端软件设计和 PC 端软件设计。

 

5e9670d8d8c5f-thumb.png

 

3.1 发射端软件设计

发射端流程如图 5 所示。软件设计主要实现两项功能:第一是实现 CAN 总线上数据的采集;第二是实现将采集后的数据通过射频进行发射。

 

上电后,首先对 CAN 模块进行初始化。然后初始化 nRF2101,并与接收端建立连接。当发送完 CAN 数据后没有收到 ACK 信号时,就跳频;然后通知发送端准备接收重发的 CAN 数据,直到接收到 ACK 信号。

 

为了防止空中干扰,采用了自动跳频的空中协议,即无论是否接收到 ACK 信号都进行跳频,因此可以防止某个频段的强干扰,进而降低误码率。

 

3.2 接收端软件设计

接收端软件流程如图 6 所示。软件设计主要实现两项功能:第一是实现枚举;第二是实现将接收到的数据通过 USB 上传到 PC。上电后,首先完成对 TMU3100 的配置,并与 PC 机枚举;枚举成功后就对 nRF2401 进行配置,并与发射端建立连接。当接收到数据包后,首先判断是 CAN 数据还是重传数据命令。如果是 CAN 数据包,则向发射端返回 ACK 信号并跳频,然后将接收到的数据通过 USB 传至 PC;如果是重传命令,则先跳频,然后置重传标志,表示下个数据包是重传的数据包。

 

 

5e9670d90a99c-thumb.png


TMU3100 被配置为标准 HID 类,这样就不用为设备开发驱动程序,而是使用 Windows 提供的标准 HID 类驱动程序。

 

3.3 PC 端软件设计

PC 端软件由应用程序和设备驱动程序组成。Windows 为标准 USB 没备提供了完善的内置驱动,本系统采用 Windows 自带的 HID 类驱动,只要将 TMU3100 配置为 HID 类,即可完成与 PC 机的通信。这省去了开发设备的驱动程序,极大地简化了上位机软件的开发。

 

上位机的应用程序首要实现的功能是,要实现对 TMU3100 端点的读写,用 VC++语言编写,可以把 USB 设备当成文件来操作。用 CreateFiile()函数获得 USB 句柄,为读访问或写访问打开指定端点。用 DeviceControl()来进行控制操作,用 ReadFile()从指定端点读取数据,用 WriteFile()向端点写入数据。

 

当 CAN 总线上的数据被采集到 PC 后,就可以进行故障诊断了。故障诊断代码是依照 KWP2000 应用层规定的故障代码设计的,是目前国际上通用的,现将其应用于 CAN 的应用层,将来可以用全新的 CAN 上层协议取代。故障诊断代码定义在 SSF14230 中。SAE J1979 中,由车辆制造商或系统供应者定义的服务标志符数值的不同范围,如表 1 所列。

 

5e9670d979274-thumb.png

 

此表中以十六进制数表示的服务标志符,同数据链路层中数据字节内的 SID 服务识别字节对应。不同的 SID 值代表不同的服务请求,故障诊断程序必须符合此应用层标准,才能识别不同的十六进制代码所代表的不同的故障信息。

 

4、 结论

本文设计的 2.4G 无线车载 CAN 总线故障诊断仪,由于采用了自动跳频的空中协议,所以误码率几乎接近零,在 14 m 内仍能进行可靠的工作。系统使用国际上通用的诊断代码,使程序具有通用性和实用性;以 PC 作为硬件平台,无需专门开发硬件平台,可大大降低开发成本并且易于实现设备的升级和维护;使用 USB 接口和 2.4G 无线通信,具有即插即用、不受空间限制、数据传输实时性强的特点。


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。