2. ESP32硬件与无线基础

要让 Wi-Fi 与 BLE 在同一颗 ESP32 上稳定共存,第一步不是写代码,而是理解这颗芯片的硬件底座:CPU 与内存如何组织、射频模块如何收发、天线如何把信号送出去,以及两套协议栈在硬件资源上如何彼此牵制。本节从芯片架构出发,逐层向下到射频与天线,再向上到协议栈,最后落到共存时的硬件限制。

一、芯片架构:双核、内存与外设总线

ESP32 采用双核 Xtensa LX6 架构,通常分为 PRO_CPU 与 APP_CPU,主频可配置到 240 MHz。它内部集成 520 KB SRAM、448 KB ROM,并支持通过 SPI 外挂 Flash 与 PSRAM。无线相关的外设并不挂在普通 GPIO 上,而是通过专用总线连接到射频子系统。

  • CPU 与任务分配:Wi-Fi 协议栈通常运行在 PRO_CPU,BLE 控制器可运行在另一核或分时复用,应用任务则通过 FreeRTOS 调度。
  • 内存分区:协议栈缓冲区、DMA 描述符、应用堆内存共享同一片 SRAM,内存紧张会直接表现为连接不稳。
  • 外设接口:GPIO、SPI、I2C、UART 等与射频模块相对独立,但天线附近的布局会受这些走线影响。
关键认知:ESP32 的无线能力不是“外挂模块”,而是与 CPU、内存、时钟深度耦合的片上子系统。共存问题往往先在内存和时隙上暴露,而不是先在天线上暴露。

二、射频模块:2.4 GHz 收发链路

ESP32 的射频模块工作在 2.4 GHz ISM 频段,Wi-Fi 与 BLE 共用同一套射频前端。这意味着两者不能真正“同时发射”,只能通过时间分割快速切换。射频链路大致包括:基带处理、调制解调、功率放大器(PA)、低噪声放大器(LNA)、收发开关以及天线端口。

Wi-Fi 使用 20 MHz 或 40 MHz 信道,BLE 则把 2.4 GHz 划分为 40 个 2 MHz 信道,其中 3 个为广播信道,37 个为数据信道。BLE 的跳频机制会让它不断穿越 Wi-Fi 占用的频段,这正是共存冲突的物理根源。

Wi-Fi 信道 1 中心频率:2412 MHz
Wi-Fi 信道 6 中心频率:2437 MHz
Wi-Fi 信道 11 中心频率:2462 MHz
BLE 广播信道:37 (2402 MHz)、38 (2426 MHz)、39 (2480 MHz)
BLE 数据信道:0~36,间隔 2 MHz,跳频使用

三、天线设计:从 PCB 到匹配网络

天线是把射频能量辐射到空间的最后一段。ESP32 常见方案包括 PCB 板载天线、IPEX 外接天线和陶瓷天线。无论哪种方案,天线端口到芯片引脚之间都需要 50 Ω 阻抗匹配网络,通常由电感、电容组成 π 型或 L 型网络。

  • 净空区:板载天线下方和周围必须保持无铜、无走线、无电池的净空区域,否则辐射效率会明显下降。
  • 匹配网络:通过矢量网络分析仪调整匹配元件,使回波损耗在目标频段内尽量低。
  • 馈线:射频走线应短、直、阻抗连续,避免直角和跨分割。
常见误区:把天线当成“随便画一段走线”。天线净空被电池或金属外壳侵占后,Wi-Fi 距离可能从几十米降到几米,而 BLE 广播也会变得极不稳定。

四、协议栈概述:Wi-Fi 与 BLE 的分层

ESP32 的无线协议栈由乐鑫提供,Wi-Fi 侧包括 TCP/IP 适配层、LWIP、Wi-Fi 驱动与射频控制;BLE 侧包括主机层(GAP、GATT、SM)与控制器层(HCI、链路层、射频)。两者最终都汇聚到同一个射频调度器。

层次Wi-Fi 侧BLE 侧
应用层Socket / HTTP / MQTTGATT 服务与特征
传输/主机层TCP / UDP / LWIPGAP / GATT / SM
控制器/驱动层Wi-Fi 驱动HCI / 链路层
射频层共享 2.4 GHz 射频前端与天线

五、共存硬件限制:时隙、内存与射频前端

Wi-Fi 与 BLE 共存的核心限制来自三个方面:时间、内存和射频前端。时间上,两者共享同一射频通道,必须通过时分复用切换;内存上,双协议栈同时运行会占用大量 SRAM 和 DMA 缓冲;射频上,PA、LNA 和天线只能服务一个方向。

乐鑫提供了软件共存机制,通过优先级和时隙仲裁来协调 Wi-Fi 与 BLE 的收发。但软件只能缓解,不能突破硬件上限。例如 Wi-Fi 正在接收大包时,BLE 的广播可能被推迟;BLE 连接事件密集时,Wi-Fi 吞吐会下降。

ESP32 无线硬件与共存限制关系图 CPU 双核 PRO_CPU / APP_CPU 240 MHz · FreeRTOS 内存与 DMA 520 KB SRAM 协议栈缓冲 / 描述符 射频前端 PA / LNA / 收发开关 2.4 GHz 共享 射频调度器 时分复用 · 优先级仲裁 Wi-Fi 协议栈 LWIP · 驱动 · 20/40 MHz BLE 协议栈 GAP · GATT · 跳频 天线与匹配网络 共存瓶颈:时隙冲突 · 内存竞争 · 射频前端独占

六、案例与复盘:从硬件视角定位共存问题

某智能家居设备同时开启 Wi-Fi 上报与 BLE 配网,现象是 BLE 连接经常断开,Wi-Fi 吞吐也下降。排查后发现:天线净空被电池遮挡,回波损耗偏高;同时 BLE 连接间隔设置为 20 ms,Wi-Fi 又持续发送大包,射频调度频繁冲突。

  1. 先用频谱仪或 Wi-Fi 分析仪确认 2.4 GHz 频段占用情况。
  2. 检查天线净空与匹配网络,排除硬件辐射效率问题。
  3. 调整 BLE 连接间隔与 Wi-Fi 省电模式,减少时隙争抢。
  4. 监控堆内存与 DMA 缓冲,避免协议栈因内存不足丢包。
工程建议:在硬件设计阶段就为天线预留净空和匹配位置;在软件阶段优先保证 BLE 广播与连接事件的时隙,再为 Wi-Fi 分配剩余带宽。共存不是“二选一”,而是按场景动态分配。

理解 ESP32 的芯片架构、射频模块、天线设计与协议栈分层,是后续做共存参数调优和问题定位的基础。硬件限制决定了共存的上限,软件策略只能在这个上限内做优化。