硬件平台认知:主流Wi-Fi模组与开发板选型

做嵌入式无线开发,选对硬件平台是第一步。我见过不少项目,软件写得挺好,结果栽在模组选型上——要么性能不够,要么接口不匹配,最后只能推倒重来。这一章咱们就聊聊市面上主流的几款Wi-Fi模组,以及怎么挑一块合适的开发板。

三款主流Wi-Fi模组对比

目前嵌入式领域用得最多的,基本就是ESP32、AP6255和RTL8822这三家。它们各有各的脾气,咱们一个一个说。

模组Wi-Fi标准蓝牙版本接口类型典型应用
ESP32802.11 b/g/nBLE 4.2 + ClassicSPI / SDIO / UARTIoT终端、智能家居
AP6255802.11 a/b/g/n/acBLE 5.0SDIO 3.0 / UARTLinux单板、车载
RTL8822802.11 a/b/g/n/acBLE 5.0 + ClassicSDIO 3.0 / USB 2.0高端嵌入式、网关

ESP32:IoT开发者的老朋友

ESP32是乐鑫的明星产品。说实话,我最早接触它的时候还不太当回事,觉得就是个带Wi-Fi的MCU。后来做项目才发现,这家伙的生态太强了。

核心特点:

  • 双核Xtensa LX6处理器,主频最高240MHz
  • 内置520KB SRAM,外扩最大16MB Flash
  • Wi-Fi支持802.11 b/g/n,蓝牙支持BLE 4.2和Classic
  • 接口丰富:SPI、I2C、UART、SDIO、I2S都有

我的经验:ESP32的SDIO接口在驱动Wi-Fi时吞吐量最高,能达到40Mbps左右。但要注意,SDIO模式需要占用4个GPIO,如果板子引脚紧张,可以考虑用SPI接口,虽然速度会降到10Mbps左右。

ESP32最大的优势是开箱即用。乐鑫提供了完整的ESP-IDF开发框架,从Wi-Fi配网到OTA升级,SDK里全给你封装好了。我有个同事,之前没做过无线开发,拿着ESP32开发板,两周就把智能灯控项目跑通了。

注意:ESP32的蓝牙和Wi-Fi共用天线,不能同时全速工作。如果你需要Wi-Fi和蓝牙同时跑高吞吐,建议用外置蓝牙芯片或者换AP6255。

AP6255:Linux单板的标配

AP6255是博通(Broadcom)的方案,在树莓派、瑞芯微、全志等Linux单板上用得非常多。我最早接触它是在一个车载娱乐系统项目里,当时被它的双频并发能力惊到了。

核心特点:

  • 支持2.4GHz和5GHz双频,802.11 ac标准
  • 蓝牙5.0,支持BLE Mesh
  • SDIO 3.0接口,理论速度可达150Mbps
  • 功耗控制优秀,待机仅0.5mA

AP6255的驱动移植,说实话比ESP32要麻烦一些。它依赖Linux内核的brcmfmac驱动框架,还需要加载固件文件。我记得第一次移植的时候,光调SDIO时序就花了两天。

关键点:AP6255的固件文件(.bin和.txt)必须放在/lib/firmware/brcm/目录下,文件名要和内核匹配。比如树莓派上用的是brcmfmac43455-sdio.bin,如果文件名不对,驱动根本加载不起来。

RTL8822:高性能网关的选择

RTL8822是瑞昱(Realtek)的旗舰方案。说实话,这芯片有点贵,但性能确实强。我在一个工业网关项目里用过它,同时挂20个Wi-Fi客户端和10个蓝牙设备,稳得很。

核心特点:

  • 双频双发双收(2T2R),理论速率866Mbps
  • 蓝牙5.0双模,支持LE Audio
  • SDIO 3.0和USB 2.0双接口可选
  • 支持WPA3安全协议

RTL8822的驱动移植,我个人建议优先用USB接口。为什么?因为SDIO接口的驱动在Linux内核里版本比较多,容易踩坑。USB接口用rtl8822bu驱动,基本是开箱即用。

避坑指南:我曾经在RTL8822的SDIO驱动上栽过跟头——内核版本5.4以上,SDIO驱动需要打补丁才能正常识别模组。如果你用USB接口,就没这个烦恼。

开发板选型建议

选开发板,说白了就是看你的目标场景和开发习惯。我列几个常见的组合:

场景推荐开发板模组理由
IoT原型验证ESP32-DevKitCESP32生态好,上手快,社区资源多
Linux嵌入式树莓派4B / 香橙派Zero2AP6255驱动成熟,文档齐全
高性能网关友善NanoPi R5CRTL8822双频并发,USB接口稳定
蓝牙Mesh组网ESP32-C3-DevKitESP32-C3RISC-V架构,蓝牙5.0原生支持

你想想看,如果只是做个智能灯控,用树莓派加AP6255就有点大材小用了。反过来,如果要做视频传输网关,ESP32的Wi-Fi吞吐量又不够。选板子,先想清楚你的瓶颈在哪——是CPU算力、Wi-Fi带宽、还是蓝牙连接数?

接口说明与连接方式

Wi-Fi模组和主控芯片之间,最常用的接口就三种:SDIO、SPI、UART。我画了一张图,帮你理清它们的关系。

Wi-Fi模组与主控接口关系图 主控芯片 (MCU / MPU) SDIO 接口 SPI 接口 UART 接口 AP6255 SDIO 3.0 ESP32 SPI / SDIO RTL8822 USB / SDIO 接口选型建议 • SDIO:吞吐量最高(150Mbps),适合Linux平台,驱动复杂 • SPI:中等吞吐量(10-40Mbps),适合MCU平台,驱动简单 • UART:低吞吐量(2Mbps),适合AT指令控制,兼容性最好

接口选型其实有个简单的原则:

  • SDIO:要跑高吞吐(视频流、大文件传输),选它。但驱动移植工作量最大。
  • SPI:中等吞吐,MCU平台首选。ESP32的SPI Wi-Fi驱动,乐鑫已经封装好了,直接用。
  • UART:最省事,但速度慢。适合用AT指令控制模组的场景,比如MCU资源紧张的时候。

注意:UART接口的Wi-Fi模组,实际吞吐量一般不超过2Mbps。如果你要做视频传输或者OTA升级,千万别用UART,否则你会等到怀疑人生。

小结

这一章咱们聊了三款主流Wi-Fi模组的特点和选型思路。ESP32适合快速原型验证,AP6255是Linux单板的标配,RTL8822则适合高性能网关。接口方面,SDIO性能最强但驱动最复杂,SPI和UART则更适合资源受限的场景。