打印
[应用相关]

通过 BlueNRG-LP 驱动外部 RF 前端

[复制链接]
408|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2022-9-15 09:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

       BlueNRG-LP 是一款超低功耗的蓝牙低功耗 SoC 器件,在天线连接器处可达到+8 dBm 输出功率。然而,蓝牙标准允许的最大输 出功率为+20 dbm(当地法规仍然可以将输出功率限制在较低的值)。 由于该原因,BlueNRG-LP 提供了控制外部 RF 前端的可能性,可以通过使用集成的功率放大器来增加输出功率。 除了功率放大器(PA), RF 前端通常还可以集成一个低噪声放大器(用于提高灵敏度)、TX/RX 开关电路、匹配网络和谐波滤 波器。

一、RF 控制信号            

        通常来说,一个外部前端至少要有 2 个引脚来控制,从而选择性地将天线连接到 PA 的输出或 LNA 的输入(LNA 可能不存在)。在 LNA 不存在的情况下,射频开关可以直接将 TX/RX 引脚与天线连接。 下面显示了一个外部前端的简单框图示例。前端内部可能有其他功能块(例如 PA 上的谐波滤波器),或 TX/RX 端 口和天线之间的旁路路径。



使用特权

评论回复
沙发
duo点|  楼主 | 2022-9-15 09:36 | 只看该作者

      为了控制外部前端,需要从 SoC 生成一些信号。通常只需两个信号即可:前者控制 TX 路径,后者控制 RX 路径。 这些信号控制前端的方式会因制造商而存在差别。 此外,在无线电处于传输或接收状态之前,总是需要预测 TX_EN/RX_EN 信号。这是因为功率放大器稳定功率需要 一定的时间,同时也会消耗大量的电流,由此便会导致 BueNRG-LP PLL 不稳定。 因此,无线电定序器会产生两种信号:

• TX_SEQUENCE,当无线电定序器将要启动传输时,此信号将升高;当内部 PA 被关闭时,此信号则降低。

• RX_SEQUENCE,当无线电定序器准备开始接收时,此信号将升高;当无线电离开 RX 状态时,此信号则降 低。

        TX_SEQUENCE 从低到高的转变发生在无线传输首个比特之前。同样,RX_SEQUENCE 从低到高的转变发生在 无线电处于接收状态之前。以上时间控制取决于状态(TX 或 RX)和 PLL 校准是否完成。每次使用不同的射频通 道时都要进行 PLL 校准。时间控制见表 1. 射频控制信号和 TX/RX 状态之间的延迟。这些时间控制基于硬件需求, 并由固件相应地设置。  

下图中的框图显示了 BlueNRG-LP 与外部前端之间的必要连接。TX_CTRL 和 RX_CTRL 是用于控制前端的引脚, 可因所用的控制模式而异。如果前端已经集成了阻抗匹配和合适的谐波滤波器,则无需外加匹配网络和谐 波滤波 器。


           图 2. BlueNRG-LP 与射频前端的连接框图


使用特权

评论回复
板凳
duo点|  楼主 | 2022-9-15 09:38 | 只看该作者

二、RF 控制模式

        BlueNRG-LP 中有两种选项用于使用由无线电定序器产生的 TX/RX 序列信号。 1. 自动模式,即内部 TX_SEQUENCE 和 RX_SEQUENCE 信号被路由到 SoC GPIO。这些信号可能与前端的控 制逻辑不兼容 2. 中断模式,即内部 TX_SEQUENCE 和 RX_SEQUENCE 信号产生中断请求,使固件能够按照前端需要的控制 逻辑采取动作

2.1    自动控制模式

        在自动模式下,可以在部分 BlueNRG-LP GPIO 上启用 TX_SEQUENCE 和 RX_SEQUENCE 信号。

2.2    中断控制模式


        在中断模式下,能够产生中断的系统控制器可以检测到来自定序器的 TX_SEQUENCE 和 RX_SEQUENCE 信号。 要启用 TX/RX 序列中断,可以使用以下代码。

  • LL_APB0_EnableClock(LL_APB0_PERIPH_SYSCFG);
  • LL_SYSCFG_BLERXTX_SetTrigger(LL_SYSCFG_BLERXTX_TRIGGER_BOTH_EDGE, LL_SYSCFG_BLE_TX_EVENT);
  • LL_SYSCFG_BLERXTX_SetTrigger(LL_SYSCFG_BLERXTX_TRIGGER_BOTH_EDGE, LL_SYSCFG_BLE_RX_EVENT);
  • LL_SYSCFG_BLERXTX_SetType(LL_SYSCFG_BLERXTX_DET_TYPE_EDGE, LL_SYSCFG_BLE_TX_EVENT);
  • LL_SYSCFG_BLERXTX_SetType(LL_SYSCFG_BLERXTX_DET_TYPE_EDGE, LL_SYSCFG_BLE_RX_EVENT);
  • LL_SYSCFG_BLERXTX_EnableIT(LL_SYSCFG_BLE_TX_EVENT|LL_SYSCFG_BLE_RX_EVENT);

BLE_RXTX_SEQ_IRQHandler 可以定义如下:

  • void BLE_RXTX_SEQ_IRQHandler(void)
  • {
  • if(LL_SYSCFG_BLERXTX_IsInterruptPending(LL_SYSCFG_BLE_TX_EVENT))
  • {
  • // Set GPIOs to make RF Front End enter TX mode
  • LL_SYSCFG_BLERXTX_ClearInterrupt(LL_SYSCFG_BLE_TX_EVENT);
  • }
  • else if(LL_SYSCFG_BLERXTX_IsInterruptPending(LL_SYSCFG_BLE_RX_EVENT))
  • {
  • // 设置 GPIO,让 RF 前端进入 RX 模式。
  • LL_SYSCFG_BLERXTX_ClearInterrupt(LL_SYSCFG_BLE_RX_EVENT);
  • }
  • }


使用特权

评论回复
地板
duo点|  楼主 | 2022-9-15 09:39 | 只看该作者
在中断服务程序内部,任何 GPIO 都可以用于驱动 RF 前端。 与自动控制模式相比,该操作模式可实现任何控制逻辑,因而更具灵活性。但这种方法的缺点是,如果在此期间有 更高优先级的中断出现,则控制信号可能被延迟。建议使用比 BLE_TX_RX_IRQHandler 低但比其他中断高的优先 级。即使将最高优先级分配给 BLE_TX_RX_IRQHandler,也不会对 BLE_RXTX_SEQ_IRQHandler 造成干扰。事 实上,BLE_TX_RX_IRQHandler 只在 TX/RX 序列的末尾执行。因此,在应当驱动外部前端退出 RX 或 TX 模式 时,BLE_RXTX_SEQ_IRQHandler 仅在 TX/RX 序列末尾处会因执行 BLE_TX_RX_IRQHandler 而被延迟,此操作 不属于关键操作。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

428

主题

1609

帖子

1

粉丝