ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Hurys毫米波雷达调试软件与CAN分析仪驱动联调指南

Hurys毫米波雷达调试软件与CAN分析仪驱动联调指南

简介:面向毫米波雷达调试工程师与汽车电子学习者的Hurys雷达调试软件及CAN分析仪驱动合集,可用于雷达参数配置、目标数据可视化、故障诊断与固件更新,也覆盖南京来可与创芯科技分析仪的驱动安装、总线仿真、数据捕获及波形查看等环节。压缩包共19个文件、约5.6MB,内含可执行程序、系统驱动与配置文件、说明文档、演示文稿及嵌套压缩包,借助exe和sys文件可完成软件运行与驱动部署,配合inf、cat、dll等组件及文档资料便于排查兼容性问题。已有1720人学习下载。借助其中的配置说明、操作演示和驱动文件,读者可搭建雷达与分析仪联调环境,理解不同分析仪版本的配套选择,并积累从参数设置到通信排错的实践思路,适合作为ADAS毫米波雷达调试的入门与查阅资料。

1. Hurys 毫米波雷达调试包先认清:软件、驱动和 CAN 链路各管哪一段

台架上摆着一块 Hurys 毫米波雷达裸板,手边是一台 CAN 分析仪和一台 Windows 主机,设备管理器里已经冒出未知设备,调试软件点开却扫不到通道——这是毫米波雷达联调现场最常见的开场。这个压缩包解决的不是雷达算法问题,而是把「调试软件」和「CAN 分析仪驱动」配成一套能说话的链路:调试软件负责发配置帧、收目标帧和状态帧,分析仪驱动负责把 USB 设备映射成可被软件和脚本访问的 CAN 通道,雷达本体只认 CAN 电平、波特率和报文协议。适合做雷达台架联调、CAN 报文抓取、配置回读和出厂前功能验证的工程师;新手可以跟着步骤装一遍,熟手重点看后面的通道映射、终端电阻和 ID 过滤边界。

2. 解压与环境验收:把运行库、驱动签名和文件清单先钉死

拿到压缩包先别双击里面的可执行文件。血泪经验是:这类工具包最常见的翻车不是雷达坏了,而是解压到中文路径、缺运行库、驱动没签名,导致调试软件秒退,最后把问题误判成雷达通信失败。先把包展开到一个短英文路径,列出文件类型,再决定安装顺序。下面这条 PowerShell 只做只读展开和清单输出,不改系统设置。

# 以只读方式展开压缩包,避免覆盖原包;7z 路径按本机安装位置替换 $pkg = ".\Hurys雷达调试软件和CAN分析仪驱动.rar" $dst = ".\_radar_toolchain" New-Item -ItemType Directory -Force -Path $dst | Out-Null & "C:\Program Files\7-Zip\7z.exe" x $pkg "-o$dst" -y # 先看文件类型、修改时间和大小,判断哪个目录是软件、哪个是驱动 Get-ChildItem $dst -Recurse -File | Select-Object FullName,Length,LastWriteTime | Format-Table -AutoSize # 记录原包哈希,后续换机器复现时先比对,避免拿到半截包 Get-FileHash $pkg -Algorithm SHA256

-o指定输出目录,-y表示自动确认,适合脚本化展开;Get-FileHash的 SHA256 值建议记在实验记录里,换机器或重新下载后先比对。清单里一般会看到三类东西:调试软件的可执行文件与依赖 DLL、CAN 分析仪的驱动目录(INF/SYS/CAT 等)、以及可能的示例配置或说明文件。不要把所有文件混在一个目录里直接运行,驱动目录和软件目录分开,后面卸载和回滚会省很多事。

2.1 文件类型决定安装顺序

先装驱动还是先装软件,取决于包内结构。常见做法是:先确认分析仪驱动目录完整,再装调试软件,最后插硬件。原因很直接——调试软件启动时会枚举 CAN 通道,如果驱动没装好,软件可能直接报「未找到设备」,而这个报错和雷达无关。文件类型与处理顺序可以按下面这张表核对。

