4. TI毫米波雷达软件开发环境搭建
要让一块 TI 毫米波雷达板从“上电亮灯”走到“输出第一帧点云”,需要把一条工具链完整搭起来。这条链路上有五个角色:Code Composer Studio(CCS)负责编译、下载和调试雷达固件;毫米波雷达 SDK(mmWave SDK)提供驱动、算法与例程源码;mmWave Studio用于在 PC 端通过串口配置雷达前端并采集原始数据;UniFlash负责烧写不在 CCS 调试链内的镜像(如 BSS/MSS 元镜像、量产固件);XDS 调试器(板载 XDS110 或外接 XDS200/XDS560)则是 CCS 与芯片之间的物理通道。理解这五者的分工,比记住安装步骤更重要。
一、工具链的分工与依赖关系
很多初学者会把 mmWave Studio 和 CCS 混为一谈。二者的定位完全不同:CCS 面向“开发与调试”,你在这里改代码、编译、单步、看变量;mmWave Studio 面向“配置与采集”,它不编译代码,而是通过 UART 向已经运行固件的雷达发送配置命令(chirp 参数、帧参数、天线配置),再把 ADC 原始数据通过 LVDS/CSI 或 DCA1000 采集回 PC。SDK 则是两者的公共底座——CCS 工程要链接 SDK 里的库,mmWave Studio 采集时雷达上运行的也是 SDK 提供的 demo 固件。
二、安装顺序与版本匹配
工具链的安装顺序建议为:先装 CCS,再装 SDK,最后装 mmWave Studio 和 UniFlash。原因是 SDK 的安装脚本会检测 CCS 的安装路径,用于自动生成 CCS 工程所需的变量(如 MMWAVE_SDK_INSTALL_PATH);如果顺序颠倒,需要手动在 CCS 的 Preferences → Build → Variables 中补上路径。
版本匹配是踩坑最多的地方。以 AWR1843 为例,常用组合是:CCS 9.3.0、mmWave SDK 3.5.0.4、mmWave Studio 2.1.1.0、UniFlash 6.x。SDK 版本必须与芯片型号对应——AWR1642 用 SDK 2.x,AWR1843/AWR6843 用 SDK 3.x,且 SDK 3.x 内部又按 mmwave_sdk_<版本>/packages/ti/demo/xwr18xx/mmw 这样的目录区分平台。装错版本最典型的现象是编译时报“找不到 ti.osal 或 ti.utils 组件”,或链接阶段报 undefined symbol。
C:\ti\mmwave_sdk_03_05_00_04 是安全的;若放在 D:\我的项目\雷达 SDK,CCS 的 makefile 会因路径解析失败而报错。三、XDS 调试器配置要点
评估板上的 XDS110 通过一根 Micro-USB 线同时提供 JTAG 调试口和两个应用串口(通常枚举为 XDS110 Class Application/User UART 和 XDS110 Class Auxiliary Data Port)。在 CCS 中新建 Target Configuration 时,选择 Texas Instruments XDS110 USB Debug Probe,然后在 Advanced 页签中确认芯片为 AWR1843(或对应型号),并勾选 BSS、MSS、DSS 三个核。若连接时报 Error connecting to the target,按以下顺序排查:
- 设备管理器里是否出现
XDS110相关端口;若显示黄色感叹号,需重装 XDS 驱动(位于 CCS 安装目录ccs\ccs_base\emulation\windows\xds110_drivers)。 - SOP 跳线是否处于正确模式:功能模式(SOP0=1, SOP1=0, SOP2=0)用于运行固件,刷写模式(SOP5)用于 UniFlash 烧写。
- 目标配置文件中的 JTAG 时钟是否过高,可尝试从默认值降到 1 MHz。
四、第一个点云输出实验
实验目标:在 AWR1843BOOST 上运行 SDK 的 mmw demo,通过 UART 输出点云数据,并在 PC 端用可视化工具看到点云。整体流程分四步。
第一步:编译并下载固件。在 CCS 中导入 mmwave_sdk_03_05_00_04\packages\ti\demo\xwr18xx\mmw 工程,选择 Release 配置编译,生成 xwr18xx_mmw_demo.bin。用 UniFlash 或 CCS 的 Load Program 将 MSS 和 DSS 镜像下载到板上。若使用 UniFlash,需先把 SOP 设为刷写模式,烧写完成后切回功能模式并复位。
第二步:配置串口。打开 PC 端串口工具(如 Tera Term 或 mmWave Demo Visualizer),连接 Application/User UART,波特率 115200;若需要发送配置命令,再连接 Auxiliary Data Port,波特率 921600。前者用于输出点云和调试信息,后者用于接收配置命令。
第三步:发送 chirp 与帧配置。以下是一组用于近距离人员检测的示例配置(属于教学示例参数,非实测标定值):
sensorStop
flushCfg
dfeDataOutputMode 1
channelCfg 15 5 0
adcCfg 2 1
adcbufCfg -1 0 1 1 1
profileCfg 0 77 7 6 57.14 0 0 70 1 256 5209 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 0 0 0 0 0 0 4
frameCfg 0 1 16 0 100 1 0
lowPower 0 0
guiMonitor -1 1 1 0 0 0 1
cfarCfg -1 0 2 8 4 3 0 15 1
peakGrouping -1 1 1 1 1 255
multiObjBeamForming -1 1 0.5
calibDcRangeSig -1 0 -5 8 256
clutterRemoval -1 0
sensorStart
其中 profileCfg 定义了起始频率 77 GHz、斜率 70 MHz/μs、ADC 采样数 256、采样率 5209 ksps;frameCfg 定义每帧 16 个 chirp、帧周期 100 ms。这些参数共同决定了距离分辨率、最大不模糊速度和帧率。
第四步:观察点云。发送 sensorStart 后,Application UART 会持续输出 TLV 格式的数据包。用 mmWave Demo Visualizer 打开对应串口,即可看到散点图。判断实验是否成功的依据有三条:串口有稳定的 TLV 数据流而非乱码;可视化界面出现随目标移动而变化的点云簇;点云的距离与目标实际距离大致吻合(例如人在 2 m 处,点云应集中在 2 m 附近)。若只有噪声点或没有点,优先检查 channelCfg 的天线使能位和 frameCfg 的 chirp 索引是否与 chirpCfg 对应。
mmw demo 跑通链路,再替换成自己的算法工程。直接上自定义工程时,若点云异常,很难区分是配置问题、算法问题还是硬件连接问题。五、常见问题速查
| 现象 | 可能原因 | 处理方向 |
|---|---|---|
| CCS 编译报找不到 ti.osal | SDK 路径变量未设置或版本不匹配 | 检查 Preferences 中的变量与 SDK 版本 |
| 连接目标失败 | XDS 驱动异常或 SOP 模式错误 | 重装驱动、确认 SOP 跳线 |
| 串口无输出 | 波特率错误或固件未运行 | 确认 115200/921600,复位后重试 |
| 点云为空 | chirp 配置与 frame 配置不匹配 | 核对 chirpCfg 索引与 frameCfg 范围 |
把这条链路跑通之后,后续的算法开发、参数调优和场景集成才有稳定的实验基础。工具链本身不是目的,但它决定了你能否快速复现问题、定位问题。