使用带有 PIC32 的 WINC1500,扫描无法正常工作

Using WINC1500 with a PIC32, scan not working properly

我目前正在开发一个使用 PIC32 和 wifi 模块 ATWINC1500 的项目。我无法提供所有代码,但我正在使用可以共享的测试功能。 首先,这是我正在使用的一些设置和配置:

我想做的是使用基础设施模式将 Wifi 模块连接到现有的接入点。我能够获取周围接入点的数量,但是当我尝试从这些接入点读取信息时,信息是空的、无效的或不正确的。 这是我的代码:

bool WIFI_Test_Infrastructure(void)
{
    //Example: https://www.microchip.com/forums/m906568.aspx
    
    //Wait for WINC1500 to be initialized
    if(isWdrvExtReady() == false)
        return false;
    
    //Start a scan or wait for result
    IWPRIV_PARAM_SCAN scanner;
    IWPRIV_GET_PARAM param_scan = {
        .scan = scanner
    };
    iwpriv_get(SCANSTATUS_GET, &param_scan);
    IWPRIV_SCAN_STATUS status = param_scan.scan.scanStatus;
    IWPRIV_EXECUTE_PARAM dummy_param;
    
    //Process StateMachine while scanning
    if(status == IWPRIV_SCAN_IDLE)
    {
        vTaskDelay(1000 / portTICK_PERIOD_MS);

        //Disconnect wifi from everything
        WDRV_Disconnect();
        
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        
        while(WDRV_ConnectionState_Get() != WDRV_CONNECTION_STATE_NOT_CONNECTED)
            vTaskDelay(10 / portTICK_PERIOD_MS);

        vTaskDelay(1000 / portTICK_PERIOD_MS);
        

        WDRV_EXT_CmdScanStart();
        
        return false;
    }
    else if(status == IWPRIV_SCAN_IN_PROGRESS)
    {
        return false;
    }
    else if(status == IWPRIV_SCAN_NO_AP_FOUND)
    {
        iwpriv_execute(SCAN_START, &dummy_param);
        return false;
    }
    else if(status == IWPRIV_SCAN_SUCCESSFUL)
    {
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        
        //Read liste of wifi access point
        uint16_t wifi_number_AP;
        wifi_number_AP = m2m_wifi_get_num_ap_found();
        
        WDRV_SCAN_RESULT scanResult;
        tstrM2mWifiscanResult result;
        int i;
        for(i=0; i<wifi_number_AP; i++)
        {
            m2m_wifi_req_scan_result(i);

            vTaskDelay(1000 / portTICK_PERIOD_MS);

            winc1500_scan_result_read(&result); //ISSUE HAPPENED HERE

            vTaskDelay(1000 / portTICK_PERIOD_MS);

            memcpy((void *)scanResult.bssid, (void *)result.au8BSSID, sizeof(scanResult.bssid));
        }
        
        //SUCCESS
        return true;
    }
    else
    {
        return false;
    }
}

所以这里发生了什么:

我已经等了几个星期才问这个问题。希望有人可以提供帮助,或者至少给我一些提示,让我检查一下。 如果我遗漏了信息,请随时问我。

提前致谢!

阿德里安

解决方案只是一个堆栈的故事。我还有另外两个任务:SYS 和 TCP/IP。我需要增加他们堆栈的大小,因为他们正在管理几个关于扫描的功能。所以某处有一个压倒一切的东西。