硬件平台认知:主流Wi-Fi模组与开发板选型
做嵌入式无线开发,选对硬件平台是第一步。我见过不少项目,软件写得挺好,结果栽在模组选型上——要么性能不够,要么接口不匹配,最后只能推倒重来。这一章咱们就聊聊市面上主流的几款Wi-Fi模组,以及怎么挑一块合适的开发板。
三款主流Wi-Fi模组对比
目前嵌入式领域用得最多的,基本就是ESP32、AP6255和RTL8822这三家。它们各有各的脾气,咱们一个一个说。
| 模组 | Wi-Fi标准 | 蓝牙版本 | 接口类型 | 典型应用 |
|---|---|---|---|---|
| ESP32 | 802.11 b/g/n | BLE 4.2 + Classic | SPI / SDIO / UART | IoT终端、智能家居 |
| AP6255 | 802.11 a/b/g/n/ac | BLE 5.0 | SDIO 3.0 / UART | Linux单板、车载 |
| RTL8822 | 802.11 a/b/g/n/ac | BLE 5.0 + Classic | SDIO 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-DevKitC | ESP32 | 生态好,上手快,社区资源多 |
| Linux嵌入式 | 树莓派4B / 香橙派Zero2 | AP6255 | 驱动成熟,文档齐全 |
| 高性能网关 | 友善NanoPi R5C | RTL8822 | 双频并发,USB接口稳定 |
| 蓝牙Mesh组网 | ESP32-C3-DevKit | ESP32-C3 | RISC-V架构,蓝牙5.0原生支持 |
你想想看,如果只是做个智能灯控,用树莓派加AP6255就有点大材小用了。反过来,如果要做视频传输网关,ESP32的Wi-Fi吞吐量又不够。选板子,先想清楚你的瓶颈在哪——是CPU算力、Wi-Fi带宽、还是蓝牙连接数?
接口说明与连接方式
Wi-Fi模组和主控芯片之间,最常用的接口就三种:SDIO、SPI、UART。我画了一张图,帮你理清它们的关系。
接口选型其实有个简单的原则:
- 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则更适合资源受限的场景。