文件类型典型作用处理顺序失败表现
INF/SYS/CATCAN 分析仪驱动先装,管理员权限设备管理器未知设备,软件无通道
EXE/DLL雷达调试软件及依赖驱动后装双击秒退、缺 DLL、界面空白
配置文件通道、波特率、DBC 路径软件首次启动后核对能连通道但收不到目标帧
说明/示例报文 ID、配置步骤装前粗读参数填错,误判雷达故障

2.2 运行库和签名先查一遍

调试软件打不开,先看事件查看器和依赖 DLL,不要一上来就重装雷达。用下面的命令检查可执行文件和驱动的签名状态,只输出状态,不展开签名主体,避免把无关信息带进实验记录。

# 检查软件和驱动文件的签名状态;NotSigned 的驱动不要在 64 位系统上硬装 Get-ChildItem $dst -Recurse -Include *.exe,*.dll,*.sys | ForEach-Object { $sig = Get-AuthenticodeSignature $_.FullName [pscustomobject]@{ File = $_.FullName; Status = $sig.Status } } | Format-Table -AutoSize

Status为Valid只说明签名链完整,不代表可以跳过来源核对;NotSigned的驱动文件要先停下来,确认是不是解压不完整或拿错了目录。调试软件依赖的运行库常见是 VC++ 运行库和 .NET 运行时,缺了会表现为「应用程序无法正常启动 0xc000007b」或界面一闪而过。不要从不明来源补 DLL,优先用系统已有运行库或包内自带的依赖目录。

2.3 路径、权限和杀软拦截

解压路径尽量用D:\radar_tool这种短英文目录,避免中文和空格。中文路径本身不一定出错,但某些老工具在拼接配置文件路径时会翻车,表现出来就是「配置保存失败」或「DBC 加载为空」。另外,第一次运行调试软件时用管理员权限试一次,确认不是权限问题;如果管理员能开、普通用户不能开,再回头查安装目录写权限和杀软拦截记录。驱动安装阶段如果杀软弹拦截,先看拦截的是哪个文件,不要直接放行整个目录。配置备份就是后悔药,第 6 章会给一个备份脚本,装完软件先跑一遍。

3. CAN 分析仪驱动落地:从设备识别到 500 kbit/s 链路打通

驱动这层最容易出玄学问题:设备管理器看起来认到了,调试软件却扫不到通道;或者通道能打开,总线一收就报错误帧。处理顺序应该是「先让系统认到硬件,再让驱动绑定正确设备,最后用最小脚本验证收发」。不要先打开雷达调试软件点连接,那样一旦失败,你分不清是驱动、通道、波特率还是雷达供电的问题。

3.1 驱动安装顺序与设备识别

先不要插分析仪,把驱动目录展开,确认 INF 文件和它对应的硬件 ID。然后用管理员 PowerShell 安装驱动;如果本机已经装过旧版驱动,先卸载旧设备再装,避免同一设备绑定到两个驱动包。

# 管理员 PowerShell 中执行;.\driver 换成压缩包内驱动目录 pnputil /add-driver .\driver\*.inf /install # 只读查看当前存在的 USB/串口/CAN 相关设备,确认系统认到了哪一层 Get-PnpDevice -PresentOnly | Where-Object { $_.FriendlyName -match "CAN|USB|Serial|串口" } | Select-Object Status,Class,FriendlyName,InstanceId | Format-Table -AutoSize

pnputil /add-driver把驱动包加入驱动库,/install尝试安装到匹配设备;如果提示需要重启,先重启再插硬件。Get-PnpDevice里重点看Status是否为OK,以及FriendlyName是否出现分析仪对应的通道设备。若设备管理器里是黄色感叹号,先看设备属性里的错误代码:代码 28 通常是驱动未安装,代码 52 通常是签名或完整性校验没过,代码 10 通常是设备启动失败。不要用「强制安装不匹配驱动」去赌,通道能打开但收不到帧,后面排查成本更高。

3.2 通道号不是插口号

