历史上的今天
今天是:2025年04月15日(星期二)
2020年04月15日 | 一种车载CAN总线故障诊断仪设计方案
2020-04-15
设计一款基于 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,可以很好地满足数据传输要求。

发射端采用 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。

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 串行通信端口和可编程欠压复位功能及低电压检测电路。

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 端软件设计。

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 无线通信,具有即插即用、不受空间限制、数据传输实时性强的特点。
史海拾趣
|
1.一定要有独立的人格、独立的思想。一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定。不要成为灌输教育的牺牲品。 2.在进行职业生涯规划的时候,不妨以此作为思考的出发点。根据不同的职业生涯规划来塑造各自 ...… 查看全部问答> |
|
1、放弃 把握的反面就是放弃,选择了一个机会,就等于放弃了其它所有的可能。当新的机会摆在面前的时候,敢于放弃已经获得的一切,这不是功亏一篑,这不是半途而 废,这是为了谋求更大的发展空间;或者什么都不为,只因为喜欢这样做,因为,年轻就 ...… 查看全部问答> |
|
由于工作原因,将原XP下的NDIS中间层驱动移植到WinCE下面。目前已经完成,并能够成功运行起来,但遇到如下问题: 跑一会TCP数据后,TCP传输变得非常慢,但是ICMP报文传输正常,所以不太可能是网卡驱动的原因,并且其它程序一切正常,仅仅是所有的T ...… 查看全部问答> |
|
因为之前工程师是用利尔达的LSD-PRGS430-IIIA编程器来烧写程序,那个时候TXT文件 都是支持的,一点问题都没有。现在LSD-PRGS430-IIIA编程器坏掉了,所以想用 西尔特3000U编程器来烧写,正好又有430的烧写座子,但问题就随之而来 ...… 查看全部问答> |
|
无线手表开发工具 eZ430-Chronos™ 开发工具用户指南 (Rev. D) eZ430-Chronos 是运动手表中基于 CC430 的高度集成的无线开发系统。它可用作手表系统的参考平台、个人局域网的个人显示器或远程数据收集的无线传感器节点。 无线手表开发 ...… 查看全部问答> |
|
各位大虾,我现在用STM8S003F3做一个简单的门禁控制器,,做出来后,机器用了两天就死机,状态是指示灯亮着,机器按键没有用,断电重新上电又有用,能正常使用,用了两天后又会死机,求帮助啊大虾, 不知道是不是8脚 VACP上面的电容有问题,这个电容我用的680NF ...… 查看全部问答> |
|
各位师傅们,大家好! 求一款可以温控调节电流的芯片和方案 应用于LED大功率,洗墙灯,投光灯,地埋灯。LED灯具的技术关键点之一 散热问题。户外灯具由于安装位置不同,对散热的 ...… 查看全部问答> |
|
【TI首届低功耗设计大赛】试玩Hijack(3):曼码的发送及测试 本帖最后由 sacq 于 2014-11-9 12:47 编辑 使用前一贴里的曼码产生程序,做下测试,验证程序及外围电路。 实际连接: 智能手机(现用iPod)… 查看全部问答> |
|
调了两天双口RAM,头都大,还是没有细读手册,把模式搞错了。 write first 和 read first 两种模式都会改变数据输出总线的数据,只有no change模式下,输入和输出总线是独立的。调试这种东西,不看懂时序,真的是要走不少弯路。 … 查看全部问答> |




