4. 开发环境搭建:Keil/IAR IDE配置、射频SDK安装、调试器连接
说实话,很多做射频测试的工程师,最后卡住的不是射频指标本身,而是开发环境死活跑不起来。我见过有人花了两天时间,就为了把J-Link驱动装对版本。嗯,这一章咱们就把这些基础工作一次性搞定。
4.1 IDE选择:Keil还是IAR?
我个人习惯用Keil多一些,因为它的Pack Installer对Sub-1GHz芯片的支持比较全。但IAR的编译优化确实更狠,代码密度能小10%~15%。怎么选?看你的MCU厂家主推哪个。
| 对比项 | Keil MDK | IAR EWARM |
|---|---|---|
| 芯片支持 | 通过Pack包扩展,STM32/EFM32等主流芯片更新快 | 自带Device Database,部分小众芯片需手动添加 |
| 编译效率 | 中等,调试体验好 | 高,代码密度优化出色 |
| 射频SDK兼容 | TI/ST官方例程大多基于Keil | Silicon Labs/NXP倾向IAR |
| License成本 | MDK-Plus约$5000 | IAR约$8000 |
| 调试器原生支持 | ST-Link即插即用,J-Link需单独配置 | J-Link集成度高,ST-Link需转接 |
我的建议:如果你刚开始学,先跟着芯片原厂的官方例程走。官方用Keil你就用Keil,用IAR你就用IAR。等熟悉了再换,别在IDE选择上内耗。
4.2 射频SDK安装——别漏了关键组件
射频SDK不是装完就完事的。我遇到过好几次,编译报错说找不到某个头文件,结果发现是SDK安装时漏选了"RF Core Library"组件。
以TI的SimpleLink SDK为例,安装步骤大致如下:
- 下载SDK安装包——从官网获取,注意区分CC13xx/CC26xx系列
- 运行安装程序——默认路径建议不要改,后续例程路径依赖
- 选择组件——必须勾选:
- RF Core Driver Library
- Proprietary RF Examples
- TI Drivers (用于GPIO/UART/SPI等外设)
- FreeRTOS或TI-RTOS (根据项目需求)
- 安装路径确认——安装完成后,检查
C:\ti\simplelink_cc13x2_sdk_x_xx_xx_xx目录结构是否完整
避坑:我曾经在Windows路径中包含中文和空格,结果SDK的批处理脚本跑不起来。建议安装路径全英文,不要有空格。
4.3 Keil IDE配置——从零到编译通过
Keil的配置其实就三步:装Pack、配工程、选调试器。咱们一步步来。
4.3.1 安装Device Pack
打开Keil,点击 Pack Installer 按钮。在搜索框输入你的芯片型号,比如 CC1312R 或 STM32WL55。找到对应的Device Family Pack,点击Install。
// 安装完成后,可以在Keil的Project窗口中看到:
// Device: Texas Instruments::CC1312R1F3RGZ
// 如果没有出现,说明Pack没装成功,重启Keil再试
4.3.2 导入SDK例程
我个人习惯不从头建工程,而是从SDK例程改。为什么呢?因为射频部分的寄存器配置、RF Core固件加载这些,手写太容易出错了。
- 在Keil中点击 Project → New μVision Project
- 选择芯片型号,点击OK
- 在Manage Run-Time Environment中,勾选:
- CMSIS → Core
- Device → Startup
- RF Core → RF Driver
- 将SDK例程中的
.c和.h文件复制到工程目录 - 在Keil中添加源文件:右键Source Group → Add Existing Files
关键检查点:编译前务必确认
Preprocessor Symbols 中定义了正确的芯片型号宏。比如CC1312R需要定义 CC13X2 和 CC1312R,否则RF驱动会编译失败。
4.4 IAR IDE配置——另一种选择
IAR的配置逻辑和Keil不太一样。它没有Pack Installer,而是通过 Device Database 管理芯片支持。
- 打开IAR Embedded Workbench,点击 Project → Create New Project
- 选择 C → main 模板,点击OK
- 右键工程 → Options → General Options → Target:
- Device:选择你的芯片型号(如果找不到,需要手动安装Device Database补丁)
- 在 C/C++ Compiler → Preprocessor 中添加SDK头文件路径:
$PROJ_DIR$\..\simplelink_cc13x2_sdk_x_xx_xx_xx\source $PROJ_DIR$\..\simplelink_cc13x2_sdk_x_xx_xx_xx\kernel\tirtos\packages - 在 Linker → Config 中指定链接脚本(.icf文件),一般SDK里自带
小技巧:IAR的工程文件(.ewp)是XML格式的,可以用文本编辑器打开。如果你需要批量修改多个工程的包含路径,直接替换XML文本比在IDE里一个个点快得多。
4.5 调试器连接——J-Link vs ST-Link
调试器连接是新手最容易出问题的地方。我见过有人把SWD的线序接反,烧了调试器的IO口。嗯,这里咱们说清楚。
4.5.1 硬件连接
| 调试器引脚 | 目标板引脚 | 说明 |
|---|---|---|
| SWDIO | SWDIO (PA13) | 数据线,必须连接 |
| SWCLK | SWCLK (PA14) | 时钟线,必须连接 |
| GND | GND | 共地,必须连接 |
| VCC (3.3V) | VCC | 可选,部分调试器可供电 |
| RESET | NRST | 可选,连接后可硬件复位 |
警告:J-Link的VCC引脚输出的是3.3V,但ST-Link的VCC输出是5V!如果你的目标板是1.8V供电的Sub-1GHz芯片(比如CC1310),直接接ST-Link的VCC会烧芯片。我建议:调试器只接SWDIO、SWCLK、GND三根线,目标板单独供电。
4.5.2 Keil中配置J-Link
- 点击 Project → Options for Target → Debug
- 在 Use 下拉框中选择 J-LINK / J-TRACE Cortex
- 点击 Settings:
- Port:选择 SW(不要选JTAG,SWD只需要两根线)
- Max Clock:建议选 4MHz,太高容易受射频干扰
- 点击 Flash Download 标签:
- 勾选 Reset and Run(下载后自动运行)
- 添加对应的Flash算法文件(SDK中自带)
4.5.3 IAR中配置ST-Link
- 右键工程 → Options → Debugger → Setup
- Driver:选择 ST-Link
- 点击 Download 标签:
- 勾选 Verify download(校验下载,防止Flash写入错误)
- 勾选 Suppress download(如果只调试不下载,可以勾上)
- 回到 Debugger → Extra Options:
- 添加命令行选项:
--drv_communication=SWD
- 添加命令行选项:
连接测试:配置完成后,点击 Debug → Start Debugging。如果看到汇编窗口或main函数停住,说明连接成功。如果弹出
No Cortex-M SW Device Found,先检查硬件连接,再检查调试器驱动是否安装。
4.6 本章知识体系
下面这张图把开发环境搭建的核心流程串起来了。你可以把它贴在工位旁边,每次搭建新环境时对照着走一遍。
4.7 常见问题与排查
最后,我把这些年遇到最多的几个问题列出来。你如果搭建环境时卡住了,先对照这个清单查一遍。
- 编译报错:找不到头文件——检查SDK路径是否添加到工程中,路径中是否有中文或空格
- 下载失败:Flash Timeout——检查Flash算法文件是否选对,芯片型号是否匹配
- 调试器连接不上:No Device Found——先测SWDIO和SWCLK的波形,确认调试器供电正常
- 下载后程序不运行——检查Reset and Run是否勾选,或者手动按一下复位键
- 射频例程跑起来但收不到数据——检查RF Core固件是否加载成功,这个在调试窗口的RF Core寄存器里能看到
我的经验:如果你用的是J-Link,建议装一下J-Link Commander工具。它可以单独测试SWD连接,不依赖IDE。输入
connect 命令,选择SWD和目标芯片型号,如果能读到IDCODE,说明硬件连接没问题,问题出在IDE配置上。