这次我们来看一个面向物联网和遥控场景的硬件方案:基于 Semtech LR1121 芯片的远距离低功耗遥控方案。这个项目的核心不是复杂的算法,而是如何将一颗支持 Sub-GHz 和 2.4GHz 双频段、专为低功耗设计的无线收发芯片,集成到实际的遥控器、传感器或数据采集终端中,实现超长距离和超长待机的关键能力。对于从事嵌入式开发、物联网硬件设计或需要解决户外、工业环境无线通信难题的工程师来说,这是一个值得深入研究的硬件选型方向。
LR1121 最值得关注的几个特点非常直接:第一,它支持 Sub-GHz(如 868MHz, 915MHz)和 2.4GHz 双频段,开发者可以根据法规和距离需求灵活选择;第二,其核心卖点是极低的功耗,特别适合电池供电、需要数年续航的终端设备;第三,它继承了 LoRa 调制技术的远距离通信基因,在复杂环境下的穿透性和抗干扰能力优于传统 FSK/OOK 方案。本文将围绕 LR1121 的核心特性、典型应用电路、低功耗设计要点、以及与 MCU(如 STM32)的集成开发流程进行拆解,帮助你判断这个芯片是否适合你的项目,并提供一个从硬件选型到软件调试的实践参考。
1. 核心能力速览
在深入细节之前,先用一个表格快速了解 LR1121 方案的核心规格和适用性,所有信息均基于公开的芯片数据手册和典型应用。
| 能力项 | 说明 |
|---|---|
| 核心芯片 | Semtech LR1121 低功耗、多频段 LoRa® 收发器 |
| 关键特性 | 支持 Sub-GHz (150-960MHz) 与 2.4GHz 频段;LoRa、(G)FSK、(G)MSK、BPSK 调制;极低接收电流(~5mA)和休眠电流(~100nA)。 |
| 通信距离 | 依赖频段、功率、环境。Sub-GHz 频段下,配合 LoRa 调制,可视距离可达数公里至十数公里。 |
| 功耗水平 | 接收模式典型值 5.2 mA,发射模式(20dBm)约 120 mA,休眠模式低至 100 nA。可实现电池供电数年。 |
| 接口方式 | SPI 接口与主控 MCU 通信,需少量 GPIO 用于控制(如复位、中断)。 |
| 硬件门槛 | 需要一定的射频电路设计和 PCB 布局经验。建议使用官方评估板(如 LR1121MB1DIS)进行前期验证。 |
| 开发环境 | 基于 STM32 或其他 ARM Cortex-M 系列 MCU,使用 Semtech 提供的驱动库和参考代码。 |
| 适合场景 | 远距离遥控器(无人机、工程机械)、智能表计、环境传感器、资产追踪、工业数据采集等电池供电的物联网终端。 |
| 不适合场景 | 需要高速率、大数据量传输(如视频流);对成本极度敏感且距离要求不高的消费类短距应用。 |
2. 适用场景与使用边界
LR1121 方案的目标非常明确:解决那些需要“传得远、耗电少、靠电池活很久”的物联网设备通信问题。
它最适合谁?
- 嵌入式硬件工程师:正在为户外设备选型无线芯片,面临传输距离和功耗的平衡难题。
- 物联网产品经理:规划智能农业传感器、智慧城市井盖监测、远程遥控开关等产品,对电池寿命有硬性指标要求。
- 工业自动化开发者:需要为散布在工厂、矿场的传感器节点构建可靠的数据回传链路。
它能解决什么问题?
- 超长距离通信:在 Sub-GHz 频段使用 LoRa 调制,能够有效对抗多径衰落,实现远超 WiFi、蓝牙的传输距离,轻松覆盖园区、农场、山区等场景。
- 超低功耗运行:通过精细的功耗管理(深度睡眠、定时唤醒、快速收发),使设备绝大部分时间处于“假死”状态,极大延长电池寿命。
- 双频段灵活性:Sub-GHz 用于主力远距离通信;2.4GHz 可用于与手机、网关进行近距离配置或固件升级(OTA),增加了系统设计的灵活性。
- 强抗干扰能力:LoRa 的扩频特性带来了出色的抗同频干扰能力,适合无线环境复杂的工业区。
使用边界与合规提醒
- 法规符合性:Sub-GHz 频段(如 868MHz, 915MHz)的使用需严格遵守所在国家/地区的无线电法规,包括发射功率、占空比等限制。设计产品前必须确认频段合规。
- 硬件设计门槛:射频电路(匹配网络、天线设计)对性能影响巨大。不建议射频新手直接设计量产 PCB,应从评估板或成熟模块入手。
- 通信速率限制:LoRa 是低数据速率技术。它适合传输传感器读数、控制指令等小数据包(几十到几百字节),不适合传输图片、音频等大文件。
- 网络拓扑:LR1121 是点对点或星形网络的理想选择。若需构建多跳、自组织的 Mesh 网络,需要在上层协议栈进行复杂设计。
3. 环境准备与前置条件
在动手焊接或写代码之前,需要准备好以下软硬件环境。这套清单适用于大多数基于 LR1121 的开发评估阶段。
3.1 硬件准备
- LR1121 评估板:强烈建议从 Semtech 或其授权分销商处获取官方评估板,如
LR1121MB1DIS。评估板集成了芯片、射频前端、天线接口和必要的被动元件,能最大程度避免硬件设计错误。 - 主控开发板:一块支持 SPI 接口的 MCU 开发板。STM32 系列是最常见的选择,例如 STM32L4 系列(主打低功耗)或 STM32F4 系列。确保开发板有足够的 GPIO 和 SPI 接口。
- 连接线缆:杜邦线,用于连接评估板与 MCU 开发板的 SPI 及控制引脚。
- 天线:与评估板接口匹配、工作在你目标频段的天线(如 868MHz 鞭状天线)。警告:严禁在不接天线或天线不匹配的情况下发射射频信号,可能损坏芯片。
- 电源:可调稳压电源或电池,用于评估功耗。需要能测量微安级电流的万用表或电流计。
- 逻辑分析仪或示波器(可选但推荐):用于调试 SPI 通信时序,在通信异常时非常有用。
3.2 软件与文档准备
- Semtech LR1121 资源包:从 Semtech 官网注册并下载 LR1121 的相关资料,核心包括:
LR1121 Datasheet:芯片数据手册,所有电气特性、引脚定义、寄存器描述的权威来源。LR1121 Reference Manual:详细的功能描述和操作指南。LR1121 Driver:针对常见 MCU(如 STM32)的 SPI 驱动层代码。LR1121 Example Projects:示例工程,演示如何初始化、收发数据。
- IDE 与编译工具链:
- 如果使用 STM32,准备
STM32CubeIDE或Keil MDK。 - 安装对应的 MCU 系列支持包(DFP)。
- 如果使用 STM32,准备
- 串口调试工具:如
Tera Term,Putty或SecureCRT,用于打印 MCU 的调试日志。
4. 硬件连接与驱动集成
这是从“芯片”到“系统”的第一步。我们将以 STM32 连接 LR1121MB1DIS 评估板为例。
4.1 引脚连接对照表评估板和 MCU 开发板的引脚定义请以各自原理图为准。以下是一个典型的连接示例:
| LR1121 评估板引脚 (功能) | STM32 开发板引脚 (功能) | 说明 |
|---|---|---|
VDD(3.3V) | 3.3V | 电源,确保电压匹配且电流足够。 |
GND | GND | 共地。 |
SCK(SPI Clock) | PA5(SPI1_SCK) | SPI 时钟线。 |
MISO(Master In Slave Out) | PA6(SPI1_MISO) | 主设备输入,从设备输出。 |
MOSI(Master Out Slave In) | PA7(SPI1_MOSI) | 主设备输出,从设备输入。 |
NSS(Chip Select) | PA4(GPIO Output) | 片选信号,低电平有效。通常用普通 GPIO 模拟。 |
NRESET(Reset) | PB0(GPIO Output) | 硬件复位引脚,低电平有效。 |
BUSY | PB1(GPIO Input) | 芯片忙状态指示,高电平表示芯片忙。 |
DIO1(Interrupt) | PB2(GPIO Input / EXTI) | 中断引脚,可配置用于触发收发完成等事件。 |
4.2 在 STM32CubeIDE 中配置 SPI
- 新建或打开一个 STM32 工程。
- 在
Pinout & Configuration视图,启用SPI1(或你选择的 SPI 外设)。 - 将模式设置为
Full-Duplex Master。 - 根据 LR1121 数据手册设置时钟参数(如波特率预分频器)。初始调试时,可以先用较低速率(如
PCLK/256)。 - 将
NSS信号模式设置为GPIO Output,而不是Hardware NSS,以便软件控制。 - 配置连接
NRESET,BUSY,DIO1的 GPIO 引脚,NRESET设为输出,BUSY和DIO1设为输入。
4.3 集成 Semtech 驱动库
- 将下载的
LR1121 Driver文件夹(通常包含sx126x.c/.h,lr1121.c/.h等)复制到你的工程目录。 - 在 IDE 中将源文件和头文件路径添加到工程中。
- 驱动库的核心是提供一个硬件抽象层(HAL),你需要实现其中的几个回调函数,主要是
Spi读写和Gpio控制。通常示例工程中已有针对 STM32 HAL 库的实现模板lr1121_hal.c。 - 检查并适配
lr1121_hal.c中的引脚定义和 SPI 句柄,使其与你实际的硬件连接匹配。
// lr1121_hal.c 中的适配示例(片段) // 定义你的 GPIO 和 SPI #define RADIO_NSS_PORT GPIOA #define RADIO_NSS_PIN GPIO_PIN_4 #define RADIO_NRESET_PORT GPIOB #define RADIO_NRESET_PIN GPIO_PIN_0 #define RADIO_BUSY_PORT GPIOB #define RADIO_BUSY_PIN GPIO_PIN_1 // 实现 HAL 层函数 void Lr1121SpiWrite( const void* context, const uint8_t* command, const uint16_t command_length ) { // 拉低 NSS HAL_GPIO_WritePin(RADIO_NSS_PORT, RADIO_NSS_PIN, GPIO_PIN_RESET); // 使用 HAL_SPI_Transmit 发送数据 HAL_SPI_Transmit(&hspi1, (uint8_t*)command, command_length, HAL_MAX_DELAY); // 拉高 NSS HAL_GPIO_WritePin(RADIO_NSS_PORT, RADIO_NSS_PIN, GPIO_PIN_SET); } // ... 其他函数如 SpiRead, GpioWrite, GpioRead 需要类似实现5. 基础功能测试与通信验证
硬件和驱动就绪后,开始进行最基本的芯片初始化和收发测试。这是验证整个链路是否打通的关键。
5.1 初始化流程测试
- 硬件复位:在
main函数中,首先控制NRESET引脚产生一个低电平脉冲(通常 >100us),然后释放,完成硬件复位。 - 调用初始化函数:调用驱动库提供的
Lr1121Init或类似函数。这个函数内部会通过 SPI 读取芯片版本号(GetVersion),这是验证 SPI 通信是否成功的最直接方法。 - 检查返回值:如果版本号读取成功并与预期相符(例如
0x21),说明 SPI 通信和芯片基本状态正常。可以在串口打印版本信息。
// main.c 中的初始化测试片段 int main(void) { // HAL 初始化... MX_SPI1_Init(); // 初始化 LR1121 HAL 层(绑定 SPI 和 GPIO 操作) Lr1121HalInit(&hspi1); // 1. 硬件复位 HAL_GPIO_WritePin(RADIO_NRESET_PORT, RADIO_NRESET_PIN, GPIO_PIN_RESET); HAL_Delay(1); // 保持低电平至少 100us HAL_GPIO_WritePin(RADIO_NRESET_PORT, RADIO_NRESET_PIN, GPIO_PIN_SET); HAL_Delay(5); // 等待芯片稳定 // 2. 初始化芯片 lr1121_status_t status = Lr1121Init(); if(status != LR1121_STATUS_OK) { printf("LR1121 Init Failed! Status: %d\r\n", status); while(1); } printf("LR1121 Init OK. Chip Version: 0x%02X\r\n", radio_version); // ... 后续配置 }5.2 单点对发测试(Loopback)在确认初始化成功后,可以进行最简单的自发自收测试,以验证射频前端基本正常。
- 配置射频参数:调用
Lr1121SetRfFrequency设置一个合法的频点(如 868.1 MHz),调用Lr1121SetTxParams设置发射功率(如 14 dBm),调用Lr1121SetModulationParams和Lr1121SetPacketParams设置调制方式(如 LoRa)和包格式。 - 发射数据:调用
Lr1121SendPayload,发送一段固定的数据,例如{0x01, 0x02, 0x03, 0x04}。 - 切换为接收模式并接收:紧接着,调用
Lr1121SetRx进入接收模式,并设置超时。理论上,在很近的距离内(甚至可以将发射天线和接收天线用衰减器或直接耦合),芯片可以收到自己发出的信号。 - 验证数据:在接收完成的中断回调函数中,读取接收缓冲区,比较收到的数据是否与发送的数据一致。
注意:自发自收对天线和环境有要求,可能因匹配不好而失败。更可靠的测试需要两台设备(两块评估板+两个MCU)。
5.3 两点通信距离测试这是验证 LR1121 远距离能力的核心测试。
- 准备两台设备:设备 A 作为发射端,设备 B 作为接收端。分别烧录对应的程序(或通过宏定义区分角色)。
- 统一参数:确保两台设备的射频参数完全一致:频点、扩频因子(SF)、带宽(BW)、编码率(CR)、前导码长度、同步字、Payload 长度。
- 设计通信协议:定义简单的应用层协议。例如,发射端每秒发送一个递增的计数器值和 RSSI(接收信号强度)请求;接收端收到后,回复一个包含自身 RSSI 的应答包。
- 实地测试:从近距离开始,逐步拉远距离,观察通信成功率、接收信号强度指示(RSSI)和信噪比(SNR)。记录下不同距离、不同障碍物(如穿墙、树林)下的性能数据。
// 一个简单的数据包结构示例 typedef struct { uint8_t seq; // 序列号 int8_t rssi; // 本机接收到的 RSSI(由接收方填充) uint8_t data[10]; // 用户数据 } lora_packet_t;6. 低功耗模式实现与功耗测量
低功耗是 LR1121 的灵魂。实现超长待机的关键在于让设备在绝大部分时间处于最低功耗的睡眠模式。
6.1 LR1121 的功耗模式
- 睡眠模式 (Sleep):最低功耗,约 100 nA。寄存器配置保持,但射频部分完全关闭。通过
NRESET引脚或 SPI 命令唤醒。 - 待机模式 (Standby):快速唤醒的中间状态,功耗约 1.6 uA (RC) 或 1.1 mA (XOSC)。部分电路保持工作,为快速切换到收发模式做准备。
- 接收模式 (Rx):持续监听信道,功耗约 5.2 mA。
- 发射模式 (Tx):发射射频信号,功耗随功率增大而增大,20 dBm 时约 120 mA。
6.2 低功耗系统设计流程
- MCU 与 LR1121 协同睡眠:整个系统的功耗取决于最耗电的部件。理想状态下,MCU 和 LR1121 应同时进入深度睡眠。
- 定时唤醒:使用 MCU 的低功耗定时器(如 RTC Wake-up Timer 或 LPTIM)作为系统“心跳”。定时器中断唤醒 MCU。
- 唤醒后流程:
- MCU 唤醒后,首先通过 GPIO 唤醒 LR1121(如果它也睡了),或直接发送命令使其退出待机。
- 快速配置 LR1121 进入接收模式,监听预定时长(如 100ms)。
- 如果收到数据,则处理数据,并可能进入发射模式进行回复。
- 如果未收到数据,则立即将 LR1121 配置回睡眠/待机模式。
- MCU 处理完必要任务后,自己也进入停止(Stop)或待机(Standby)模式,等待下一个定时中断。
- 减少活动时间:射频活动(Rx/Tx)是耗电大户。优化协议,让接收监听窗口尽可能短,发射数据包尽可能小、速率尽可能快(在满足距离要求的前提下,提高 LoRa 速率可以缩短空中传输时间)。
6.3 功耗测量方法
- 串联测量法:将万用表(电流档)或专用电流计串联到评估板的供电回路中。
- 观察波形:使用带电流探头的示波器观察电源线上的电流波形,可以清晰看到睡眠电流、唤醒峰值、接收电流脉冲等。
- 计算平均电流:记录一个完整工作周期内各状态的电流
(I)和持续时间(t)。平均电流I_avg = (I1*t1 + I2*t2 + ... + In*tn) / (t1+t2+...+tn)。 - 估算电池寿命:电池容量(mAh)/ 平均电流(mA) = 理论续航小时数。例如,平均电流 50 uA,使用 2000 mAh 的 CR2032 电池,理论寿命约为
2000 / 0.05 = 40000 小时 ≈ 4.5 年。
7. 常见问题与排查方法
在开发 LR1121 方案时,你可能会遇到以下典型问题。这里提供一个排查指南。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| SPI 通信失败,读不到芯片版本 | 1. 硬件连接错误(线接反、虚焊)。 2. SPI 时钟极性/相位(CPOL/CPHA)设置与 LR1121 不匹配。 3. NSS 片选信号时序问题。 4. 电源电压不稳或电流不足。 | 1. 用万用表检查所有电源和地线连接。 2. 用逻辑分析仪抓取 SPI 的 SCK, MOSI, MISO, NSS 波形,对照数据手册时序图检查。 3. 检查 NRESET和BUSY引脚电平。 | 1. 确认连接。LR1121 SPI 模式通常是 Mode 0 (CPOL=0, CPHA=0)。 2. 确保在 SPI 传输前后正确控制 NSS 引脚。 3. 确保 NRESET已释放为高,且BUSY为低(不忙)时才发起 SPI 操作。 |
| 可以初始化,但无法进入发射或接收模式 | 1. 射频参数配置错误(非法频点、功率等)。 2. 天线未接或严重不匹配,导致射频前端检测到错误。 3. 芯片内部校准失败。 | 1. 检查SetRfFrequency的参数是否在芯片支持的范围内。2. 检查 SetTxParams的功率值是否在允许范围内。3. 接上天线,并确保天线阻抗大致匹配(50欧姆)。 | 1. 使用数据手册中给出的典型频点和功率值进行测试。 2. 尝试调用芯片的校准函数(如 Calibrate)后再进行射频操作。3. 使用网络分析仪测量天线端的匹配情况(专业方法)。 |
| 通信距离远远低于预期 | 1. 天线性能差或方向不对。 2. 环境干扰大(同频段有其他强信号源)。 3. LoRa 参数设置不合理(如 SF 过低,BW 过宽)。 4. 发射功率设置过低。 | 1. 测量 RSSI 和 SNR。在近距离下 RSSI 应接近 -30 到 -50 dBm。如果过低,检查天线和匹配电路。 2. 使用频谱仪观察工作频段是否有干扰。 3. 检查 LoRa 参数:提高 SF 和降低 BW 可以增加灵敏度,但会降低速率。 | 1. 更换性能更好的天线,并确保天线在自由空间。 2. 更换一个干净的频点。 3. 调整 LoRa 参数:对于远距离,尝试 SF=12, BW=125kHz, CR=4/5。 4. 在法规允许下,适当提高发射功率。 |
| 功耗过高,电池消耗快 | 1. MCU 未进入低功耗模式。 2. LR1121 未进入睡眠模式,或唤醒后未及时返回睡眠。 3. 外围电路(如传感器、LED)漏电。 | 1. 用电流计测量系统在不同状态下的电流。 2. 检查代码,确认在空闲时是否调用了 Lr1121SetSleep和 MCU 的停机函数。3. 逐个断开外围电路,定位耗电模块。 | 1. 优化软件状态机,确保无通信任务时,MCU 和 LR1121 立即进入最深度的睡眠模式。 2. 禁用所有不用的 MCU 外设时钟和 GPIO。 3. 使用 MOSFET 开关彻底切断不工作时的高功耗外围电路电源。 |
| 通信不稳定,偶尔丢包 | 1. 电源噪声导致射频性能下降。 2. 软件逻辑有缺陷,状态机混乱。 3. 空中存在间歇性同频干扰。 4. 晶振精度不够,导致频率漂移。 | 1. 在电源引脚增加去耦电容(如 10uF + 0.1uF)。 2. 增加软件看门狗和通信协议中的应答重传机制。 3. 在接收端持续监测 RSSI,观察干扰出现规律。 | 1. 优化 PCB 布局,确保射频部分电源干净,地平面完整。 2. 实现稳定的应用层协议,包含序列号、应答和重传。 3. 如果干扰有规律,可尝试在软件上做“避让”。 4. 使用精度更高的温补晶振(TCXO)。 |
8. 进阶应用与最佳实践
当基础通信和低功耗功能稳定后,可以考虑以下进阶优化和扩展,以构建更可靠、更实用的产品。
8.1 双频段策略应用LR1121 支持双频段,这可以设计出更灵活的系统:
- 主从通信:设备间主要使用 Sub-GHz 进行远距离、低功耗的数据传输。
- 设备配置:通过手机 App(蓝牙)或网关(WiFi)在 2.4GHz 频段对设备进行近距离的参数配置、固件升级(OTA),无需拆卸设备或使用专用工具。
- 实现思路:在设备固件中实现两个独立的射频配置上下文,根据触发条件(如按键、特定指令)动态切换。需要仔细管理两个频段的天线切换或使用双端口天线。
8.2 跳频与抗干扰在复杂的无线环境中,固定频点可能受到持续干扰。可以实现简单的跳频算法:
- 在通信双方预置一组信道列表(如 10 个频点)。
- 每次通信成功后,根据预定算法切换到列表中的下一个信道。
- 如果通信失败,可以尝试在当前信道重试,或直接跳到下一个信道。
- 这能有效对抗窄带干扰,提升系统鲁棒性。
8.3 硬件设计要点(从评估板到自有 PCB)
- 射频布局:这是成败关键。遵循数据手册的布局建议,将 LR1121 及其匹配网络(电感、电容)集中布局,下方保证完整的地平面。射频走线需做 50 欧姆阻抗控制。
- 电源去耦:在芯片的每个电源引脚附近放置足够且合适容值的去耦电容(通常为 0.1uF 和 1uF 组合),并尽量靠近引脚。
- 天线接口:使用 π 型或 T 型匹配网络将芯片输出阻抗匹配到 50 欧姆。预留匹配元件的调试焊盘。天线馈线尽量短。
- 时钟源:如果对频率容限有高要求(如需要满足特定法规),建议使用外部温补晶振(TCXO)而非内部 RC 振荡器。
8.4 固件维护与升级
- 版本管理:为固件建立清晰的版本号,并在设备启动时通过串口或通信协议上报。
- OTA 升级:利用 LR1121 的通信能力实现无线升级。设计一个可靠的 Bootloader,将 Flash 分为 Bootloader 区、应用程序 A 区、应用程序 B 区(用于存储新固件)。通过通信接收新固件包,校验后写入 B 区,重启后从 B 区启动。
- 看门狗:同时启用硬件看门狗(IWDT)和软件看门狗,确保系统在异常时能自动复位,提高野外设备的可靠性。
9. 总结与下一步
LR1121 方案为需要“远距离”和“低功耗”双重挑战的物联网应用提供了一个强有力的硬件答案。它的价值不在于概念新颖,而在于将 Semtech 在 LoRa 领域积累的射频和低功耗设计经验,集成到了一颗高度灵活的双频段芯片中。
对于想要尝试的开发者,第一步应该是获取官方评估板并跑通示例工程。这是成本最低、风险最小的验证方式。重点验证 SPI 通信、芯片初始化和最基本的收发功能。接着,深入测试低功耗模式,用电流计实测不同状态下的功耗,这是评估其能否满足你产品续航要求的关键。最后,进行实地距离测试,在真实的应用环境中评估其通信可靠性。
最容易踩的坑通常集中在硬件层面:天线匹配和电源噪声。如果自制 PCB,强烈建议先做一份射频电路的仿真,并预留足够的调试点位。在软件层面,处理好BUSY引脚的状态查询是稳定操作 SPI 的基础,而精细的功耗状态管理则是实现长续航的灵魂。
下一步,你可以基于稳定的通信链路,构建具体的应用协议,将其与传感器、执行器结合,打造出真正可用的远程遥控节点、数据采集终端或资产追踪器。LR1121 是一个强大的工具,而如何用好它,则取决于你对产品需求的理解和嵌入式系统的整体设计能力。