1 · 文档导读与阅读路径
这份文档面向已经会写 C、但第一次接触芯科(Silicon Labs)生态的嵌入式工程师。它不假定你用过 Simplicity Studio,也不假定你熟悉 Zephyr;从「买哪块板子」一路写到「怎么量产烧录、怎么过认证」。
1.1 覆盖范围
文档覆盖芯科两条并行的无线产品线:
- EFR32 无线 SoC:Series 1(xG1x,遗留)、Series 2(xG21 至 xG29,出货主力)、Series 3(SixG301 家族,22 nm 多核,2025 年 10 月起全面供货)。协议覆盖蓝牙 LE、Bluetooth Mesh、Zigbee、OpenThread、Matter、Wi-SUN、Amazon Sidewalk、Z-Wave、专有 Sub-GHz 与 2.4 GHz。
- SiWx91x 无线 MCU:以 SiWx917(及同族的 SiWG917 / SiWN917)为代表,单芯片 Wi-Fi 6 + 蓝牙 LE 5.4,Matter over Wi-Fi 的官方推荐平台。
- 工具链:Simplicity Studio 6、Simplicity Studio VS Code 扩展、Simplicity SDK(SiSDK)、Gecko SDK(GSDK)、WiSeConnect SDK、Simplicity Commander、Energy Profiler、Network Analyzer。
- 驱动:EMLIB / 驱动层两条抽象层级,GPIO、EUSART、I2C、SPI、IADC、定时器、RTCC、LDMA、PRS。
- 工程化:低功耗设计与实测、Secure Vault 安全架构、Gecko Bootloader 与 OTA、调试与测试、量产烧录与合规。
1.2 不覆盖什么
- 不覆盖 EFM32 纯 MCU 系列(非无线)的完整开发流程;它们与 EFR32 共用 EMLIB 与大部分外设,第 8 章的外设驱动可以直接复用。
- 不覆盖 Series 0(EM3xx / EZR32)与 Wi-Fi transceiver 老产品线(RS911x 独立模块形态)的细节。
- 不重复蓝牙 LE / Zigbee / Matter 协议本身的规范教程,只讲在芯科平台上怎么用、怎么调、怎么排查。
- 不给原理图级射频匹配网络的完整计算过程;天线与匹配请对照官方 Reference Design 与对应器件的《Data Sheet》。
- 不提供法律意义上的认证建议,第 15.7 节只给流程与清单。
1.3 版本标注约定
芯科的软件版本在 2025 年做了一次大改名(Gecko SDK Suite → Simplicity SDK),文档里出现的版本号按下面约定理解:
| 写法 | 含义 | 本文取值 |
|---|---|---|
| SiSDK 2025.x | Simplicity SDK 版本,按年月命名;主线服务于 Series 2 / Series 3 | 行文按 2025.6 / 2025.12 |
| GSDK 4.x | Gecko SDK Suite;4.5 LTS 专门服务 Series 0 / Series 1 | 仅在第 20 章出现 |
| Gecko Platform 4.4.x | SiSDK 与 GSDK 共同底层:EMLIB、驱动、服务、RAIL | 按 4.4.7 |
| WiSeConnect 3.x / 4.x | SiWx91x 的 SDK 扩展,内含 NWP 固件 | 命令行按 3.x 主干 |
| SSv6 | Simplicity Studio 6,2025-10-01 正式 GA | 主线行文按 6.1 |
| commander 1.16+ | Simplicity Commander 命令行工具版本 | 第 18 章与附录 A |
1.4 事实来源与免责
文中规格数字来自 Silicon Labs 官网产品页、参考手册(EFR32xG24 / xG26 / xG28 Reference Manual)、docs.silabs.com 文档集(Bluetooth / Zigbee / Gecko Bootloader / WiSeConnect)以及 2025-10 的 Series 3 发布材料。电流、灵敏度、发射功率等参数随器件版本、封装与测试条件变化,量产前必须以所用 OPN 的最新《Data Sheet》为准。文中命令在 SSv6 + SiSDK 2025.x 与 WiSeConnect 3.x 上验证,跨版本可能改名(尤其是 slc 子命令与组件名)。
1.5 五条阅读路径
如果你手上已经有 EFR32xG24 或 BG26 的 Explorer Kit / Pro Kit,可以直接按路径 A 动手;没有板子也不影响阅读——第 5 章的安装、第 6 章的工程结构、第 14 章的功耗数据都能直接抄去用。只有第 12 章的 Wi-Fi 实验强烈依赖 SiWx917 硬件。
2 · 产品全景与选型
芯科的无线产品线可以拆成三条:Series 2 是当前出货主力(xG21 到 xG29 十几个子系列),Series 3 是 22 nm 多核的新平台,SiWx91x 则是把 Wi-Fi 6 与 BLE 5.4 塞进单芯片的支线。这一章把三者放在同一张表里对比,并给出可直接执行的选型规则。
2.1 三代无线平台时间线
从架构演进的角度看,芯科做的事与 Nordic 类似:把「MCU + 射频 + 协议栈 + 安全」越塞越紧、越做越省电。区别是芯科从一开始就按协议分系列命名(BG = Bluetooth、MG = Multi-protocol、FG = Flex / Sub-GHz、ZG = Z-Wave),选型的第一个动作是先确定协议族。
来源:Silicon Labs 产品页与 Series 3 发布材料(2025-10)
三条线并非替代关系,而是长期并行:Series 2 覆盖面最广、成熟度最高;Series 3 在算力与安全上拔高,但与 Series 2 共用同一套工具与生态,官方明确承诺向后兼容;SiWx91x 则单独占住「Wi-Fi + BLE」这个位置。
2.2 Series 2:当前出货主力
Series 2 全系 Cortex-M33,带 DSP 扩展与 FPU,主频多在 76.8 ~ 78 MHz(部分子系列更高);无线侧由独立的 Cortex-M0+ 射频控制器承担,协议栈的底层时序不占用应用核。差异集中在频段、Flash/RAM、发射功率与 Secure Vault 等级。
| 子系列 | 典型型号 | 频段 / 协议 | Flash / RAM | 发射功率 | 定位 |
|---|---|---|---|---|---|
| xG21 | EFR32MG21 / BG21 | 2.4 GHz,BLE / Zigbee / Thread / 专有 | 512~1024 KB / 64~96 KB | +20 dBm | Series 2 开局,高发射功率版本 |
| xG22 | EFR32BG22 / MG22 / FG22 | 2.4 GHz,BLE 5.x / 专有 | 256~512 KB / 32 KB | +6 dBm(部分 +10) | 极致低功耗、小封装电池设备 |
| xG23 | EFR32FG23 / ZG23 | Sub-GHz,专有 / Z-Wave | 256~512 KB / 32~64 KB | +20 dBm | Sub-GHz 长距,无线抄表、安防 |
| xG24 | EFR32MG24 / BG24 | 2.4 GHz,BLE / Mesh / Zigbee / Thread / Matter | 1024~1536 KB / 128~256 KB | +19.5 dBm | Matter 与网状网络主力 |
| xG26 | EFR32BG26 / MG26 | 2.4 GHz,BLE 5.3 / Zigbee / 专有 | 1024~3200 KB / 256~512 KB | +19.5 dBm | 大存储、测向、高性能分支 |
| xG27 | EFR32BG27 / MG27 | 2.4 GHz,BLE / Zigbee | 1024 KB / 256 KB | +8 dBm | 小封装低成本,集成升压可低至 0.8 V 供电 |
| xG28 | EFR32FG28 / ZG28 / MG28 | Sub-GHz + 2.4 GHz BLE 双频 | 1024 KB / 256 KB | Sub-GHz +20 dBm / BLE +10 dBm | 多频段旗舰,Wi-SUN、Sidewalk、Z-Wave |
| xG29 | EFR32BG29 | 2.4 GHz BLE | 1024 KB / 256 KB | +8 dBm | 精简引脚版本(19/25/26 GPIO) |
几个容易踩的选型细节:
- xG22 与 xG27 不带 Secure Vault High,只提供基础安全能力;要过 PSA Level 3 的认证,必须选 xG24 / xG26 / xG28 或更新器件。
- Sub-GHz 与 2.4 GHz 不能在同一颗芯片上真正并发,xG28 是「双频可切换」而非同时收发,做 Sub-GHz + BLE 同时工作的产品要看清这一点。
- xG26 的 Flash 高达 3200 KB(即 3.2 MB),是 Series 2 里唯一能装下「Zigbee + Matter + OTA 双槽」还留有余量的型号。
2.3 Series 3(SixG301):22 nm 多核新时代
2025 年 10 月,芯科在 Works With 开发者大会上宣布 Series 3 首批产品 SiMG301 与 SiBG301 全面供货,这是 SixG301 家族的开局。核心变化有四条:
| 维度 | Series 2 | Series 3(SixG301) |
|---|---|---|
| 工艺 | 40 nm | 22 nm |
| 架构 | M33 应用核 + M0+ 射频控制器 | 多核:应用 / 无线 / 安全任务分离 |
| 主频 | 76.8 ~ 78 MHz | Cortex-M33 最高 150 MHz(带 FPU 与 DSP) |
| 存储 | 最大 3.2 MB Flash / 512 KB RAM | 最大 4 MB Flash / 512 KB RAM,支持 8 MB 外部 Flash |
| 安全 | Secure Vault Mid / High(PSA L3) | Secure Vault,业界首个 PSA Level 4 认证 |
| 能效 | 约 33 µA/MHz 级 | 约 47 µA/MHz 满载(SixG302 目标 15 µA/MHz) |
| 协议 | BLE / Zigbee / Thread / Matter / 专有 | SiMG301 支持 Zigbee + BLE + Matter over Thread 并发 |
两个型号的分工很清楚:SiMG301 面向多协议(Zigbee + BLE + Matter over Thread 并发运行),集成 LED 预驱动器与 PIXELRZ 单线接口,直接对标智能照明;SiBG301 面向纯 BLE 应用,并提供从 Series 2 BLE 产品平滑迁移的路径。2026 年计划出样的 SiXG302(SiMG302 / SiBG302)把能效目标定在 15 µA/MHz,是电池供电场景的下一站。
连接标准联盟(CSA)的 Matter Compliant Platform(MCP)认证把「SDK + 指定硬件」作为一个整体预先认证。在这类平台上做产品,配网、网络与消息安全机制可以直接继承预测试结果,走 Fast Track / Rapid Recertification 通道,显著减少终端产品认证所需的测试项。Series 2 的 MG24 与 MG26 也会被纳入该计划。
2.4 SiWx91x:Wi-Fi 6 + BLE 5.4 单芯片
SiWx917 是 SiWx91x 家族的第一颗芯片,定位很直接:业界功耗最低的 Wi-Fi 6 SoC,让电池供电设备也能常连云。它的关键规格如下(以官方 Data Sheet 为准):
| 维度 | 规格 | 备注 |
|---|---|---|
| 应用处理器 | ARM Cortex-M4F,最高 180 MHz | 带 FPU、MPU、NVIC;CMSIS 与非 CMSIS 驱动并存 |
| 无线处理器 | ThreadArch 四线程处理器,最高 160 MHz(NWP) | 独立线程跑 Wi-Fi / BLE / TCP-IP 协议栈 |
| Wi-Fi | IEEE 802.11 b/g/n/ax,2.4 GHz 单流 20 MHz | 支持 OFDMA、UL/DL MU-MIMO、TWT |
| Wi-Fi 射频 | 发射最高 +21 dBm(集成 PA),接收灵敏度低至 −98 dBm | MCS0~MCS7 |
| 蓝牙 | BLE 5.4,1M / 2M / Long Range(125 k / 500 kbps) | 发射最高 +19 dBm,灵敏度 LE −95 dBm / LR −106 dBm |
| SRAM | 最高 672 KB | 应用可配置 192 / 256 / 320 KB 三档 |
| Flash | 内置 0 / 4 / 8 MB,可选 0 / 2 / 8 MB PSRAM | 外部 Flash/PSRAM 最高 16 MB,支持加密 XiP |
| 功耗 | 深睡 < 1 µA;Wi-Fi 关联待机约 50 µA @ 1 s | MCU 低功耗模式约 19 µA/MHz |
| 封装 / GPIO | QFN 7 mm × 7 mm(84 pin),最多 45~46 个 GPIO | 工作电压 1.75 ~ 3.63 V,−40 ~ +85 / 105 °C |
| 安全 | PSA Level 2 可认证安全引擎、PUF、TRNG、安全启动与 OTA | Secure Zone、加密 XiP、防回滚、安全证明 |
同族的 SiWG917 强调 8 MB 内置 Flash 的 OPN(也是 Firmware Fallback 功能的硬件前提),SiWN917 则是 RF 引脚引出的模组形态。选型时最容易忽略的一点是:固件回退(Firmware Fallback)只在 8 MB 内置 Flash 的 OPN 上支持,若产品需要 OTA 失败自动回滚,采购时就要锁死这个 OPN。
2.5 横向选型速查
| 应用场景 | 首选 | 次选 | 为什么 |
|---|---|---|---|
| 电池供电 BLE 传感器 | EFR32BG22 / BG26 | EFR32BG27 | 休眠电流与唤醒时间是第一约束 |
| BLE 网关 / 需要长距与测向 | EFR32BG26 | EFR32MG24 | 支持 AoA/AoD,Flash/RAM 余量大 |
| Matter over Thread 终端设备 | EFR32MG24 | SiMG301(新设计) | MCP 认证平台,认证工作量最小 |
| Zigbee 灯 / 开关 / 传感器 | EFR32MG26 / MG24 | EFR32MG21 | 需要 3.2 MB 时选 MG26 |
| 智能照明(线供电 + LED 驱动) | SiMG301 | EFR32MG26 | 内置 LED 预驱动与 PIXELRZ 单线接口 |
| Matter over Wi-Fi | SiWx917 | SiWG917 | 单芯片 Wi-Fi 6 + BLE 配网 |
| Wi-Fi 常连云低功耗设备 | SiWx917 | — | 关联待机 50 µA 级,TWT 省电 |
| Sub-GHz 长距 / 抄表 | EFR32FG23 / FG28 | EFR32xG28 双频 | +20 dBm 与 −109 dBm 级灵敏度 |
| Wi-SUN / Sidewalk / Z-Wave | EFR32FG28 / ZG28 | EFR32ZG23 | 协议栈与频段绑定,先定协议再定料号 |
| 高安全等级(PSA L3+ / CRA) | SiMG301 / SiBG301 | EFR32MG24 / MG26 | Series 3 已达 PSA Level 4 |
2.6 料号与封装命名规则
芯科的完整料号形如 EFR32MG24B310F1024IM48,可拆成几段理解:
| 字段 | 示例 | 含义 |
|---|---|---|
| 家族 | EFR32 | 无线 SoC 家族前缀(EFM32 为纯 MCU) |
| 协议 + 系列 | MG24 | MG = 多协议、BG = 蓝牙、FG = Flex/Sub-GHz、ZG = Z-Wave;24 = Series 2 的 xG24 |
| 版本与频段档 | B310 | 区分发射功率档、频段与安全等级(Vault Mid/High),同一系列内部差异最大 |
| Flash 容量 | F1024 | F 后紧跟 KB 数:F1024 = 1024 KB Flash |
| 温区 / 等级 | I | 工业温区等器件等级标识 |
| 封装 | M48 | M = QFN,48 = 引脚数;M68 = QFN68,M40 = QFN40 |
同为 EFR32MG24,B310F1024IM48 与另一个后缀的 OPN 可能在发射功率上限、Sub-GHz 支持、Secure Vault 等级上完全不同。采购与 BOM 管理必须以完整 OPN 为准,只写「MG24」会导致量产时拿到不支持目标功能的批次。完整字段定义以该器件《Data Sheet》的 Ordering Information 章节为准。
2.7 模组与第三方方案
芯科自己出模组(如 BGM 系列 SiP 模组、MGM 系列),同时也通过代理与第三方伙伴提供多种形态:PCB 板载天线、陶瓷天线、u.FL 座、以及把射频部分全部屏蔽的认证模组。选模组的直接收益是射频认证可复用,对没有射频调优能力的团队几乎是必选项。
需要注意两点:一是模组的 GPIO 引出数通常少于裸片(例如 xG24 模组只引出 26~32 个),二是模组内部的 Flash/RAM 档位是固定的,做 OTA 双槽设计时要用模组标称容量反推,而不是按同型号裸片的最大值算。
3 · EFR32 硬件架构与核心子系统
EFR32 与通用 MCU 最大的区别在三处:射频有一棵独立的 Cortex-M0+ 核、安全有一套独立的 Secure Engine、外设之间可以绕开 CPU 互相触发。理解这三点,后面的驱动、功耗与安全章节才讲得通。
3.1 CPU、内存与总线
EFR32 Series 2 的应用核是 ARM Cortex-M33,带 DSP 扩展、FPU 与 TrustZone,主频多在 76.8 ~ 78 MHz(Series 3 提升到 150 MHz)。M33 相比 M4 的关键增量是 TrustZone 的安全/非安全分区——配合安全子系统的硬件隔离,可以把密钥操作放进安全侧,业务代码完全拿不到明文密钥。
- Flash:Series 2 覆盖 256 KB ~ 3200 KB,Series 3 最高 4 MB;带指令缓存,读等待状态随主频配置。
- RAM:Series 2 常见 32 ~ 512 KB;协议栈(Zigbee / Matter)会吃掉相当大一块,选型时务必按「协议栈 + OTA 双槽 + 业务」三项加总。
- 总线:多层总线矩阵,LDMA 与 CPU 可并行访问不同从设备;Flash 控制器(MSC)负责擦写与读保护。
来源:EFR32xG24 / xG26 / xG28 Reference Manual 摘要
3.2 无线子系统:M0+ 射频控制器
EFR32 的射频部分不是一堆寄存器,而是一颗独立的 Cortex-M0+ 射频控制器加一套数字前端:帧控制器(FRC)、调制/解调(MOD / DEMOD)、自动增益控制(AGC)、中频 ADC(IFADC)、CRC 与缓冲 RAM(BUFC)。固件层面的协议时序跑在这颗核上,应用核只负责「给数据、收数据」。
支持的调制格式包括 2/4 (G)FSK(整形可配)、OQPSK DSSS、(G)MSK 与 OOK,因此同一颗芯片既能跑 BLE / Zigbee(OQPSK),也能跑各种 Sub-GHz 专有协议(FSK / OOK)。这也是 RAIL(Radio Abstraction Interface Layer)存在的意义:它把这颗射频核抽象成一套统一的 API。
3.3 安全子系统:SE 与 VSE
Series 2 器件里,安全功能由 Secure Engine(SE)承担——部分子系列是独立硬件模块,部分子系列用 Virtual Secure Engine(VSE)实现(以硬件加密单元 + 受保护的固件组合达成等价能力)。SE / VSE 提供的能力包括:
| 能力 | 说明 | 典型用途 |
|---|---|---|
| TRNG | 真随机数发生器 | 密钥生成、nonce |
| 加密加速 | AES-128/192/256、ChaCha20-Poly1305、SHA-1/2、ECDSA / ECDH、Ed25519、Curve25519、J-PAKE | TLS、固件验签 |
| PUF 密钥管理 | 物理不可克隆功能生成密钥加密密钥 | 密钥不出芯片 |
| DPA 防护 | 差分功耗分析对抗措施 | 抗侧信道攻击 |
| 安全启动 RTSL | Root of Trust and Secure Loader | 防止运行未授权固件 |
| 安全调试 | Secure Debug Unlock(凭证书解锁) | 量产后锁死调试口 |
不要想当然地认为「所有 Series 2 都支持 Secure Vault High」。Secure Vault 有 Mid 与 High 两个等级,具体支持情况由 OPN 决定(见 2.6 节)。需要 PSA Level 3 认证的产品,必须选带 Vault High 的 OPN,并在设计阶段就把这一点写进 BOM 约束。
3.4 时钟系统
EFR32 的时钟源按频率与功耗分成两组,理解它们的启动时间是低功耗设计的关键:
| 时钟源 | 频率 | 特点 | 典型用途 |
|---|---|---|---|
| HFXO | 高频晶振,常见 38.4 / 39 / 40 MHz | 精度高、启动慢(数百 µs ~ ms 级) | 射频收发、USB、高精度定时 |
| HFRCO | 高频 RC,可编程 | 启动快、精度较低 | 唤醒后过渡时钟、非射频外设 |
| FSRCO | 快速启动 RC | 启动最快 | 深度睡眠唤醒后的临时时钟 |
| LFXO | 32.768 kHz 晶振 | 精度高、功耗低 | RTCC 计时、BLE 睡眠时钟 |
| LFRCO | 32.768 kHz RC | 无需外部晶振、精度较低 | 成本敏感设计的睡眠时钟 |
| ULFRCO | 超低频 RC(约 1 kHz) | 功耗最低 | 看门狗、极低功耗计时 |
射频操作必须使用 HFXO:BLE / Zigbee / 专有协议的连接时序容不下 RC 振荡器的误差。这意味着每次射频唤醒都要付出 HFXO 启动时间与启动能量,是「频繁短报文」场景下功耗居高不下的常见原因。第 14 章会给出对应的优化手段。
① 在设计评审阶段就确定是否要焊 32.768 kHz 晶振——BLE 的长连接间隔场景对睡眠时钟精度有硬要求,用 LFRCO 可能过不了测试;② HFXO 启动失败的兜底由 HFXO Manager 服务处理,不要在应用里手写重试逻辑。
3.5 能量模式 EM0~EM4
EFR32 用五个能量模式描述系统的睡眠深度,这也是芯科功耗文档里最常被引用的一组概念:
来源:EFR32xG28 Data Sheet 电流参数与参考手册能量管理章节
| 模式 | CPU | 高频时钟 | 可用外设 | 唤醒源 | 典型电流 |
|---|---|---|---|---|---|
| EM0 Active | 运行 | 运行 | 全部 | — | 30 ~ 40 µA/MHz |
| EM1 Sleep | 停止 | 运行 | 全部(含 DMA) | 任意中断 | 40 ~ 60 µA |
| EM2 Deep Sleep | 停止 | 停止 | RTCC / LETIMER / LESENSE 等低频外设 | 低频外设、外部中断 | 1.3 ~ 3 µA |
| EM3 Stop | 停止 | 停止 | 部分低频外设可保持 | 外部中断、比较器 | 1 ~ 2 µA |
| EM4 Shutoff | 掉电 | 掉电 | 几乎全关 | 复位、专用唤醒引脚 | 0.0x ~ 0.3 µA |
上表电流为量级参考,实际数值随器件子系列、RAM 保持量、是否启用 DC-DC 与温度而变;以所用 OPN 的 Data Sheet 为准。举个例子:xG28 在 256 KB RAM 保持 + RTC 走 LFXO 时 EM2 约 2.8 µA,切到 16 KB RAM 保持 + LFRCO 后可降到约 1.3 µA。
3.6 GPIO 与 PRS
GPIO 部分有几点与其他厂商不同:
- 端口按 Port A / B / C / D 分组,引脚号独立编号;API 形如 GPIO_PinModeSet(gpioPortA, 5, gpioModePushPull, 0)。
- 每个引脚的外设功能选择不是简单的 AF 编号,而需要通过 引脚工具(Pin Tool)或 GPIO->ROUTE / ABUS 类寄存器配置路由;实际工程中建议一律用 Pin Tool 生成配置,不要手写路由寄存器。
- PRS(外设反射系统)是芯科外设互连的核心:任何外设都能发出事件(producer),任何外设都能订阅事件(consumer),全程不经过 CPU。常见用法是定时器溢出触发 ADC 启动。
// 例:把 TIMER0 溢出事件接到 ADC 启动(思路示意,具体常量以所用器件头文件为准)
CMU_ClockEnable(cmuClock_PRS, true);
PRS_SourceAsyncSignalSet(0, PRS_ASYNC_CH_CTRL_SOURCESEL_TIMER0,
PRS_ASYNC_CH_CTRL_SIGSEL_TIMER0OF);
PRS_ConnectConsumer(0, prsTypeAsync, prsConsumerIADC0_SINGLE);
3.7 LDMA:不占用 CPU 的数据搬运
LDMA(Linked DMA)是 8 通道的链接式 DMA,最大特点是支持描述符链:一次配置可以让 DMA 自动在多个缓冲区之间轮转,适合环形采集。它能在 EM1 下工作(EM2 下需要外设支持),配合 PRS 就构成完整的「无 CPU 采集链」:
// 典型结构:描述符 + 传输配置 + 启动
static LDMA_Descriptor_t desc = LDMA_DESCRIPTOR_SINGLE_P2M_BYTE(src, dst, len);
static LDMA_TransferCfg_t cfg = LDMA_TRANSFER_CFG_PERIPHERAL(ldmaPeripheralSignal_IADC0_IADC_SINGLE);
LDMA_Init(&init);
LDMA_StartTransfer(chn, &cfg, &desc);
调试 DMA 时最常见的问题是缓冲区放在了不可被 DMA 访问的地址或描述符未按要求对齐;另外注意 linker 把缓冲区放在了 flash 的 const 段时,DMA 写不进去。
3.8 模拟外设:IADC / VDAC / ACMP / LESENSE
| 外设 | 能力 | 典型用法 | 注意事项 |
|---|---|---|---|
| IADC | 逐次逼近型 ADC,12 bit @ 1 Msps 或 16 bit @ 76.9 ksps | 电池电压、传感器采样 | 高分辨率档位吞吐下降,注意采样时间与源阻抗 |
| VDAC | 数模转换输出 | 偏置电压、音频提示音 | 输出带负载能力有限,需缓冲 |
| ACMP | 模拟比较器 | 阈值检测、EM2/EM3 唤醒 | 可在深度睡眠下工作,是低功耗唤醒利器 |
| LESENSE | 低功耗传感器接口 | 电容/电感/电阻式传感器自动扫描 | 几乎不唤醒 CPU 就能完成周期性检测 |
| 温度传感器 | 片内温度检测 | 温补、过温保护 | 精度有限,出厂校准点有限 |
| 电容触摸 | 多通道触摸输入 | 按键、滑条 | 布板与地平面影响极大 |
3.9 定时器家族
EFR32 的定时器资源按「能不能在深睡下跑」分成两类,这是低功耗设计的核心分野:
| 定时器 | 位宽 | 能否在 EM2 下运行 | 典型用途 |
|---|---|---|---|
| TIMER | 16 bit(部分 32 bit) | 否 | PWM、输入捕获、通用计时 |
| LETIMER | 16/24 bit | 是 | 低功耗周期性唤醒、波形输出 |
| RTCC | 32 bit 实时计数 | 是 | 日历、长时间定时唤醒 |
| BURTC | 32 bit 备份域计时 | 是(含 EM4) | EM4 下保持计时,备份域供电 |
| PCNT | 16 bit 脉冲计数 | 是(异步) | 脉冲计数、旋转编码 |
| WDOG | — | 是 | 看门狗,防跑飞 |
| SYSRTC | 32 bit | 是 | Series 3 平台的系统 RTC |
只要任务需要在 EM2 以下仍然计时,就只能选 LETIMER / RTCC / BURTC / PCNT 这一组;一旦用了普通 TIMER 做周期唤醒,系统就被钉在 EM0/EM1,功耗会高出两个数量级。
4 · SiWx917 硬件架构
SiWx917 与 EFR32 是两条不同的设计哲学:EFR32 是「一颗 M33 + 一颗射频小核」,SiWx917 是「一颗 M4 跑业务 + 一颗多线程无线处理器跑整个网络栈」。后者把 Wi-Fi 的复杂度彻底关在了 NWP 那一侧。
4.1 双核:M4 应用处理器 + NWP 无线处理器
两个处理核的分工非常干净:
- MCU(Cortex-M4F,最高 180 MHz):跑用户业务、驱动外设、处理传感器数据。带 FPU、MPU、NVIC 与 SysTick。
- NWP(ThreadArch 无线处理器,最高 160 MHz):在独立线程上运行 Wi-Fi、BLE、TCP/IP 与网络协议栈,同时作为安全处理域,负责安全启动、安全固件升级与调试锁定。
- 两核通过 AHB 接口互连,共享一块 SRAM;彼此的行为由固件状态机协调。
M4 侧通过 WiSeConnect SDK 提供的 API 与 NWP 交互——你调用的是 C 函数,实际干活的是另一颗核。这个边界决定了两件事:NWP 固件必须单独烧写,且版本必须与 SDK 匹配。
来源:SiWx917 Software Reference Manual(WiSeConnect SDK 文档)
4.2 存储架构:三种 Flash 配置
SiWx917 的存储组合相当灵活,也是选型时最容易搞错的地方:
| 配置项 | 可选规格 | 说明 |
|---|---|---|
| Flash 组织 | Common Flash(两核共享一块)/ Dual Flash(各自独立) | 由 OPN 决定,影响升级与地址布局 |
| 内置 Flash | 0 / 4 / 8 MB | 0 MB(即 flashless)版本需外部 Flash 配合 |
| 内置 PSRAM | 0 / 2 / 8 MB | PSRAM 版本适合代码量大、需要 XiP 的场景 |
| 外部 Flash / PSRAM | 最高 16 MB | 支持加密 XiP(AES-XTS) |
| SRAM | 最高 672 KB | 软件可配置应用侧分得 192 / 256 / 320 KB |
Firmware Fallback(双槽固件回退,见 12.7 节)只在 8 MB 内置 Flash 的 OPN 上支持。如果产品需要「OTA 失败自动回退上一版」,采购阶段就必须锁定这些 OPN,事后无法通过软件补救。
4.3 时钟与电源域
SiWx917 的时钟子系统比 EFR32 复杂,因为它要同时服务高性能应用核与超低功耗待机:
- SOC_PLL_CLK:1 ~ 180 MHz,给处理器用;INTF_PLL_CLK:1 ~ 180 MHz,给高速接口用;I2S_PLL_CLK:为音频接口定义好的一组频率。
- ULP 时钟振荡器:给低功耗域用,是睡眠状态下维持计时的基础。
- 电源域分为 MCU HP(高性能)、MCU ULP(超低功耗)与 UULP Vbat(常开域)三级,睡眠时逐级关闭。
配置思路是:把频率按功能模块分别设定,不用全速的地方就降下来——这与 EFR32「整颗芯片一个主频」的模型不同。
4.4 ULP 外设与 Sensor Hub
SiWx917 把一部分外设做成了 ULP(超低功耗)版本,可以在 M4 处于低功耗状态时继续工作:ULP_UART、ULP_SSI、ULP_I2S、ULP_UDMA。配合 Sensor Hub,传感器数据可以在不唤醒主核的情况下采集与累积。
官方建议在高功耗模式下启用 DMA时,把缓冲区放在 ULP Memory 块里。具体实现可直接参考 SDK 自带的 ULP_I2S / ULP_UDMA / ULP_SSI / ULP_UART 四个示例工程,不要自己凭感觉分配。
4.5 启动流程:两级 Bootloader
SiWx917 有两级 Bootloader:安全 Bootloader(固化在 TASS ROM)与应用 Bootloader(固化在 M4SS ROM)。上电后安全 Bootloader 先按 eFuse 与 Flash 里的配置初始化硬件、校验 Flash 配置、并用公私钥数字签名验证固件镜像,然后把必要信息交给应用 Bootloader,最终启动应用。
来源:SiWx917 Software Reference Manual(Bootup Flow 章节)
4.6 SoC 与 NCP 两种工作形态
SiWx917 支持两种完全不同的集成方式,选型阶段就要定下来:
| 形态 | 说明 | 适用场景 | 代价 |
|---|---|---|---|
| SoC(host-less) | 应用代码直接跑在片内 M4 上,无线能力通过 API 调用 | 绝大多数产品;功耗与 BOM 最优 | 应用受限于片内资源与 SDK |
| NCP(Network Co-Processor) | SiWx917 只做无线协处理器,由外部主机 MCU 通过 SPI / UART / SDIO 下发命令 | 已有主控、只想加 Wi-Fi;主控算力强 | 多一颗 MCU,通信接口成为吞吐瓶颈 |
| Transceiver 托管模式 | 更底层的托管形态,主机承担更多协议职责 | 特殊定制场景 | 开发复杂度高 |
做 NCP 方案时,主机侧的适配层要按官方示例实现(命令帧格式、流控与并发处理都不建议自创);吞吐上限会明显受限于那根 SPI / UART,做大数据量传输前先评估。
官方明确说明:RTOS 支持位于应用与服务层。如果 M4 侧上了 RTOS,多个软件线程访问 MCU 外设时必须正确使用 RTOS 原语(互斥 / 信号量),并且要为所有用到的 MCU 中断显式配置中断优先级——漏配会在高负载下表现为偶发丢包或死机,很难定位。
5 · 开发环境搭建
芯科在 2025 年把工具链整体翻新了一遍:Simplicity Studio 6(SSv6)取代 SSv5,SDK 从「一个整包」变成「按需安装的模块化组件」,分析工具也从 IDE 插件拆成独立应用。这一章按三条路线分别讲安装,并给出验证方法。
5.1 三条安装路线怎么选
| 路线 | 适合谁 | 优点 | 代价 |
|---|---|---|---|
| SSv6 IDE | 第一次接触芯科、需要图形化配置与示例工程 | 工程向导、组件视图、引脚工具、内置分析工具 | 体积大、启动慢;不支持同时开多个实例(与 v5 不同) |
| VS Code + 扩展 | 习惯了 VS Code、要做日常编码与调试 | 轻量、与现有工作流融合、可构建/烧录/调试 | 部分高级配置仍需回到 SSv6 或命令行 |
| 命令行 SLT + CMake | CI/CD、批量构建、产线脚本 | 可脚本化、可容器化、无图形依赖 | 上手门槛高,组件依赖要自己理解 |
来源:Simplicity Studio 6 User Guide 与 SSv6.1 Release Notes
三条路线不是互斥:实际团队里常见做法是「SSv6 建工程 + VS Code 写代码 + 命令行跑 CI」,三者操作的是同一份 .slcp 工程文件。
5.2 路线一:Simplicity Studio 6(推荐)
SSv6 于 2025 年 10 月 1 日 GA,6.1.0 版本发布(2026-01)。与 v5 相比最大的变化是模块化 SDK 管理——不再一次性下载几十 GB 的完整包,而是按需安装组件。
- 安装 Simplicity Installer,选择 SSv6 本体。
- 启动后在 Package Manager 里安装目标器件所需的 SiSDK 版本(如 2025.12)与协议栈包(Bluetooth / Zigbee / Matter / WiSeConnect)。
- 插上开发板,SSv6 会自动识别并列出适配的示例工程;用 New Project Wizard 创建工程。
- 首次使用时在 Device Manager 里检查适配器固件版本(见 5.6 节)。
官方 Release Notes 明确列出:不支持同时运行多个 SSv6 实例(v5 可以);Matter Provisioning 工具在 6.1.0 暂不可用;IAR 工程不能从新建工程向导生成;SixG301(Series 3)仅支持 CMake/GCC,不支持 IAR。升级 SDK 后工程视图可能仍显示旧版本号,但构建是正常的,以 VS Code 扩展里的工程树为准。
5.3 路线二:VS Code + Simplicity 扩展
安装 Simplicity Studio VS Code Extension(2.0.0 与 SSv6.1 配套验证)。扩展负责工程树、构建、烧录与调试,编辑体验完全交给 VS Code。适合下列场景:
- 团队已经标准化在 VS Code 上,不想再维护一套 Eclipse 配置。
- 需要同时打开多个工程(SSv6 IDE 不支持多实例)。
- 在远程开发容器 / SSH 环境下工作。
SSv6.1 起,Studio 会为 VS Code 与 CMake 工程生成 toolchain.cmake,工具路径不再硬编码,而是从系统 PATH 里的 SLT 位置动态解析——这显著改善了工程在不同机器之间共享时的可移植性(v6.1 专门修了「移动 CMake 工程后构建失败」的问题)。
5.4 路线三:命令行 SLT + CMake(CI 友好)
命令行路线的核心是三个工具:slc(工程生成器)、CMake + Ninja(构建)、commander(烧录)。典型流程:
# 1. 由 .slcp 生成构建文件(含 autogen 与 CMakeLists)
slc generate my_project.slcp --with brd4186c
# 2. 配置并构建
cmake -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake
ninja -C build
# 3. 烧录(用 J-Link 序列号指定目标,便于多板并行)
commander flash build/my_project.s37 --serialno 440123456
# 4. 复位运行
commander device reset --serialno 440123456
做 Matter / Zephyr 路线的项目(如 SiWx917 与 MG24 上的 Matter 示例)则会用 west 作为外层构建工具,内部仍是 CMake:启用 OTA(sysbuild)后 west flash 会按正确顺序先烧 MCUboot 再烧应用,也可用 west flash --domain mcuboot 单独烧某个域。这条路线与原生 SiSDK 路线不要混用。
5.5 SDK 体系:SiSDK / GSDK / WiSeConnect
| SDK | 服务对象 | 版本节奏 | 说明 |
|---|---|---|---|
| Simplicity SDK(SiSDK) | Series 2 / Series 3 | 按年月发布(2025.6 / 2025.12 …) | 模块化组件,按需安装;内含 Gecko Platform 作为底层 |
| Gecko SDK(GSDK)4.5 LTS | Series 0 / Series 1 | 长期支持版 | 专门服务与 SiSDK 不兼容的老器件,做维护与稳定性保障 |
| Gecko Platform | 两者共同底层 | 随主 SDK 升级(4.4.x) | EMLIB、驱动、服务、RAIL、安全组件 |
| WiSeConnect SDK | SiWx91x 家族 | 3.x 主干,文档已到 4.x | M4 应用 SDK + 预编译 NWP 固件;Matter/Wi-Fi 支撑 |
这两条 SDK 产品线面向不同的器件世代,工程文件与组件互不兼容。判断标准很简单:目标器件是 Series 1 及更早 → GSDK 4.5 LTS;Series 2 / Series 3 → SiSDK。升级现有工程时,不要试图把老工程直接搬到新 SDK,正确做法是按 20.2 节的映射表重建工程。
5.6 驱动、权限与适配器固件
这一节是安装阶段最容易卡住的地方,尤其是 Windows 与 Linux:
- Windows:SSv6.1 的 Release Notes 明确提示——使用 低于 v2.0.0 的适配器固件可能导致 Windows 蓝屏(BSOD)。务必升级到 v2.0.0 或更高版本(改用 Microsoft WinUSB 驱动)。如果 Device Overview 界面不提示有新固件,打开 Device Manager 手动检查。
- Linux:需要为 J-Link / USB 设备配置 udev 规则,否则普通用户权限下看不到调试器;把 commander 所在目录加入 PATH 以免每次写全路径。
- macOS:注意 x86 与 Apple Silicon 是两个安装包,M 系列机器请下 Mac (ARM) 版本。
- 多板并行:一台 PC 接多块开发板时,用 commander --serialno 或 --ip 精确定位,避免烧错板子。
5.7 验证:从零编译并烧录
安装完成后,用最小闭环验证整条链路是否通:
- 新建(或导入)一个 Blinky / SoC Empty 示例工程,目标选你手上的板子。
- 直接构建,确认工具链与 SDK 版本匹配(构建日志里会打印 SiSDK 版本)。
- 烧录并观察板载 LED 翻转。
- 打开串口终端(115200 8-N-1)确认有日志输出。
- 再用命令行重复一次同样的构建与烧录,确认 CI 路线可用。
第 3 步与第 5 步都要过。只过图形界面会在做 CI 时卡住,只过命令行则无法确认 IDE 配置正确。建议把第 5 步的命令直接写进项目 README,团队新人照抄即可上手。