在 Sub‑1GHz 无线项目里,S2‑LP 自带最大 +16dBm发射功率,日常够用,但远距离、穿墙、遮挡场景就明显吃力。想把功率往上提、覆盖拉更远,最稳妥的方案就是加外部 PA。
ST 官方应用笔记 LAT1385 给出了一套极简方案:不用 MCU 额外发控制指令,只用 S2‑LP 自带 GPIO,自动跟着收发状态切换 PA,代码少、时序准、不掉链。本文把硬件接线、控制逻辑、寄存器配置、实测要点一次性讲透,直接能落地。
资料获取:【应用笔记】LAT1385 使用S2-LP驱动外部的PA
1. 为什么要给 S2‑LP 加外部 PA
- S2‑LP 片上功放上限:+16dBm
- 搭配 SE2435L 这类 PA 后:可达 +27dBm,距离与穿透能力显著提升
- 传统做法:MCU 在发包 / 收包前手动切 PA,代码冗余、时序难对齐
- LAT1385 思路:S2‑LP GPIO 硬件自动映射 TX/RX/Sleep,MCU 无感,协议栈自己管
2. 硬件连接:S2‑LP ↔ SE2435L 标准接法
以 FKI915V1 开发板为例,S2‑LP 通过GPIO0/1/2直接驱动 PA 控制脚,不用额外逻辑芯片。
| S2-LP 引脚 | 连接 PA 控制脚 | 功能说明 |
|---|---|---|
| GPIO0 | CSD | TX/RX 激活使能 |
| GPIO1 | CPS | 接收模式选择 |
| GPIO2 | CTX | 发射模式选择 |
SE2435L 核心控制逻辑(直接记这 3 条)
- 发射 TX:CSD=1,CTX=1,CPS=0
- 接收 RX:CSD=1,CPS=1,CTX=0
- 休眠 Sleep:CSD=0,CPS=0,CTX=0
3. GPIO 配置:让 S2‑LP 自动 “指挥” PA
关键是把 3 个 GPIO 设为硬件状态输出,与芯片内部 TX/RX 状态绑定,不用软件干预。
配置含义
- GPIO0:TX_RX_MODE → 收发时输出高,休眠低
- GPIO1:RX_STATE → 仅接收时高
- GPIO2:TX_STATE → 仅发射时高
官方参考代码(直接可用)
uint8_t tmp[] = {
// GPIO0:TX_RX模式 + 数字推挽
(uint8_t)S2LP_GPIO_DIG_OUT_TX_RX_MODE | (uint8_t)S2LP_GPIO_MODE_DIGITAL_OUTPUT_LP,
// GPIO1:RX状态 + 数字推挽
(uint8_t)S2LP_GPIO_DIG_OUT_RX_STATE | (uint8_t)S2LP_GPIO_MODE_DIGITAL_OUTPUT_LP,
// GPIO2:TX状态 + 数字推挽
(uint8_t)S2LP_GPIO_DIG_OUT_TX_STATE | (uint8_t)S2LP_GPIO_MODE_DIGITAL_OUTPUT_LP
};
// 写入GPIO配置寄存器(起始地址0x00)
S2LPSpiWriteRegisters(0x00, sizeof(tmp), tmp);
配置完成后:
- 芯片进入 TX → GPIO0/2 高,GPIO1 低 → PA 切发射
- 芯片进入 RX → GPIO0/1 高,GPIO2 低 → PA 切接收
- 芯片休眠 → 全部低 → PA 进休眠
4. 工作机制:为什么这样配刚好对上 PA?
很多人疑惑:为什么不用 if-else、不用定时器,就能严丝合缝?
- S2‑LP 内部链路层状态机变化时,GPIO同步硬件翻转,无软件延迟
- 3 路 GPIO 组合电平,完美匹配 SE2435L 的真值表
- 发射、接收、休眠三种模式自动无缝切换
- 你只需要正常调用 S2‑LP 的 Send/Receive/Idle,PA 全程自动配合
5. 注意事项
- PA 型号不同,真值表要重配:SE2435L 是这套逻辑,换其他 PA 必须对照 datasheet 改 GPIO 映射,不能直接照搬。
- 电平与供电要匹配:S2‑LP GPIO 是 3.3V 电平,PA 若为 1.8V 电平需加电平转换,避免烧坏。
- 时序安全:硬件联动比软件控制更快更稳,不会出现 “先发波、后开 PA” 的过冲风险。
- 功耗优化:芯片休眠时 PA 同步休眠,整体待机电流与不加 PA 时基本持平。
LAT1385 这套 S2‑LP 驱动外部 PA 方案,是 Sub‑1GHz 远距离项目的标准最优解:
- 不用改主流程、不加 CPU 开销
- 硬件自动同步,时序可靠
- 功率从 + 16dBm 拉到 +27dBm,覆盖翻倍
- 代码极简,移植成本极低
阅读全文
218