多通道分析仪常见一个盒子两个 CAN 口,软件里通道号从 0 开始,但物理插口可能标的是 CAN1、CAN2。第一次接线建议只接一个口,脚本里固定--channel 0,确认能收到雷达帧后再换口验证通道映射。如果调试软件里通道列表和物理丝印对不上,用最小接收脚本逐个通道试,不要同时开两个通道抓同一路总线,否则容易把回环帧和真实帧混在一起。CAN_H/CAN_L 不要接反,屏蔽层和地线按分析仪说明处理;台架上雷达和分析仪共地,电源地和 CAN 地不要悬空。

3.3 用 python-can 做最小接收验证

驱动装好后,先用脚本验证「能不能收到任意帧」,再打开调试软件。下面这段 Python 只做接收和打印,不依赖雷达配置,适合确认通道、波特率和 ID 过滤。

import argparse import time import can def main(): ap = argparse.ArgumentParser() ap.add_argument("--interface", required=True, help="python-can 后端名,按分析仪驱动文档填写") ap.add_argument("--channel", default="0", help="通道号,多通道设备从 0 开始") ap.add_argument("--bitrate", type=int, default=500000, help="CAN 波特率,和雷达侧一致") ap.add_argument("--id", type=lambda s: int(s, 0), default=0x100, help="只打印这个 ID,示例值按 DBC 替换") ap.add_argument("--seconds", type=float, default=5.0, help="接收时长") args = ap.parse_args() bus = can.Bus(interface=args.interface, channel=args.channel, bitrate=args.bitrate) t0 = time.time() total = 0 hit = 0 try: while time.time() - t0 < args.seconds: msg = bus.recv(timeout=1.0) if msg is None: continue total += 1 if msg.arbitration_id == args.id: hit += 1 print(f"id=0x{msg.arbitration_id:X} ext={msg.is_extended_id} " f"data={msg.data.hex(' ')} ts={msg.timestamp:.6f}") finally: bus.shutdown() print(f"total={total} hit=0x{args.id:X}:{hit}") if __name__ == "__main__": main()

--interface必须填分析仪驱动对应的 python-can 后端名,具体名称以驱动文档或python-can支持列表为准;--channel是逻辑通道,不是 USB 插口编号;--bitrate默认 500 kbit/s,必须和雷达侧一致;--id只是示例过滤值,实际按 DBC 或报文表替换。脚本先打印total,再看hit:total为 0 说明通道没打开、波特率不对或物理层没通;total有值但hit为 0,多半是 ID 或标准帧/扩展帧过滤问题。bus.shutdown()一定要放在finally里,否则脚本异常退出后通道可能被占用。

4. 雷达调试软件连接:通道映射、报文周期与配置回读

驱动和最小接收都过了,再开调试软件。连接顺序建议是:先给雷达上电,确认分析仪通道能收到总线活动,再打开调试软件选通道、设波特率、加载 DBC,最后点连接或扫描。这个顺序能把「软件连不上」拆成「总线有没有帧」和「软件有没有认到通道」两段,排查时不会一锅粥。

4.1 连接前的四个硬参数

毫米波雷达调试最常见的参数就四个:通道、波特率、终端电阻、报文 ID。通道错了软件列表里看不到设备;波特率错了总线错误帧飙升;终端电阻少了短距离可能能通,稍长一点就偶发丢帧;报文 ID 错了表现为「能连上但读不到目标」。参数表如下,具体值以雷达手册和 DBC 为准。

参数常见设置检查方法填错后的表现
CAN 通道0 或 1,按物理口映射用最小脚本逐通道收帧软件无通道、打开失败
波特率500 kbit/s分析仪和雷达侧一致错误帧多、收不到帧
采样点80% 左右分析仪可设则与雷达一致偶发错误帧、误码
终端电阻总线两端各 120 Ω断电测 CAN_H/CAN_L 约 60 Ω短距能通,长距丢帧
报文 ID按 DBC/报文表全接收后再过滤能连上但无目标数据

4.2 配置回读比「点成功」可靠

