Wi-Fi 示例

源码路径:example/rt_device/wifi

概述

本示例演示了如何使用 wlan 组件的 API 实现 Wi-Fi 连接、扫描、断开连接、ping 网站以及获取天气信息等功能。

支持的开发板

本示例可在以下开发板上运行:

  • sf32lb52-wlan-core

  • sf32lb56-wlan-core

  • sf32lb58-core

基本指令

指令

功能接口

说明

wifi scan

wifi_scan

扫描周围的 Wi-Fi 热点,输出 SSID、MAC 地址、安全类型、信号强度、信道和速率等信息

wifi join

wifi_join

连接指定的 Wi-Fi 网络(支持无密码和有密码两种格式)

wifi disc

wifi_disconnect

断开当前的 Wi-Fi 连接

wifi status

wifi_status

显示 STA 和 AP 模式的详细状态信息(SSID、MAC、信道、速率、RSSI、自动连接状态等)

示例使用方法

以 sf32lb52-wlan-core 为例:

硬件需求

  1. 拥有一块支持该示例的开发板

  2. 一根具备数据传输能力的 USB 数据线

编译和下载

按照以下步骤,可以完成编译和下载:

scons --board=sf32lb52-wlan-core_n16r16 -j8
build_sf32lb52-wlan-core_n16r16_hcpu\uart_download.bat

(操作不同的芯片开发板只需要将开发板名称进行更改即可,例如 sf32lb58-core 开发板,只需将 ‘sf32lb52-wlan-core_n16r16’ 更换成 ‘sf32lb58-core_n16r32n1’)

示例输出结果展示

  • 开机日志

01-29 15:44:12:972    sdio_scan_card
01-29 15:44:12:973    skw_sdio_probe 591 
01-29 15:44:12:975    SDIO: enabling function 1
01-29 15:44:12:977    SDIO: enabled function successfull
01-29 15:44:12:980    SDIO: enabling IRQ for function 1
01-29 15:44:13:017    skw_sdio_dt_read 480 address=0x40000000 len=16 buf=2002c2c0
01-29 15:44:13:082    fwk maxsize dram: 192492
01-29 15:44:13:084    skw_sdio_dt_write 433 address=0x20200000 maxsize=192492
01-29 15:44:13:679    debug----the address=0x20200000 
01-29 15:44:13:723    fwk maxsize iram: 357024
01-29 15:44:13:724    skw_sdio_dt_write 433 address=0x100000 maxsize=357024
01-29 15:44:14:707    debug----the address=0x100000 
01-29 15:44:14:711    BOOT CP BY SDIO
01-29 15:44:14:989     wifi version:trunk_W23.20.2-rev33829-rev33881-rev33848 20250110-01:39:39, slp=2
01-29 15:44:14:992     
01-29 15:44:14:997    BOOT CP BY SDIO DONE
01-29 15:44:15:000    skw_sdio2_handle_packet 704 WIFIREADY
01-29 15:44:15:001    skw_sdio_dt_read 480 address=0x40000000 len=16 buf=2002c2c0
01-29 15:44:15:002    fwk maxsize calibration: 2372
01-29 15:44:15:115    MAC Address: 00:00:00:00:00:00 
01-29 15:44:15:128    wifi_skw_wpa_supp_dev_init 572 2005bfe0
01-29 15:44:15:129    wpas_init_driver 6531 wpa_s->ifname=m01 drv_priv=20060ca4
01-29 15:44:16:136    l2_packet_init: iface m01 ifindex 2
01-29 15:44:16:153    [supp_if] wifi_skw_wpa_supp_set_default_scan_ies: Default scan ies set successfully
01-29 15:44:16:156    get_wpa_s_handle 123 ifname: m01,dev->num=2
01-29 15:44:16:157    wlan_set_regiontable 1642 
01-29 15:44:16:159    l2_packet_init: iface m01 ifindex 2
  • 扫描 Wi-Fi(指令:wifi scan)

