乐鑫技术交流
直播中

HTSX

9年用户 816经验值
擅长:可编程逻辑
私信 关注
[问答]

如何在SDK中实现WPS?

我不知道如何在SDK中实现WPS。SDK 附带了一个示例,但它似乎对我不起作用。它编译了,但什么也没发生。从 uart 输出中,我可以看到 wps 甚至没有启动。

我真的真的需要帮助。代码如下。有人可以解释一下key_init_single的作用以及为什么使用 GPIO 13 吗?我们是否需要以某种方式切换它才能使 WPS 开始工作?


#include "osapi.h"
#include "user_interface.h"

#include "driver/key.h"

#define WPS_KEY_NUM        1

#define WPS_KEY_IO_MUX     PERIPHS_IO_MUX_MTCK_U
#define WPS_KEY_IO_NUM     13
#define WPS_KEY_IO_FUNC    FUNC_GPIO13

LOCAL 结构keys_param键;
LOCAL 结构single_key_param *single_key;

LOCAL 无效ICACHE_FLASH_ATTR
user_wps_status_cb(int 状态)
{
    switch (status) {
        case WPS_CB_ST_SUCCESS:
            wifi_wps_disable();
            wifi_station_connect();
            break;
        case WPS_CB_ST_FAILED:
        case WPS_CB_ST_TIMEOUT:
            wifi_wps_start();
            break;
    }
}

LOCAL 无效ICACHE_FLASH_ATTR
user_wps_key_short_press(无效)
{
    wifi_wps_disable();
    wifi_wps_enable(WPS_TYPE_PBC);
    wifi_set_wps_cb(user_wps_status_cb);
    wifi_wps_start();
}

无效ICACHE_FLASH_ATTR
user_rf_pre_init(无效)
{
}

无效ICACHE_FLASH_ATTR
user_init(无效)
{
    single_key = key_init_single(WPS_KEY_IO_NUM、WPS_KEY_IO_MUX、WPS_KEY_IO_FUNC、
                                            NULL, user_wps_key_short_press);

    keys.key_num = WPS_KEY_NUM;
    keys.single_key = &single_key;

    key_init(&keys);

    wifi_set_opmode(STATION_MODE);
}

回帖(1)

h1654155216.9102

2024-7-11 16:10:25
首先,让我们逐步了解您的代码和问题。您正在尝试在SDK中实现WPS(Wi-Fi Protected Setup),但示例代码似乎没有按预期工作。让我们分析代码并找出可能的问题。

1. 首先,我们需要了解`key_init_single`的作用。这个函数用于初始化单个按键,使其能够触发WPS过程。在您的代码中,`key_init_single`可能用于初始化GPIO 13作为WPS按键。

2. 接下来,让我们看看为什么使用GPIO 13。GPIO(通用输入/输出)是一种硬件接口,可以用于控制和读取外部设备的状态。在您的代码中,GPIO 13可能被选为WPS按键,因为它在硬件上连接到了相应的WPS触发电路。

3. 关于是否需要以某种方式切换GPIO 13以使WPS开始工作,通常情况下,当按下WPS按键时,GPIO 13的状态会发生变化,从而触发WPS过程。但是,如果uart输出显示WPS没有启动,可能是按键初始化或触发逻辑存在问题。

为了解决这个问题,您可以尝试以下步骤:

1. 确保您的硬件连接正确,GPIO 13确实连接到了WPS触发电路。

2. 检查`key_init_single`函数的参数是否正确设置。确保您使用了正确的GPIO编号和引脚复用设置。

3. 在代码中添加调试信息,例如在`key_init_single`函数调用前后打印日志,以确保函数被正确调用。

4. 如果可能的话,尝试使用其他GPIO引脚作为WPS按键,以排除硬件问题。

5. 检查SDK示例代码中的其他部分,确保所有与WPS相关的设置都已正确配置。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分