
1. 这个“反直觉”选型其实是最合理的路子先从一个看起来很矛盾的选择讲起。我在做某个低轨遥感立方星的遥测下行链路模块时最初方案列表里根本是没有蓝牙类芯片的。原因很简单团队里大多数人一听“BLE”第一反应是手机周边、运动手环、门锁和卫星发射器这种“从 500 公里外往回传数据”的活儿八竿子打不着。但当我认真核算了遥测链路的需求后才发现 Nordic 的 nRF52 系列 SoC 可能是这个场景下性价比最高的一颗料——尤其是如果你的任务恰好是一个 1U~3U 立方星、发射功率在 20 dBm 以下、距离地面站几百到几千公里的 S 波段下行链路。文章标题里那句 “Satellite Transmitter Module Taps Nordic’s BLE SoC” 说的就是这个现象一个卫星发射器模块最终把 Nordic BLE SoC 当成了主控加射频收发一体芯片。你可以在很多小卫星项目里看到类似做法包括用 nRF52840 做 2.4 GHz 遥测发射器、用 nRF24L 做 UHF 信标、用 nRF52832 做星上传感器网关等等。BLE SoC 的好处不在于“蓝牙协议”本身而在于它把你需要的四样东西打包在一起了一颗 64 MHz Cortex-M4F、一套 2.4 GHz 射频前端、一大批定时器/PPI 脉冲外设以及极低的待机功耗。对这些小卫星来说省掉一个外部 MCU、一个外部射频收发芯片、两根传输线比省掉任何冗余接口都有意义。一个很常见的误区是用 BLE SoC 就必须跑 BLE 协议栈所以数据包格式、广播间隔、连接参数都得按蓝牙规范来。实际上Nordic 的 SoC 提供了 RADIO 外设和 SoftDevice 两层操作方式。如果你需要用标准 BLE 做星地链路比如直接让手机收到卫星广播那就用 SoftDevice但绝大多数卫星遥测链路根本不需要“连接”你只需要以 GFSK 调制、按你自己的帧格式往外丢数据包。此时你可以把 SoftDevice 丢掉直接操作 RADIO 寄存器把 2.4 GHz 频段当成一个灵活的窄带数据传输通道来用。这样既能拿到 BLE 峰值电流低的射频前端又不被蓝牙协议束缚。1.1 卫星发射器模块到底需要一颗什么样的 SoC我先把这类模块的需求捋一遍方便你理解后面的选型逻辑。遥测下行链路这个任务本质上要解决四件事第一把卫星的电压、温度、姿态、工作模式等状态数据打包第二按一定速率和帧格式把数据调制成射频信号发出去第三接收机在远端解调并还原数据第四在整星功耗预算和热控约束下长期稳定运行。这四个要求单拎出来都不复杂但合在一起就卡掉了一批方案。普通 MCU 加独立射频芯片的方案难点在硬件集成度和接口时序SDR 方案算法灵活但功耗大LoRa 方案链路预算好可惜净速率很难满足图像或波形数据的传输需求。我需要重点解释为什么 Nordic BLE SoC 能卡进这个位置。首先是它的射频前端足够“通用”。nRF52 的 RADIO 外设并不只是给蓝牙用的它支持 BLE 1M、BLE 2M、BLE 500K、BLE 125K 以及 IEEE 802.15.4 调制模式也可以配置成自定义 GFSK。这意味着你在不改变硬件的条件下既能用标准 BLE 做近场测试也能用自定义协议做真正的卫星下行链路。其次是它的功耗结构适合“间歇性工作”。卫星遥测不可能 24 小时满负荷发射绝大多数时间模块都处于待机或休眠状态只有过顶时刻才打开发射机。nRF52840 在 SYSTEM OFF 模式下电流只有 0.3 µA在 RTC 唤醒模式下约 1.9 µA这对太阳能板供电的卫星来说简直是量身定做。最后是它的软件生态和开发成本。Nordic SDK 提供了从驱动到协议栈的一整套代码裸机开发门槛不高团队里有人熟悉 nRF5 SDK 的话两三个月就能把射频链路跑通这在项目周期很紧的立方星任务里非常关键。1.2 别被“蓝牙”两个字带偏方向我想单独讲讲“BLE SoC”这个名字带来的认知偏差。很多人看到 BLE 就默认它只能做蓝牙于是把卫星发射器模块和蓝牙模块放在两个完全不同的抽屉里。但实际上一个 RF SoC 的价值在芯片本身不在协议名字。Nordic 把 2.4 GHz 收发机、基带、MCU、存储、外设全集成在一个封装里协议栈只是这套硬件上的一层可选软件。你跑蓝牙协议时它是 BLE SoC你不跑蓝牙协议、直接用 RADIO 外设发自定义 GFSK 帧时它就是一个带 MCU 的窄带无线收发器。用同一个芯片可以在实验室里先用手机验证 RF 链路再在飞行件里切换成私有协议这一前一后几乎不用改硬件只改固件和天线匹配。这种“同一个硬件平台多种工作模式”的灵活性才是它被卫星项目看中的真实原因。在下面的内容里我按我们团队从方案论证、硬件设计、固件开发、链路计算到环境测试的全流程把这个选型和实现过程完整拆开来讲。应该会对正在纠结“卫星发射器到底用什么主控”的人有点参考价值也适合那些想了解“BLE SoC 除了做蓝牙还能干什么”的嵌入式工程师。整个过程读下来你会明白这类“跨界”选型不是拍脑袋而是有一笔很清晰的账在背后。2. 硬件设计一颗 RF SoC 的卫星化改造2.1 从芯片选型到系统框图先明确需求。我们要做的模块是遥测下行链路把卫星的电压、温度、姿态数据打包以一定速率下传到地面站。轨道高度大约是 550 km 的太阳同步轨道地面站用 2.4 GHz 波段接收。需求速度不高1 kbps 到 100 kbps 足够但要求接收灵敏度和长期稳定性。还有一个硬指标整个模块的峰值功耗必须低到太阳能电池板和电池能扛住。基于这个需求我们比较过几类方案。一类是传统的 UHF 窄带发射机比如用 CC1120 或者 Si4463 做 FSK优点是频段低、链路损耗小缺点是带宽窄、调试麻烦另一类是直接用 SDR 加功率放大器灵活但功耗和体积都受不了最后是这颗 Nordic nRF52840。它最大发射功率 8 dBm接收灵敏度在 125 kbps 低速率下可以到 -103 dBm外设集成度高支持 DC/DC 降压模式休眠电流做到 0.3 µA 左右。对于在轨设备来说最重要的并不是“峰值性能”而是“平均功耗能否压在太阳能预算之内”。nRF52840 的峰值电流在 TX 时大约是 4.8 mA 0 dBm、9.8 mA 8 dBm内部 PA这个数字在同类 2.4 GHz SoC 里已经算低。而如果你要再往外推功率就需要级联一片外部 PA例如 Skyworks SE2435L 可以做到 24 dBm把整模块峰值电流拉到 250~400 mA。这部分在第四章会细算链路预算。一个容易被忽视的点是供电纹波。RF SoC 内部的 VCO 和 PA 对电源上的纹波非常敏感尤其是当你外接 PA 的时候PA 的开关瞬间会从 DC/DC 或 LDO 抽取大电流造成电源轨上几十毫伏的跌落。如果这个跌落发生在数据包发送期间直接表现就是发射信号的相位噪声变差、EVM 超标地面站误码率上升。更隐蔽的是nRF52840 内置 ADC 如果和射频部分共用电源ADC 采样值会带明显的周期性扰动。所以我们在模块里把电源分成两路一路给数字核心接 LDO另一路专门给射频前端用一个超低噪声 LDO 单独供电并且在靠近 nRF52840 的电源引脚处放足够的 0402 陶瓷电容。这个“拆电源轨”的操作比你在软件里做任何滤波都管用。2.2 晶振、天线和匹配网络的取舍卫星环境里最容易出问题的是晶振。消费级 BLE 模块通常用一颗 32 MHz 晶振精度约 ±10 ppm。在地面10 ppm 意味着 2.4 GHz 上大概 24 kHz 的频率偏差接收机用普通 AFC 就能纠回来。但是在轨晶振还要面对热真空下的频率漂移温度变化可能会把频偏推到 ±30 ppm 以上折合 70 kHz这已经接近 BLE 2 MHz 信道带宽的 10% 了对 GFSK 解调是很不利的。所以我们那颗板子从一开始就选了 TCXO标称稳定度 ±0.5 ppm。这个决定让调试阶段少了很多玄学问题。天线匹配也是个容易踩坑的地方。nRF52 的 RFIO 引脚需要外接一个匹配网络才能接到 50 欧天线。Nordic 官方参考设计里给的是典型的 π 型匹配但那个值是针对某款特定 PCB 和封装寄生参数的。如果你的板层叠和模块厂家不一样直接照抄很容易出现驻波比偏高的问题。我习惯在样板阶段留一个串联电阻、两个并联电容的位置方便用网络分析仪做 Smith 圆图匹配。如果你手里没有矢网至少要准备一台能测回波损耗的频谱仪加跟踪源。我们最开始用贴片天线放在 PCB 边角结果发现星体结构的金属支架离得太近导致天线方向图严重变形后来改为外置 1/4 波长鞭状天线情况才正常。卫星上做天线设计一定要把周围的结构件遮挡考虑进去不能只看天线本身的仿真。2.3 为什么外部 PA 和 T/R 开关要一起选型如果要扩大功率不要简单地把 nRF52840 的 TX 输出接到外部 PA。很多外部 PA 的输出级是开漏或半桥结构需要额外的扼流圈和匹配网络漏极电流瞬态变化很大供电轨上会掉电。更关键的是卫星模块通常希望兼顾“遥测下传”和“遥控接收”至少留一个接收指令的返回通道。你可以在下行链路上只做发射但如果你想让地面站也能上传配置或固件升级指令就得分时共用同一根天线。这时需要在外部 PA 后加一颗 T/R 开关而不是简单地把 PA 输出和 LNA/SoC 输入并接在一起。从硬件架构上看我建议的链路是这样的nRF52840 的 RFIO → 匹配网络 → 可选的外部 PA → 低通滤波器抑制谐波 → T/R 开关 → 天线。T/R 开关的控制脚由 nRF52840 的一个 GPIO 驱动发送时切到 TX接收时切到 RX。PA 的使能脚也要用 GPIO 控制并且在固件里保证“先切开关、再开 PA、最后启动 RADIO”的顺序避免 PA 在工作状态下输出阻抗失配而烧管子。这一步我们花了不少时间调试走了不少弯路后面在固件部分会给出时序控制建议。3. 固件不等于蓝牙用 RADIO 外设写自己的下行协议3.1 SoftDevice 要不要用这是很多从 Arduino/BLE 入门的人会卡住的第一个选择。用 Nordic 官方的 SoftDeviceS140好处是省心有完整的 BLE 协议栈支持广播、连接、DFU你只需要配置 GATT 服务和广播数据就行。坏处是你在卫星上并不需要 BLE 链路层那套“跳频、连接事件、加密”机制反而会被它锁住资源SoftDevice 占用部分 Flash 和 RAM不允许你直接访问 RADIO 外设而且中断上下文被它接管对实时帧调度不友好。我们的实际做法是不使用 SoftDevice直接用 nRF5 SDK 里的裸机示例把 RADIO 外设当成一个普通的窄带收发器来用。Nordic 的 RADIO 外设支持 BLE 1M、BLE 2M、BLE 500K、BLE 125K 以及 IEEE 802.15.4 调制模式也支持自定义 GFSK。你完全可以配置成 1 Mbps GFSK、BT0.5、250 kHz 频道间隔。这样你既保留了 SoC 里射频前端硬件的能力又不用跑蓝牙协议栈代码更透明