4. BLE模组选型与硬件接口

好,咱们进入第四章。前面几章我们把UWB和BLE的协同架构理清了,现在该落地了——选什么样的BLE模组?怎么跟UWB模组连起来?天线怎么处理?

说实话,BLE模组选型这块,我见过不少项目栽跟头。有人图便宜选了不熟悉的方案,结果调试时发现UART驱动死活对不上;有人天线匹配没做好,通信距离直接砍半。嗯,咱们今天就把这些坑一个个填上。

4.1 主流BLE模组选型对比

目前市面上主流的BLE模组,我个人用得最多的是两个系列:Nordic nRF52系列和TI CC26xx系列。不是说别的不好,而是这两家在UWB+BLE协同场景下生态最成熟。

对比项 Nordic nRF52840 TI CC2640R2F TI CC2652R7
内核 ARM Cortex-M4F ARM Cortex-M3 ARM Cortex-M4F
主频 64 MHz 48 MHz 48 MHz
Flash / RAM 1 MB / 256 KB 128 KB / 20 KB 352 KB / 80 KB
BLE版本 5.3 4.2 / 5.0 5.2
UART接口数 2个(可映射) 1个 2个
典型功耗(TX 0dBm) 4.8 mA 6.1 mA 5.3 mA
生态成熟度 ★★★★★ ★★★★ ★★★★☆

我个人习惯是:如果项目对功耗和算力要求都高,优先选nRF52840。它自带的256KB RAM,跑UWB数据透传和简单算法完全够用,不用额外挂MCU。TI CC26xx系列的优势在于射频性能稳定,尤其是CC2652R7,支持BLE 5.2的AoA/AoD,跟UWB的测向能力可以互补。

我的经验: 如果UWB模组用的是DW3000系列,建议搭配nRF52840。因为DW3000的SPI时钟频率最高能到38 MHz,nRF52840的SPI硬件可以无缝对接。TI的CC26xx系列SPI最高只到24 MHz,虽然也能用,但数据吞吐量会受限。

4.2 模组引脚定义与UWB对接

选好模组,接下来就是连线。这里我重点讲UART和I2C两种接口,因为这是UWB和BLE之间最常用的通信方式。

4.2.1 UART接口

UART是UWB模组和BLE模组之间的主力通信接口。我一般这么接:

UWB模组 (如DWM1001C)      BLE模组 (如nRF52840)
    TXD  ——————————————>  RXD (P0.06)
    RXD  <——————————————  TXD (P0.08)
    RTS  ——————————————>  CTS (P0.07)
    CTS  <——————————————  RTS (P0.05)
    GND  ————————————————  GND

注意,这里我用了硬件流控(RTS/CTS)。为什么?

我在项目中遇到过一个问题:UWB模组测距数据爆发式输出时,BLE模组如果正在处理蓝牙广播,UART接收缓冲区会溢出。没有流控,数据就丢了。加上RTS/CTS后,UWB模组发送前会先检查BLE是否准备好,稳得很。

避坑指南: 我曾经在CC2640上踩过一个坑——它的UART RX缓冲区只有16字节。如果UWB模组一次发超过16字节的数据包,必须开流控或者用DMA。否则数据会丢得你怀疑人生。

4.2.2 I2C接口

I2C一般用于配置类通信,比如BLE模组读取UWB模组的传感器数据(温度、电压等)。接线简单:

UWB模组 (如DW3210)       BLE模组 (如CC2652R7)
    SCL  ——————————————>  SCL (P1.00)
    SDA  <——————————————  SDA (P1.01)
    GND  ————————————————  GND

I2C的速率我建议设到400 kHz(快速模式)。100 kHz太慢,会影响UWB配置的响应时间。但别超过400 kHz,否则信号完整性会出问题,尤其是线长超过10 cm的时候。

4.2.3 GPIO中断与唤醒

这个很多人会忽略。UWB模组测到特定事件(比如标签进入某个区域),需要立刻唤醒BLE模组发送通知。这时候GPIO中断就派上用场了。

