2. 硬件环境搭建:TI CC1310/CC1352 开发板、调试器与串口模块选型
做无线协议栈开发,硬件环境是第一步。说白了,工具没选对,后面抓包调试全是坑。我这些年折腾过不少板子,踩过一些雷,今天把经验摊开来讲。
2.1 TI CC1310 与 CC1352 开发板选型
TI 的 Sub-1GHz 无线 MCU 家族里,CC1310 和 CC1352 是两款最常用的芯片。它们各自有对应的 LaunchPad 开发板,我建议你直接买官方的 LaunchPad,别省那几百块钱——第三方板子的调试接口和天线匹配经常出问题。
| 特性 | CC1310 LaunchPad (LAUNCHXL-CC1310) | CC1352P1 LaunchPad (LAUNCHXL-CC1352P1) |
|---|---|---|
| 无线频段 | Sub-1GHz 仅 433/868/915 MHz | Sub-1GHz + 2.4 GHz 双频 |
| Flash / RAM | 128 KB / 20 KB | 352 KB / 80 KB |
| 协议栈支持 | TI 15.4-Stack, Proprietary RF | TI 15.4-Stack, Zigbee, BLE, Thread, Proprietary RF |
| 板载调试器 | XDS110(支持 SWD) | XDS110(支持 SWD) |
| 典型应用场景 | 纯 Sub-1GHz 传感器网络 | 双频网关、协议转换器 |
我的建议: 如果你只做 Sub-1GHz 协议栈调试,CC1310 LaunchPad 完全够用,性价比高。但如果你需要同时抓 2.4 GHz 和 Sub-1GHz 的交互报文(比如网关场景),直接上 CC1352P1,省得后面换板子。
2.2 J-Link 与 SWD 调试器连接
TI 的 LaunchPad 板载了 XDS110 调试器,用 USB 线连电脑就能用。但我在项目中遇到过几次 XDS110 固件崩溃的情况——尤其是频繁热插拔或者供电不稳时。这时候就需要外接 J-Link 或兼容的 SWD 调试器来救场。
2.2.1 为什么需要外接调试器?
- 板载调试器挂了: XDS110 偶尔会掉固件,重新烧录麻烦。外接 J-Link 直接绕过它。
- 需要低功耗调试: 板载调试器在低功耗模式下会干扰电流测量。外接调试器可以单独供电。
- 多板协同调试: 一个 J-Link 可以同时接多块板子的 SWD 接口,方便做多节点抓包。
2.2.2 SWD 接口接线
TI 的 CC13xx 系列使用标准的 10-pin SWD 接口(Cortex-M 标准)。你只需要接 4 根线:
J-Link / SWD 调试器 CC1310/CC1352 目标板
SWDIO (Pin 2) ——————> SWDIO (P2.1 / DIO_21)
SWCLK (Pin 4) ——————> SWCLK (P2.0 / DIO_20)
GND (Pin 6) ——————> GND
VCC (Pin 1) ——————> 3.3V (可选,用于电平匹配)
注意: 我曾经因为没接 GND 导致调试器无法识别目标芯片。SWD 的 GND 必须接,否则时钟信号参考电平不对。另外,VCC 可以不接——调试器只用来检测目标电压,不供电。
2.2.3 调试器选型对比
| 调试器型号 | 速度 | 价格 | 适用场景 |
|---|---|---|---|
| J-Link EDU Mini | ~1 MHz SWD | 约 200 元 | 个人学习、简单调试 |
| J-Link BASE | ~4 MHz SWD | 约 800 元 | 日常开发、单板调试 |
| J-Link ULTRA+ | ~15 MHz SWD | 约 3000 元 | 多板协同、高速下载 |
| ST-Link V2 (改装) | ~2 MHz SWD | 约 30 元 | 应急使用(需转接板) |
我个人习惯: 平时用 J-Link BASE 就够了。如果只是做协议栈抓包调试,SWD 速度 1 MHz 完全够用,没必要上 ULTRA+。但千万别买山寨 J-Link——固件升级一次就变砖,我吃过这个亏。
2.3 串口转 USB 模块选型
无线协议栈调试离不开串口日志。TI 的协议栈默认通过 UART 输出调试信息,比如报文内容、状态机跳转、错误码等。你需要一个可靠的串口转 USB 模块来接收这些数据。
2.3.1 核心选型指标
- 芯片方案: 首选 FT232RL 或 CP2102。CH340 也能用,但波特率高了容易丢包。
- 电平匹配: CC13xx 的 UART 是 3.3V 电平。模块必须支持 3.3V,不能直接用 5V 的 RS232 模块。
- 波特率支持: 协议栈默认 115200 bps,但抓包时我经常开到 921600 bps 来减少延迟。模块要能稳定跑 1 Mbps 以上。
- 硬件流控: 可选。如果只输出日志,RTS/CTS 可以不接。但做固件升级时可能需要。
2.3.2 推荐模块与接线
| 模块型号 | 芯片 | 最大波特率 | 价格 | 推荐理由 |
|---|---|---|---|---|
| FT232RL 迷你板 | FT232RL | 3 Mbps | 约 25 元 | 稳定、驱动成熟、兼容性好 |
| CP2102 小板 | CP2102 | 1 Mbps | 约 10 元 | 便宜、够用、体积小 |
| CH340G 模块 | CH340G | 2 Mbps | 约 5 元 | 应急备用,不建议长期使用 |
接线很简单:
串口模块 TX ——————> CC13xx UART RX (DIO_2)
串口模块 RX ——————> CC13xx UART TX (DIO_3)
串口模块 GND ——————> CC13xx GND
避坑指南: 我曾经用 CH340 模块抓包,结果 115200 波特率下偶尔出现乱码。排查了半天,发现是模块的晶振精度不够。换成 FT232RL 后问题消失。如果你要长时间抓包分析,别省这十几块钱。
2.4 硬件连接整体架构
下面这张图展示了调试环境的完整连接关系。你可以把它贴在实验台旁边,接线时对照着来。
2.5 硬件环境快速检查清单
每次搭建调试环境前,按这个清单过一遍,能省下不少排查时间:
- 供电: LaunchPad 通过 USB 供电,电压 5V,电流至少 500 mA。不要用手机充电器——纹波太大。
- 驱动: XDS110 驱动、J-Link 驱动、串口芯片驱动都装好。Windows 下用 Zadig 工具检查驱动是否正确。
- 接线: SWD 的 GND 必须接。串口的 TX/RX 不要接反——我犯过这个低级错误,浪费了半小时。
- 电平: 确认串口模块是 3.3V 电平。5V 电平会烧坏 CC13xx 的 GPIO。
- 测试: 用 SmartRF Studio 或 Uniflash 尝试连接目标芯片。能读到 Device ID 就说明硬件通路通了。
最后说一句: 硬件环境搭建看起来琐碎,但它是整个调试流程的基础。我见过太多人花几周调协议栈,最后发现是串口线接触不良导致日志不全。嗯,先把硬件搞扎实,后面抓包分析才能事半功倍。