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为例,安装步骤大致如下:

  1. 下载SDK安装包——从官网获取,注意区分CC13xx/CC26xx系列
  2. 运行安装程序——默认路径建议不要改,后续例程路径依赖
  3. 选择组件——必须勾选:
    • RF Core Driver Library
    • Proprietary RF Examples
    • TI Drivers (用于GPIO/UART/SPI等外设)
    • FreeRTOS或TI-RTOS (根据项目需求)
  4. 安装路径确认——安装完成后,检查 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固件加载这些,手写太容易出错了。

  1. 在Keil中点击 Project → New μVision Project
  2. 选择芯片型号,点击OK
  3. 在Manage Run-Time Environment中,勾选:
    • CMSIS → Core
    • Device → Startup
    • RF Core → RF Driver
  4. 将SDK例程中的 .c 和 .h 文件复制到工程目录
  5. 在Keil中添加源文件:右键Source Group → Add Existing Files
关键检查点:编译前务必确认 Preprocessor Symbols 中定义了正确的芯片型号宏。比如CC1312R需要定义 CC13X2 和 CC1312R,否则RF驱动会编译失败。

4.4 IAR IDE配置——另一种选择

IAR的配置逻辑和Keil不太一样。它没有Pack Installer,而是通过 Device Database 管理芯片支持。

  1. 打开IAR Embedded Workbench,点击 Project → Create New Project
  2. 选择 C → main 模板,点击OK
  3. 右键工程 → Options → General Options → Target:
    • Device:选择你的芯片型号(如果找不到,需要手动安装Device Database补丁)
  4. 在 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
  5. 在 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

  1. 点击 Project → Options for Target → Debug
  2. 在 Use 下拉框中选择 J-LINK / J-TRACE Cortex
  3. 点击 Settings:
    • Port:选择 SW(不要选JTAG,SWD只需要两根线)
    • Max Clock:建议选 4MHz,太高容易受射频干扰
  4. 点击 Flash Download 标签:
    • 勾选 Reset and Run(下载后自动运行)
    • 添加对应的Flash算法文件(SDK中自带)

4.5.3 IAR中配置ST-Link

  1. 右键工程 → Options → Debugger → Setup
  2. Driver:选择 ST-Link
  3. 点击 Download 标签:
    • 勾选 Verify download(校验下载,防止Flash写入错误)
    • 勾选 Suppress download(如果只调试不下载,可以勾上)
  4. 回到 Debugger → Extra Options:
    • 添加命令行选项:--drv_communication=SWD
连接测试:配置完成后,点击 Debug → Start Debugging。如果看到汇编窗口或main函数停住,说明连接成功。如果弹出 No Cortex-M SW Device Found,先检查硬件连接,再检查调试器驱动是否安装。

4.6 本章知识体系

下面这张图把开发环境搭建的核心流程串起来了。你可以把它贴在工位旁边,每次搭建新环境时对照着走一遍。

开发环境搭建流程 开发环境搭建核心流程 选择IDE Keil MDK IAR EWARM 安装射频SDK 安装射频SDK 配置调试器 (J-Link / ST-Link) 编译下载验证 提示:无论选Keil还是IAR,SDK安装和调试器配置的步骤是通用的,区别只在于IDE内的操作菜单不同

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配置上。