01-29 15:44:27:108 TX:wifi scan
01-29 15:44:30:153    [572402] I/NO_TAG: scan quiet window: fill tail results 1->20
01-29 15:44:30:160    [572450] I/NO_TAG: scan quiet window elapsed, emit SCAN_DONE (total=20)
01-29 15:44:30:161                 SSID                      MAC            security    rssi chn Mbps
01-29 15:44:30:162    ------------------------------- -----------------  -------------- ---- --- ----
01-29 15:44:30:163    sifli-employee                  a2:37:68:8c:73:0a  WPA2_AES_PSK   -55   48    0
01-29 15:44:30:163    sifli-employee-WiFi5            a2:37:68:ec:73:0a  WPA2_AES_PSK   -56   48    0
01-29 15:44:30:164    DIRECT-e0-HP M227f LaserJet     4a:5f:99:d7:0a:e0  WPA2_AES_PSK   -58    6    0
01-29 15:44:30:165    HalfSweet                       04:f8:f8:98:0c:22  WPA2_AES_PSK   -62    1    0
01-29 15:44:30:167    sifli-employee                  a0:37:68:3c:73:0a  WPA2_AES_PSK   -65    6    0
01-29 15:44:30:171    sifli-employee-WiFi5            a2:37:68:6c:73:0a  WPA2_AES_PSK   -65    6    0
01-29 15:44:30:171    hw_manage_9720                  64:3e:8c:bf:97:2b  WPA2_AES_PSK   -69    1    0
01-29 15:44:30:172    hw_manage_23a0                  64:3e:8c:bc:23:ab  WPA2_AES_PSK   -75    1    0
01-29 15:44:30:172    ChinaNet-igF9                   14:57:9f:3a:fc:24  WPA2_AES_PSK   -75   11    0
01-29 15:44:30:173    hw_manage_efc0                  40:ee:dd:30:ef:cb  WPA2_AES_PSK   -78    1    0
01-29 15:44:30:174    hw_manage_49c0                  64:3e:8c:bc:49:cb  WPA2_AES_PSK   -78    1    0
01-29 15:44:30:174    hw_manage_d600                  64:3e:8c:bf:d6:0b  WPA2_AES_PSK   -79    1    0
01-29 15:44:30:175    NJYC-5G                         20:87:ec:8e:a9:58  WPA2_AES_PSK   -79   48    0
01-29 15:44:30:176    hw_manage_d640                  64:3e:8c:bf:d6:4b  WPA2_AES_PSK   -83    1    0
01-29 15:44:30:177    NJYC                            20:87:ec:8e:94:68  WPA2_AES_PSK   -85    6    0
01-29 15:44:30:177    NJYC-5G                         20:87:ec:8e:94:6c  WPA2_AES_PSK   -85   48    0
01-29 15:44:30:178    TY UAV_Wi-Fi5                   48:05:e2:f9:0a:d4  WPA2_AES_PSK   -86    1    0
01-29 15:44:30:178    NJYC                            20:87:ec:8e:a9:54  WPA2_AES_PSK   -90   11    0
01-29 15:44:30:180    hw_manage_0fc0                  40:ee:dd:31:0f:cb  WPA2_AES_PSK   -91   10    0
01-29 15:44:30:180    NJHF                            c2:37:ff:e7:83:c2  WPA2_AES_PSK   -97   11    0
01-29 15:44:30:187    msh />msh />
  • 连接 Wi-Fi(指令:wifi join [Wi-Fi 名称] [Wi-Fi 密码])

