微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 2.4GHz射频的CAN总线汽车故障诊断仪

2.4GHz射频的CAN总线汽车故障诊断仪

时间:01-03 来源:互联网 点击:

行控制。当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端软件设计。

  3.1 发射端软件设计

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

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

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

  3.2 接收端软件设计

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

  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所列。

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

4 结论

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

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

网站地图

Top