调试软件提示连接成功后,不要只看界面上的绿灯。找配置回读或参数读取功能,把关键参数读一遍:雷达工作模式、报文周期、目标输出格式、安装角度或坐标系参数。改完参数后等一个周期再读回,确认写入生效。配置类报文往往不是单帧,可能涉及多帧传输;如果回读失败,先用分析仪看是否有首帧、连续帧和流控帧,不要只盯着一条 ID。回读成功后立刻备份配置目录,第 6 章会给脚本。

4.3 用周期统计确认雷达在发

界面能连上不代表雷达在稳定输出。用下面这段脚本统计各 ID 的到达周期,判断目标帧和状态帧是否按预期在发。

import argparse import collections import time import can def main(): ap = argparse.ArgumentParser() ap.add_argument("--interface", required=True) ap.add_argument("--channel", default="0") ap.add_argument("--bitrate", type=int, default=500000) ap.add_argument("--seconds", type=float, default=10.0) args = ap.parse_args() bus = can.Bus(interface=args.interface, channel=args.channel, bitrate=args.bitrate) last = {} periods = collections.defaultdict(list) total = 0 end = time.time() + args.seconds try: while time.time() < end: msg = bus.recv(timeout=1.0) if msg is None: continue now = time.time() total += 1 cid = msg.arbitration_id if cid in last: periods[cid].append((now - last[cid]) * 1000.0) last[cid] = now finally: bus.shutdown() print(f"total={total}") for cid, vals in sorted(periods.items()): if len(vals) < 3: continue avg = sum(vals) / len(vals) print(f"id=0x{cid:X} n={len(vals)} avg={avg:.2f}ms " f"min={min(vals):.2f}ms max={max(vals):.2f}ms") if __name__ == "__main__": main()

--seconds是统计窗口,台架验证建议 10 秒起步;n是样本数,少于 3 的 ID 不打印,避免把偶发帧当周期帧。avg明显偏离 DBC 里的周期值,先查总线负载和终端电阻;max比avg大很多,常见原因是分析仪 USB 缓冲、主机负载或总线错误重传。这个脚本只统计到达时间,不解析信号,适合在打开调试软件之前做一次「黑匣子」式确认。

5. 避坑与排查:驱动签名、终端电阻、波特率和 ID 过滤的四次翻车

这一章按「现象 → 原因 → 解决」记录四类高频翻车。每一项都建议在台架上复现一次,知道失败长什么样,现场才不会把驱动问题误判成雷达故障。

5.1 现象:设备管理器有串口,调试软件扫不到通道

现象是插上分析仪后设备管理器出现串口或 USB 设备,状态显示正常,但调试软件通道列表为空,点扫描也没有反应。原因通常不是硬件坏,而是只装了串口部分,没有装 CAN 后端驱动;或者驱动绑定到了旧版设备实例,软件枚举的是另一套接口。另一种情况是通道被上一个脚本占用,软件打开失败但不一定有明确提示。

解决顺序:先在设备管理器卸载该设备并勾选删除驱动包,拔掉分析仪,重启,再按第 3 章用pnputil安装包内驱动;然后用最小 Python 脚本确认通道能打开。如果脚本能打开、软件不能,查软件安装目录下的通道配置文件和运行权限,必要时用管理员权限启动一次。还不行就看软件日志目录,确认它枚举的是哪个后端名称。不要反复插拔赌识别,通道映射问题靠日志和脚本定位更快。

5.2 现象:总线错误帧多,偶发丢帧

现象是能收到帧,但分析仪错误计数上涨,周期统计里max明显偏大,调试软件偶尔提示通信超时。原因常见是终端电阻不对:总线两端没有各接 120 Ω,或者中间节点多接了终端,等效阻值偏离 60 Ω;也可能是 CAN_H/CAN_L 接反、屏蔽层处理不当、雷达和分析仪不共地。短距离台架有时不接终端也能通,一换长线就翻车。

解决:断电后用万用表测 CAN_H 与 CAN_L 之间阻值,两端各 120 Ω 并联应接近 60 Ω;如果只有 120 Ω,说明另一端没接终端;如果接近 40 Ω 或更低,说明多接了终端。台架上把总线改成菊花链,不要星形分叉;分析仪和雷达共地,电源地先接好再上电。测完电阻再上电看错误帧计数,不要带电插拔 CAN 线。