我一般这样分配:

  • UWB_IRQ → BLE的GPIO中断引脚(上升沿触发)
  • BLE_WAKE → UWB的GPIO输入(高电平唤醒)
  • UWB_RST → BLE的GPIO输出(复位UWB模组)

嗯,这里有个细节:UWB_IRQ的中断优先级要设成最高。因为UWB测距数据是实时性的,如果被BLE的蓝牙协议栈延迟处理,测距精度会受影响。

4.3 天线匹配与调试

天线这块,说真的,是很多工程师的软肋。我见过有人把陶瓷天线直接焊在开发板上,结果通信距离不到5米。不是天线不行,是匹配没做好。

4.3.1 天线类型选择

天线类型 增益 尺寸 适用场景
PCB板载天线(倒F型) 0~2 dBi 约15×6 mm 成本敏感、量产产品
陶瓷贴片天线 1~3 dBi 约7×3 mm 空间受限、便携设备
外置鞭状天线 2~5 dBi 约50 mm 基站、网关设备

我个人习惯:原型验证阶段用外置天线,因为调试方便。量产时再换成PCB天线或陶瓷天线,成本能降下来。

4.3.2 π型匹配网络

BLE模组的射频输出端,一般都会预留一个π型匹配网络。说白了就是三个焊盘:一个串联电容/电阻,两个并联电容到地。

BLE模组 RF输出 ——[C1]—— 天线
                  │
                 [C2]
                  │
                 GND

为什么要做匹配?因为模组输出阻抗是50Ω,但天线阻抗不一定正好是50Ω。不匹配的话,信号会反射回来,能量就浪费了。

调试步骤:

  1. 先用网络分析仪测天线的实际阻抗(S11参数)
  2. 根据阻抗值计算C1和C2的容值
  3. 焊接后再次测量S11,确保在2.4 GHz频段S11 < -10 dB
  4. 做辐射测试,验证通信距离
我的经验: 如果没有网络分析仪,可以用一个简单方法——在2.4 GHz频段,C1和C2都先用1 pF的电容。然后看通信距离,如果距离短,微调C1(增大或减小0.5 pF),直到距离最优。这个方法虽然不精确,但90%的场景够用。

4.3.3 天线布局注意事项

嗯,这里有几个硬规则,违反了基本没救:

  • 天线下方不要铺铜——至少留出天线本体两倍大小的净空区
  • 天线远离金属外壳——金属会吸收辐射能量,距离至少5 mm
  • 馈线阻抗控制——从模组到天线的走线,宽度按50Ω阻抗计算(一般1.6 mm板厚、0.5 oz铜厚时,线宽约0.3 mm)
  • 不要直角走线——45度或圆弧过渡,减少阻抗突变

我曾经在一个项目里,把陶瓷天线放在了电池旁边。结果通信距离从30米掉到了8米。后来把天线移到PCB边缘,净空区留足,距离才恢复正常。你想想看,天线被电池挡住,信号怎么出得去?

4.4 本章知识体系

下面这张图,把BLE模组选型、硬件接口和天线匹配的核心逻辑串起来了。你可以把它当作一个检查清单:

BLE模组选型与硬件接口知识体系 BLE模组选型 Nordic nRF52系列 TI CC26xx系列 其他方案 硬件接口与引脚定义 UART(数据通信) I2C(配置读取) GPIO(中断唤醒) SPI(高速透传) 天线匹配与调试 天线类型选择 π型匹配网络调试 布局与净空区

这张图从选型开始,到硬件接口,再到天线匹配,层层递进。你实际做项目时,可以按这个顺序一步步检查,基本不会漏掉关键点。

一个小建议: 第一次做UWB+BLE联调时,先别急着画PCB。用开发板和杜邦线把UART和GPIO连起来,跑通基本通信流程。确认没问题了,再画原理图和PCB。这样能省掉至少一轮改板的时间。