4. LoRa硬件选型:SX1278 vs SX1262 vs LR1120,如何根据项目选型
做LoRa项目,第一关就是挑芯片。市面上最主流的就三款:SX1278、SX1262,还有这两年火起来的LR1120。很多朋友问我:“到底选哪个?” 说实话,没有万能答案,得看你的项目到底要什么。
我个人习惯,选型前先画一张决策树,把需求拆开看。下面这张图,基本概括了我的思路。
4.1 三款芯片的核心差异
先看一张对比表,心里有个底。
| 参数 | SX1278 | SX1262 | LR1120 |
|---|---|---|---|
| 频段 | 137-525 MHz | 150-960 MHz | 150-960 MHz + 2.4G + 卫星S频段 |
| 最大发射功率 | +20 dBm | +22 dBm | +22 dBm |
| 接收灵敏度 | -148 dBm | -148 dBm (实际略优) | -148 dBm (2.4G略低) |
| 调制方式 | LoRa / FSK / OOK | LoRa / (G)FSK / MSK | LoRa / (G)FSK / MSK / BPSK |
| 功耗(接收) | ~12 mA | ~4.6 mA | ~5.5 mA |
| 封装 | QFN 28 (6x6mm) | QFN 24 (4x4mm) | QFN 32 (5x5mm) |
| 典型成本 | 低 | 中 | 高 |
这张表信息量不小。我挑几个关键点说说。
4.2 SX1278:老将出马,一个顶俩
SX1278是LoRa领域的“常青树”。2013年推出,到现在还在大量出货。为什么?因为它够用,而且便宜。
优点:
- 技术成熟:网上教程、开源代码、社区支持,SX1278是最多的。你遇到问题,基本都能搜到答案。
- 成本低:批量采购,一片SX1278比SX1262便宜30%以上。对于成本敏感的产品,这是巨大优势。
- 驱动简单:寄存器少,SPI通信逻辑清晰。我见过新手用Arduino,半天就能让SX1278收发数据。
缺点:
- 功耗高:接收电流12mA,是SX1262的2.6倍。电池供电的项目,这个差距很要命。
- 体积大:QFN28封装,6x6mm,占板面积大。做小型化产品比较吃力。
- 频段窄:只支持到525 MHz,没法用在868/915 MHz频段。
我的建议:如果你的产品是市电供电,或者对成本极度敏感,而且工作在433/470 MHz频段,SX1278仍然是最稳妥的选择。我去年帮一个朋友做智能电表项目,用的就是SX1278,量产几万片,稳得很。
4.3 SX1262:低功耗之王,性能担当
SX1262是SX1278的升级版。2017年推出,现在已经是中高端LoRa项目的首选。
优点:
- 功耗极低:接收电流4.6mA,待机电流不到1µA。做电池供电的设备,SX1262是首选。
- 灵敏度高:虽然标称-148 dBm,但实际测试中,SX1262的底噪控制更好,同等条件下能多传10%-15%的距离。
- 体积小:QFN24封装,4x4mm,适合做可穿戴设备、传感器节点。
- 频段宽:支持150-960 MHz,全球主流ISM频段都能用。
缺点:
- 成本略高:比SX1278贵一些,但差距在缩小。
- 驱动稍复杂:引入了DIO2、DIO3等更多控制引脚,配置寄存器也更多。不过,用现成的驱动库,问题不大。
避坑指南:我曾经在一个水表项目中,因为没注意SX1262的DIO3引脚需要外接32k晶振,导致设备无法进入休眠模式。后来查了三天资料才发现。嗯,这里要注意,SX1262的DIO3是TCXO供电输出,如果你用外部TCXO,这个引脚要正确配置。
4.4 LR1120:多面手,但别轻易碰
LR1120是Semtech 2020年推出的旗舰芯片。它最大的亮点是:一颗芯片搞定Sub-GHz、2.4G和卫星S频段。
优点:
- 多频段支持:Sub-GHz做远距离,2.4G做高速率,卫星S频段做全球覆盖。一颗芯片,三种玩法。
- 卫星通信:这是LR1120的杀手锏。配合Semtech的LR-FHSS技术,可以直接连接卫星。对于偏远地区的物联网项目,这是革命性的。
- 未来兼容性:支持LoRaWAN 1.0.4标准,也支持最新的LoRaWAN 1.1。
缺点:
- 成本高:一片LR1120的价格,能买三片SX1278。不是所有项目都承受得起。
- 设计复杂:多频段意味着天线设计、匹配电路、软件协议栈都更复杂。我建议没有5年以上RF经验的朋友,慎重考虑。
- 功耗偏高:2.4G模式下,接收电流约10mA,比SX1262高不少。
警告:不要为了“炫技”而选LR1120。如果你的项目只需要Sub-GHz,老老实实选SX1262。LR1120的2.4G和卫星功能,只有在明确需求时才值得投入。我曾经见过一个团队,为了“一步到位”选了LR1120,结果开发周期延长了半年,成本翻了一倍,最后不得不换回SX1262。
4.5 实战选型:三步走
说了这么多,到底怎么选?我总结了一个三步法。
- 第一步:确定频段和距离
- 433/470 MHz,距离5km以内,成本敏感 → SX1278
- 868/915 MHz,距离5km以上,需要低功耗 → SX1262
- 需要2.4G或卫星通信 → LR1120
- 第二步:评估功耗和体积
- 电池供电,要求续航1年以上 → SX1262
- 市电供电,或者大电池,续航要求不高 → SX1278
- 可穿戴设备,体积受限 → SX1262
- 第三步:看团队经验
- 新手团队,快速出产品 → SX1278
- 有RF经验,追求性能 → SX1262
- 资深团队,做前沿产品 → LR1120
我的个人习惯:做新项目时,我会先拿SX1262做原型验证。因为它的性能上限高,功耗低,后期改板子也方便。如果成本压力大,再考虑换成SX1278。至于LR1120,除非客户明确要求卫星通信,否则我不会主动推荐。
4.6 代码示例:SX1262初始化片段
最后,给一个SX1262的初始化代码片段。这是我在项目中常用的配置,适用于868 MHz频段,SF12,125 kHz带宽。
// SX1262 初始化示例 (基于STM32 HAL库)
void SX1262_Init(void) {
// 1. 复位芯片
SX1262_Reset();
HAL_Delay(10);
// 2. 设置工作模式为睡眠
SX1262_SetSleep(SX1262_SLEEP_RTC);
// 3. 设置频段 (868 MHz)
SX1262_SetRfFrequency(868000000);
// 4. 设置调制参数 (SF12, BW125kHz, CR4/8)
SX1262_SetModulationParams(
SX1262_LORA_SF12,
SX1262_LORA_BW_125,
SX1262_LORA_CR_4_8,
SX1262_LORA_LOW_DATA_RATE_OPTIMIZE_ON
);
// 5. 设置发射参数 (功率22dBm, 无Ramp)
SX1262_SetTxParams(22, SX1262_RAMP_200_US);
// 6. 设置DIO引脚映射 (DIO1 -> IRQ)
SX1262_SetDioIrqParams(
SX1262_IRQ_TX_DONE | SX1262_IRQ_RX_DONE,
SX1262_IRQ_TX_DONE | SX1262_IRQ_RX_DONE,
SX1262_IRQ_NONE,
SX1262_IRQ_NONE
);
// 7. 进入待机模式
SX1262_SetStandby(SX1262_STANDBY_RC);
}
这段代码看起来简单,但每一步都有坑。比如第2步,设置睡眠模式时,如果忘了配置RTC,芯片可能无法被正确唤醒。第4步,SF12配合125kHz带宽时,一定要开启Low Data Rate Optimize,否则接收会丢包。
好了,关于LoRa硬件选型,就聊这么多。记住一句话:没有最好的芯片,只有最合适的芯片。你的项目需求,才是最终的决策依据。