Silicon Labs Connect Stack v3.x 作为 Silicon Labs Proprietary Flex SDK v3.0 及更高版本的一部分交付,提供功能全面、易于定制的无线网络解决方案,专为低功耗、简单网络拓扑的设备优化。Connect 基于 IEEE 802.15.4 MAC/PHY 实现,并在其之上构建了 Proprietary 网络层,开发者无需关注底层无线电细节,专注于应用开发即可。Documentation Index
Fetch the complete documentation index at: https://mintlify.com/dsyx/docs.silabs.com_zh/llms.txt
Use this file to discover all available pages before exploring further.
硬件外设依赖
Connect Stack 本身需要以下 MCU 外设才能正常工作:必需外设
- RF 收发器(及 HFXO)
- Sleeptimer 组件(通常依赖 RTCC 和 LFXO)
- 内部 Flash(用于 Token/NVM 存储)
- 微秒定时器(默认使用 TIMER0,由组件依赖引入)
可选外设
- PTI(Packet Trace Interface):用于 Network Analyzer 的 RF 数据包输出,默认启用
- SPI Flash:用于外部存储(OTA 等场景)
- 其他组件可能引入额外外设需求
除非特别说明,否则可通过 emlib 和 RAIL 访问 MCU 硬件。这也引入了对某些常用 emlib 文件(如
em_core.c、em_cmu.c)的依赖。Connect 操作模式
Connect 支持三种操作模式,一个网络中只能使用其中一种,应在设计早期做出选择。- Extended Star Mode
- Direct Mode
- MAC Mode
支持扩展星型拓扑,网络层提供任意两设备间的路由。End Device 可配置为 Sleepy(空闲时关闭无线电接收)。是集中式网络,加入需要 PAN Coordinator 同意,短地址由 Coordinator 分配。不完全符合 IEEE 802.15.4。
物理层
Connect 使用 Simplicity Studio 的 Radio Configurator 工具配置 PHY。使用时有以下限制:- Connect 仅使用第一个配置的协议
- 应使用 Connect Profile,该 Profile 会移除部分帧配置选项以保证与 802.15.4 的帧长度兼容
- 高于 500 kbps 比特率时,无法保证 hardware-based 地址过滤器正常工作
FCC 法规、DSSS 与跳频
FCC 要求采取措施”展宽”应用占用的频段。Connect 支持两种方式:- DSSS(直接序列扩频)
- FHSS(跳频扩频)
由硬件支持,无需额外通信开销,MAC 层可完全兼容 IEEE 802.15.4。Silicon Labs 提供了针对 2.4 GHz 和 915 MHz 的三种预配置 DSSS 设置,推荐优先使用。
MAC 层
Connect MAC 层基于 RAIL 的 IEEE 802.15.4 专用 API,为以下硬件功能提供接口:地址过滤(Address Filtering)、ACK、CSMA/CA、Data Request / Frame Pending bit 设置。设备类型
设备类型取决于加入网络时使用的 API,各模式下可用的设备类型有所不同:Coordinator(Extended Star 和 MAC Mode)
Coordinator(Extended Star 和 MAC Mode)
使用
emberFormNetwork() 或 emberMacFormNetwork() 组建网络。短地址固定为 0x0000。在 Extended Star Mode 下,负责地址分配和维护路由表;在 MAC Mode 下报告自身为 PAN Coordinator。需要安装 Parent Support 组件。Range Extender(仅 Extended Star Mode)
Range Extender(仅 Extended Star Mode)
在 Coordinator 和 End Device 之间提供路由支持。使用
emberJoinNetwork() 并将 nodeType 设为 EMBER_STAR_RANGE_EXTENDER 加入网络。需要安装 Parent Support 组件。End Device / Sleepy End Device(Extended Star 和 Direct Mode)
End Device / Sleepy End Device(Extended Star 和 Direct Mode)
End Device 是可在网络中通信的简单设备。Sleepy End Device 空闲时关闭无线电,只能通过消息轮询来接收消息。Extended Star Mode 下使用
emberJoinNetwork() 或 emberJoinNetworkExtended() 加入;Direct Mode 下使用 emberJoinCommissioned() 加入,nodeType 参数可选:EMBER_STAR_END_DEVICEEMBER_STAR_SLEEPY_END_DEVICEEMBER_DIRECT_DEVICE
MAC Mode Device / Sleepy MAC Mode Device(仅 MAC Mode)
MAC Mode Device / Sleepy MAC Mode Device(仅 MAC Mode)
MAC Mode 设备可在 802.15.4 网络中扮演任何角色。Sleepy 变体空闲时关闭无线电。
nodeType 参数可选:EMBER_MAC_MODE_DEVICEEMBER_MAC_MODE_SLEEPY_DEVICE
ACK 与 CSMA/CA 参数配置
- 使用
emberSetMacParams()的ackTimeout参数(或编译时宏EMBER_MAC_ACK_TIMEOUT_MS)配置等待 ACK 的超时,默认值为 25 ms。 - 使用
emberMacSetParams()的maxRetries参数配置未收到 ACK 时的重试次数,默认值为 3(即最多 4 次传输)。 - 使用
emberSetMacParams()配置 CSMA/CA 参数,默认值实质上是 IEEE 802.15.4 为 2.4 GHz OQPSK PHY 推荐的参数。
Extended Star Mode 关联过程
网络层
Connect 网络层仅在 Extended Star Mode 和 Direct Mode 下可用,负责路由(Extended Star 专有)和端点处理。端点类似 TCP/IP 端口,实现协议间的信道共享:| 端点 | 用途 |
|---|---|
| 15 | Mailbox 组件 |
| 14 | OTA |
| 其他 | 应用程序框架分发至应用程序 |
路由表(Extended Star Mode)
路由协议为集中式,Coordinator 掌握所有设备的路由信息:- End Device:存储父级地址(Coordinator 或 Range Extender)
- Range Extender:存储子表(所有已连接子设备地址),最大 32 个子项
- Coordinator:存储子表(最大 64 个子项)+ 每个 Range Extender 的子项路由表
| 发送节点 | 转发规则 |
|---|---|
| End Device | 始终转发给父级(Coordinator 或 Range Extender) |
| Range Extender | 目标在子表中则直发,否则转发给 Coordinator |
| Coordinator | 目标在子表中则直发,否则查路由表转发至对应 Range Extender |
离开网络
跳频(Frequency Hopping)
跳频仅在 Extended Star 和 Direct Mode 下可用,以客户端-服务端模型实现,两端须处于同一 PAN 并使用相同的跳频参数。主要配置参数
| 参数 | 说明 |
|---|---|
| Channel Sequence Generation Seed | 生成伪随机信道序列的种子数 |
| Start / End Channel | 信道范围(均含在内) |
| Channel Duration | 每个信道的驻留时间(毫秒) |
| Channel Guard Duration | 进入/离开信道槽时的静默保护时间(毫秒) |
| Server Broadcast Info Period | 服务端广播同步信息的周期(毫秒) |
| Client Resync Period | Sleepy 客户端主动请求同步的间隔(秒) |
| Client Synchronization Timeout | Non-sleepy 客户端同步失败超时时间(秒) |
| Server Advertisement Sequence Count | 服务端启动时广告遍历次数 |
同步机制
完全同步(Full Synchronization)
完全同步(Full Synchronization)
当客户端希望加入正在跳频的服务端,或失去同步时触发。客户端以相反顺序快速遍历所有信道并发送跳频信息请求,直到收到服务端的跳频信息响应为止。若五次遍历后仍未收到响应,将通过
emberStackStatusHandler() 报告 EMBER_MAC_SYNC_TIMEOUT。被动同步(Passive Synchronization)
被动同步(Passive Synchronization)
用于保持 Non-sleepy 设备同步。服务端定期广播跳频信息消息,客户端收到后自动调整同步。若在 Client Synchronization Timeout 内未收到,将报告同步超时。
主动同步(Active Synchronization)
主动同步(Active Synchronization)
用于保持 Sleepy 设备同步。若 Sleepy 客户端在 Client Resync Period 内未收到跳频信息,则在下次发送前主动请求同步。若请求后仍未收到响应,则触发完全同步。
协议栈配置
Connect Stack 支持三种层次的配置方式:- 组件选项(Component Options)
- 编译时宏(Compile-time Macros)
- Manufacturing Tokens
通过 Simplicity Studio Project Configurator 的 SOFTWARE COMPONENTS 选项卡,可视化配置各组件参数(如 Parent Support 组件的子表大小、超时等)。配置会生成到
config/ 文件夹下对应的头文件(如 parent-support-config.h)。