Skip to content

先搞懂它是什么

  • Wi-Fi(802.11):让设备通过无线电接入局域网的技术,Ai-M6x 内置 2.4GHz Wi-Fi 6 收发器。
  • STA / AP:连路由器的是 STA(站点),开热点的是 AP(接入点);开发板两种角色都能当。
  • 连接的本质:不是“插上就通”,而是要依次完成扫描→认证→关联→DHCP 拿 IP 四步,任何一步失败都连不上。

层层拆解原理

1. STA 连接流程(从上电到联网)

关键事件在例程里都能看到:CODE_WIFI_ON_INIT_DONECODE_WIFI_ON_CONNECTEDCODE_WIFI_ON_GOT_IPCODE_WIFI_ON_DISCONNECT

2. Soft-AP 模式

开发板当热点时角色反转:固件启动 AP,等手机/电脑来连接(CODE_WIFI_ON_AP_STARTEDCODE_WIFI_ON_AP_STA_ADD)。典型用途:配网、局域网控制面板。

3. SDK 的事件驱动实现

SDK 的 Wi-Fi 采用事件回调模型,初始化后不轮询,而是注册 wifi_event_handler,固件状态变化时通过事件通知应用:

c
async_register_event_filter(EV_WIFI, wifi_event_handler, NULL);
wifi_task_create();      /* 启动 Wi-Fi 固件 */
fhost_init();            /* 启动 Wi-Fi 管理框架 */

结合 SDK 看实现

命令行连接(wifi_ble 共存例程):

c
wifi_sta_connect <ssid> <passwd>;   /* 连接路由器 */
wifi_sta_ps_on;                     /* 开启省电(共存场景推荐) */

代码里事件回调中处理“连接成功/拿到 IP”后再启动 TCP/UDP/HTTP/MQTT 等上层任务,是 SDK 例程的标准写法。

常见考点 / 面试题

连上 Wi-Fi 就算能上网了吗?

不算。连上只代表链路层关联成功;还要通过 DHCP 拿到 IP 地址,才能使用 IP/TCP/UDP/HTTP 等上层协议。

CODE_WIFI_ON_CONNECTED 和 CODE_WIFI_ON_GOT_IP 有什么区别?

前者表示已与路由器完成认证关联(还没 IP);后者表示 DHCP 已分配 IP,此时才能做网络通信。

为什么 SDK 用事件回调而不是轮询?

事件回调让应用在状态变化时才被通知,CPU 空闲时可休眠,响应也更快;轮询会持续占用 CPU 且错过瞬时状态。

STA 和 Soft-AP 能同时开吗?

部分场景可以(如 AP+STA 并发做“中继”),但同一射频资源分时复用,吞吐与稳定性会受影响;常规例程一般二选一。

Wi-Fi 密码错误会走到哪一步失败?

通常卡在认证/关联阶段:连不上或反复断开,事件停在 CONNECTED 之前(或很快收到 DISCONNECT),需要核对 SSID 与密码。

遇到问题?

如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

Released under the MIT License. Build Time 2026-09-11 14:52:23