01-29 15:44:33:452 TX:wifi join sifli-employee zmjnb666
01-29 15:44:36:790    get_wpa_s_handle 123 ifname: m01,dev->num=2
01-29 15:44:36:794    wpa_drv_freertos_authenticate 888
01-29 15:44:36:797    [supp_if] wifi_skw_wpa_supp_authenticate 1101
01-29 15:44:36:798    [supp_if] wifi_skw_wpa_supp_authenticate 1129 params=2005ea38
01-29 15:44:36:799    found ssid=sifli-employee i=1
01-29 15:44:36:799    wlan_cmd_tx_frame 2384 ssid=sifli-employee sizeof(struct skw_join_param)=25,params=2004e170 size=426
01-29 15:44:36:800    wlan_cmd_tx_frame 2402 len=401
01-29 15:44:36:801    wlan_skw_htinfo 2334 ht_oper->field1=0
01-29 15:44:36:803    ctx: 0, bind
01-29 15:44:36:804    invalid lmac id: 0
01-29 15:44:36:806    [supp_if] wifi_skw_wpa_supp_authenticate 1132 params=2005ea38,params->auth_alg=1,params->auth_data_len=0
01-29 15:44:36:807    [supp_if] wifi_skw_wpa_supp_authenticate:Authentication request sent successfully
01-29 15:44:36:808    wpa_drv_freertos_authenticate 891
01-29 15:44:36:823    sme_event_auth 1660 auth_type=0
01-29 15:44:36:824    sme_associate 2040 params=2004e170
01-29 15:44:36:825    wlan_set_regiontable 1642 
01-29 15:44:36:834    wlan_ops_sta_ioctl: 0x20000
01-29 15:44:36:835    wlan_ops_sta_ioctl: MLAN_IOCTL_BSS
01-29 15:44:36:836    wlan_bss_ioctl 346: sub_command = 131073
01-29 15:44:36:837    wlan_bss_ioctl_start 295 i=1
01-29 15:44:36:837    [supp_if] wifi_skw_wpa_supp_associate: Association request sent successfully
01-29 15:44:37:338    [807843] I/WLAN.mgnt: wifi connect success ssid:sifli-employee
01-29 15:44:37:342    app_cb: WLAN: authenticated to network
01-29 15:44:40:991    wm_netif_status_callback 562 DHCP SUCCESS
01-29 15:44:40:995    skw_rt_wlan_event_forwarder 309 wifi connect success!
01-29 15:44:40:999    [927587] I/WLAN.mgnt: wifi connect success ssid:sifli-employee
01-29 15:44:40:999    [927615] I/NO_TAG: connected: ssid=sifli-employee channel=6
01-29 15:44:41:000    app_cb: WLAN: connected to network
01-29 15:44:41:001    Connected to following BSS:
01-29 15:44:41:002    SSID = [sifli-employee]
01-29 15:44:41:003    IPv4 Address: [192.168.2.174]
  • 测试本地设备与服务器之间的连通性(ping 网站)

01-29 15:44:53:437 TX:ping www.sifli.com
01-29 15:44:53:491    60 bytes from 58.144.196.181 icmp_seq=0 ttl=48 time=37 ms
01-29 15:44:54:532    60 bytes from 58.144.196.181 icmp_seq=1 ttl=48 time=32 ms
01-29 15:44:55:573    60 bytes from 58.144.196.181 icmp_seq=2 ttl=48 time=32 ms
01-29 15:44:56:614    60 bytes from 58.144.196.181 icmp_seq=3 ttl=48 time=32 ms
01-29 15:44:56:626    msh />msh />
  • 获取天气信息

01-29 15:44:59:751 TX:weather
01-29 15:44:59:779    DNS lookup succeeded, IP: 116.62.81.138
01-29 15:44:59:834    id:"WM7B0X53DZW2"
01-29 15:44:59:835    name:"重庆"
01-29 15:44:59:836    country:"CN"
01-29 15:44:59:836    path:"重庆,重庆,中国"
01-29 15:44:59:838    timezone:"Asia/Shanghai"
01-29 15:44:59:839    timezone_offset:"+08:00"
01-29 15:44:59:841    txt:"阴"
01-29 15:44:59:842    code:"9"
01-29 15:44:59:844    temperature:"11"
01-29 15:44:59:846    last_update:"2026-01-29T15:30:20+08:00"
01-29 15:44:59:851    msh />msh />
  • 断开连接(指令:wifi disc)

01-29 16:01:47:863 TX:wifi disc
01-29 16:01:47:865    get_wpa_s_handle 123 ifname: m01,dev->num=2
01-29 16:01:47:872    get_wpa_s_handle 123 ifname: m01,dev->num=2
01-29 16:01:47:883    wm_netif_status_callback 562 DHCP FAILURE
01-29 16:01:47:884    wifi_deauthenticate 78 pmpriv->media_connected=0 
01-29 16:01:47:884    app_cb: disconnected
01-29 16:01:47:917    [923535] I/WLAN.mgnt: disconnect success!
01-29 16:01:47:924    msh />msh />

故障排除

如果未能出现预期的日志,可以从以下方面进行故障排查:

  • 检查 Wi-Fi 是否已经上电

  • 检查 SDIO/SDHCI 相关配置是否正确打开

  • 检查软件 pinmux 配置是否与原理图一致

  • 检查 SDIO/SDHCI 寄存器是否已正确使能

  • 若使用 SDHCI 模式,确认已配置为 SDIO 模式(参考前文 menuconfig 配置)

  • 检查 Host 端与 Wi-Fi 芯片连接的两个 GPIO 的方向是否正确(一个为输入,一个为输出)