This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF:Wi-Fi 不会自动重新连接

Guru**** 2487425 points
Other Parts Discussed in Thread: CC3220SF

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1203499/cc3220sf-wi-fi-does-not-reconnect-automatically

器件型号:CC3220SF

尊敬的团队:

我要将 RECONNECT 标志设置为 NWP 以允许重新连接到 Wi-Fi 网络。

在我的 ConfigureSimplelinkToDefaultState ()函数中, sl_WlanPolicySet (SL_WLAN_POLICY_CONNECTION、SL_WLAN_CONNECTION_POLICY (100、 0)、NULL0)被调用。 输入 SoftAP、设置网络信息和连接至配置文件等一系列命令均可成功完成。  

此后、完成下电上电。 此时、器件不会自动重新连接到存储的配置文件。  sl_WlanProfileGet (...) 函数返回2、并使用存储的分析信息正确更新参数。

是否需要发出命令以连接到配置文件?

谢谢。此致

Sneha

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sneha:

    我已将此帖子分配给了我们的一位软件专家、请给他们一些时间来进行调查并提供反馈。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果启用了自动模式、则无需手动连接。

    根据您的描述、它看起来不错。

    您是否可以共享  ConfigureSimplelinkToDefaultState ()? 您在使用什么 SP?

    此致、

    Shlomi.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shlomi:

    这是我的函数片段。  使用 sp_3.22.0.1_2.7.0.0_2.2.0.7.bin

    int ConfigureSimplelinkToDefaultState (空)

    SlWlanRxFilterOperationCommandBuff_t RxFilterIdMask;
    uint16_t bitmap = 0;
    uint8_t TxPower = 0;
    int16_t ConfigRet =-1;
    int ret =-1;

    memset (& RxFilterIdMask、0、sizeof (SlWlanRxFilterOperationCommandBuff_t);ConfigRet = sl_Start ();
    if ((0 == ConfigRet)||(SL_RET_CODE_DEV_ALANCE_START == ConfigRet))

    如果(0!= sl_WlanPolicySet (SL_WLAN_POLICY_CONNECTION、SL_WLAN_CONNECTION_POLICY (1、0、0、0)、 null、0))

    返回-1;
    }

    如果(0!= sl_NetCfgSet (SL_netcfg_IPV4_STA_ADDR_MODE、SL_netcfg_ADDR_DHCP、0、0)

    返回-1;
    }

    位图= 0;
    if (0!= sl_NetCfgSet (sl_netcfg_if、sl_netcfg_if_State、sizeof (bitmap)、(uint8_t *)和 bitmap))

    返回-1;
    }

    如果(0!= sl_WlanPolicySet (SL_WLAN_POLICY_SCAN、SL_WLAN_SCAN_POLICY (0、0)、NULL、0))

    返回-1;
    }

    TxPower = 0;
    如果(0!= sl_WlanSet (SL_WLAN_CFG_GENERAL_PARAM_ID、SL_WLAN_GENERAL_PARAM_OPT_STA_TX_POWER、1、(uint8_t *)&TxPower)

    返回-1;
    }

    如果(0!= sl_WlanPolicySet (SL_WLAN_POLICY_PM、SL_WLAN_NORMAL_POLICY、NULL、0))

    返回-1;
    }

    如果(0!= sl_NetAppMDNSUnRegisterService (0、0、0))

    返回-1;
    }

    memset (RxFilterIdMask.FilterBitmap、WLAN_CONFIG_DISABLE_RX_FILTER、WLAN_CONFIG_NR_OF_FILTERS);
    如果(0!= sl_WlanSet (SL_WLAN_RX_FILTERS_ID、SL_WLAN_RX_FILTER_REMOVE、sizeof (SlWlanRxFilterOperationCommandBuff_t)、(uint8_t *)&RxFilterIdMask))

    返回-1;
    }

    如果(0 = SL_Stop (200))

    返回0;
    }
    }

    返回0;
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您尝试恢复政策、您会得到什么?

    可表示为:  

    REt = sl_WlanPolicyGet (sl_WLAN_POLICY_CONNECTION、&Policy、0、(_u8*)&length);

    Shlomi.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    REt = sl_WlanPolicyGet (SL_WLAN_POLICY_CONNECTION、&Policy、0、(_u8*)&LENGTH);返回0

    Policy 的值为1、长度为1。

    只要设置了自动重新连接、就会显示此值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、这意味着设置正常。

    在这种情况下、我不明白它为什么不应该起作用。

    您能告诉我如何添加配置文件吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Shlomi:

    这是用于连接到 AP 的代码片段

    Long Network_if_ConnectAP (char * pcSid、char * pcMacAddress、SlWlanSecParams_t SecurityParams)

    char acCmdStore[128];
    unsigned short usConnTimeout ;
    unsigned char ucRecvdAPDetails;
    长 lRetVal;
    无符号长整型 ulIP = 0;
    无符号长整型 ulSubMask = 0;
    无符号长整型 ulDefGateway = 0;
    无符号长整型 ulDns = 0;

    G_usConnectIndex = 0;

    /*断开与 AP 的连接*/
    network_if_DisconnectFromAP();

    CLR_STATUS_BIT (g_ulStatus、STATUS_BIT_CONNECTION);
    CLR_STATUS_BIT (g_ulStatus、STATUS_BIT_IP_ACQUIRED);

    /*仅当 SSID 不为空时才继续*/
    if (pcSid!= NULL)

    lRetVal = sl_WlanSetMode (ROLE_STA);
    ASSERT_ON_ERROR (lRetVal);

    lRetVal = sl_Stop (sl_stop_timeout);
    lDeviceStatus = sl_Start (0、0、0);
    ASSERT_ON_ERROR (lDeviceStatus);

    /*这会触发 CC32xx 连接到特定的 AP。 */
    lRetVal =
    sl_WlanConnect ((signed char *) pcSid、strlen ((const char *) pcSid)、
    Null、SecurityParams、NULL);
    ASSERT_ON_ERROR (lRetVal);

    /*等待~10秒以检查与所需 AP 的连接是否成功*/
    lRetVal =-2;
    while (g_usConnectIndex < 10)

    睡眠(1);

    if (IS_CONNECTED (g_ulStatus)&& IS_IP_ACQUIRED (g_ulStatus))

    lRetVal = 0;
    中断;
    }
    G_usConnectIndex++;
    }
    }
    方案

    uart_print ("空 SSID、无法连接\n\r\n ");
    返回(-1);
    }

    /*将消息放在 UART 上*/
    如果(0 == lRetVal)

    uart_print ("\n\r 设备已连接到%s\n\r"、pcSid);

    /*获取 IP 地址*/
    lRetVal = Network_IF_IpConfigGet (&ulIP、&ulSubMask、&ulDefGateway、&ulDns);
    ASSERT_ON_ERROR (lRetVal);

    /*发送信息*/
    uart_print ("设备 IP 地址为%d.%d.%d.%d.%d \n\r\n\r\n、
    SL_IPV4_BYTE (ulIP、3)、SL_IPV4_BYTE (ulIP、2)、SL_IPV4_BYTE (ulIP、
    1)、
    SL_IPV4_BYTE (ulIP、0);

    //当前只允许一个配置文件
    lRetVal = sl_WlanProfileDel (SL_WLAN_DEL_ALL_PROFILES);
    lRetVal |= sl_WlanProfileAdd ((const int8_t*) pcSid、(int16_t) strlen ((const char *) pcSid)、(const uint8_t*) pcMacAddress、&SecurityParams、NULL、15、 0);
    }
    如果(-2 => lRetVal)、则否则

    uart_print ("\n\r 无法连接到给定的路由器\n\r");
    }
    返回(lRetVal);
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     pcMacAddress 设置为什么?

    它是什么 MAC 地址?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是-芯片组的 MAC 地址

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    哪种芯片组? CC3220本身?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    cc3220sf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这就是您的问题。 MAC 地址是其中一个 AP、如果您有少量具有相同 SSID 的 AP、然后需要填充 AP 的 MAC 地址以连接到特定 AP。 这被称为 BSSID。 请将其保留为 NULL、然后重试。