5.3 现象:波特率一致但收不到目标帧

现象是总线有帧,最小脚本total大于 0,但调试软件或过滤脚本收不到目标 ID,界面一直显示无目标。原因可能是 ID 过滤掩码设错、把扩展帧当标准帧、或 DBC 里的 ID 是十六进制而软件里填了十进制。还有一种情况是只开了接收过滤,没有开全接收,配置帧能过但目标帧被挡掉。

解决:先把过滤全部关掉,用全接收模式看总线上到底有哪些 ID;确认目标帧是 11 位标准帧还是 29 位扩展帧,脚本里看is_extended_id;再把 DBC 里的 ID、起始位、长度、字节序和缩放偏移逐项核对。调试软件里如果支持掩码过滤,先把掩码设为全通过,确认能收到后再逐步收紧。不要用「波特率对了就一定能收」的思路,过滤和帧格式同样会让人白忙半天。

5.4 现象:调试软件打开秒退或点连接无响应

现象是双击调试软件一闪而过,或者界面能开但点连接后无响应、进程卡住。原因常见是缺 VC++ 运行库或 .NET 运行时、安装路径含特殊字符、配置文件损坏、杀软拦截了驱动通信 DLL。也有可能是软件启动时自动打开上一次的通道配置,而那个通道已经被拔出,导致枚举超时。

解决:先看 Windows 事件查看器里的应用程序错误,确认是缺 DLL 还是异常代码;把软件放到短英文路径,删掉或重命名用户目录下的配置文件再启动;用管理员权限运行一次,排除权限问题;驱动通信 DLL 被拦截时,把软件目录加入杀软排除项前先核对文件哈希。点连接无响应时,先用最小脚本确认通道没被占用,再关掉其他 CAN 工具。配置备份仍然要做,改坏配置后能快速回滚。

6. 进阶验证:DBC 解码、配置备份和 30 分钟周期压测

台架能通之后,我一般会做三件事再交付:备份配置、用 DBC 做信号级抽检、跑 30 分钟周期统计。配置备份是后悔药,改参数前先执行下面这段 PowerShell,路径按软件实际配置目录替换。

# 改雷达参数前先按时间戳备份配置目录,避免回读失败后找不到原值 $ts = Get-Date -Format "yyyyMMdd_HHmmss" $src = ".\config" $dst = ".\radar_backup_$ts" New-Item -ItemType Directory -Force -Path $dst | Out-Null Copy-Item "$src\*" $dst -Recurse -Force Get-ChildItem $dst -Recurse -File | Measure-Object -Property Length -Sum | Select-Object Count,Sum

$src换成调试软件实际读写配置的目录,Copy-Item的通配符会把子目录一起复制;Measure-Object只用于确认备份不是空目录。备份完成后把目录设为只读,避免误覆盖。DBC 抽检不要只看一条信号,挑目标距离、速度、角度各一条,用已知物理量反算原始值,确认起始位、字节序和缩放偏移没搞反。30 分钟周期压测重点看max和丢帧计数,通过标准可以按下面这张表卡。

验证项通过标准失败动作
配置备份文件数和总字节与源目录一致重新备份,检查写权限
DBC 解码三条信号物理量在合理范围核对起始位、字节序、缩放偏移
周期统计目标帧周期波动小于 20%查终端电阻、总线负载、USB 缓冲
长时压测30 分钟无错误帧上涨、无通道掉线换 USB 口、缩短线束、复测终端

从那以后我每次上雷达都强制走一遍「备份配置 → 测终端电阻 → 全接收看 ID → 周期统计」,这个顺序救过我好几次,也避免把驱动问题误判成雷达故障。需要这个 Hurys 毫米波雷达调试软件和 CAN 分析仪驱动压缩包的同行,从文末入口取;拿到后先按第 2 章列清单、第 3 章验通道,别一上来就点连接。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进