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.

CC3100的问题

Other Parts Discussed in Thread: CC3100, MSP430F5529, UNIFLASH

TI工程师,你好,

我在调试CC3100 getting_started_with_wlan_station 例子程序的时候,程序总会在一条语句里面停下来:

/* Wait */
while((!IS_CONNECTED(g_Status)) || (!IS_IP_AQUIRED(g_Status))) { _SlNonOsMainLoopTask(); }

g_Status的值一直都是0,然后程序就一直卡在这里,不继续往下执行了。

比如下面的一个函数的:

static INT32 establishConnectionWithAP()
{
SlSecParams_t secParams = {0};
INT32 retVal = 0;

secParams.Key = PASSKEY;
secParams.KeyLen = strlen(PASSKEY);
secParams.Type = SEC_TYPE;

retVal = sl_WlanConnect(SSID_NAME, strlen(SSID_NAME), 0, &secParams, 0);
ASSERT_ON_ERROR(__LINE__, retVal);

/* Wait */
while((!IS_CONNECTED(g_Status)) || (!IS_IP_AQUIRED(g_Status))) { _SlNonOsMainLoopTask(); }

return SUCCESS;
}

不知道这个函数_SlNonOsMainLoopTask();到底是用来干吗的啊??仅仅是一个等待的函数吗?

还有g_Status的值是通过那个函数来改变的呢?是通过这几个函数不:void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent;

void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent);

static void SimpleLinkPingReport(SlPingReport_t *pPingReport);前两个函数貌似没有明显的去调用啊。

  • 1. 你SDK和芯片的版本是什么?

    2. 你是在调试模式下还是运行模式下有这个问题?

  • SDK用的是CC3100SDK-0.5.2-  

    芯片是CC3100GZ的  CC3100 Boosterpack Rev 3.1 版本的

    在调试模式下的

  • 你的代码这里显示的是正在连接,但是没有连接上,

    1. 你的SSID和密码设置的是对的吗?

    2. 请确认一下你当前的工作模式是STA而不是AP

    3. 你配的MCU是什么?

  • 我试过连接三种AP:

    1、没有联网的路由器,没有设置秘钥

    2、联网的路由器,WPA 型秘钥

    3、用手机做热点,WPA型秘钥

    SSID 和密码设置应该没有错的。程序每次都是停在这个函数 establishConnectionWithAP() 的下面一句:

    /* Wait */
    while((!IS_CONNECTED(g_Status)) || (!IS_IP_AQUIRED(g_Status))) { _SlNonOsMainLoopTask(); }

    工作的是STA模式的。我配的MCU MSP430F5529

    我是用的三块板:CC3100Boosterpack Rev 3.1 CC3100 Emulation BoosterPack Rev 3.0  MSP430 F5529LP Launchpad. Rev1.5

    我也试过 “getting_started_wlan_with_ap” 这个例子。运行后,我可以用手机收到SSID,通过我设置的密码验证后可以连接上,但是程序也是停在了

    一条语句上,下面红色的一条代码:

    CLI_Write((unsigned char *)" Device started as Access Point\n\r");

    /* Wait */
    CLI_Write((unsigned char *)" Waiting for clients to connect...!\n\r");
    while((!IS_IP_LEASED(g_Status)) || (!IS_STA_CONNECTED(g_Status))) { _SlNonOsMainLoopTask(); }
    CLI_Write((unsigned char *)" Client connected to the device \n\r");
    CLI_Write((unsigned char *)" Pinging...! \n\r");

    从UART口打印出的内容到 Waiting for clients to connect...! 就停止了,我暂停debug,会出现一个新的窗口显示"No source available for "0xdcd3c" "

    状态变量g_Status一直没变,理论上,在一个事件发生后,g_Status 应该由SimpleLinkWlanEventHandler()、SimpleLinkNetAppEventHandler()

    等这些函数中的SET_STATUS_BIT()来改变,对吧???

    不知道为什么程序就是一直停在这条语句里面了。

    while((!IS_CONNECTED(g_Status)) || (!IS_IP_AQUIRED(g_Status))) { _SlNonOsMainLoopTask(); }

    BTW: 我用uniflash 得到的version参数:

    [09:57:20] INFO: > Bootloader version: 2.0.2.3
    [09:57:20] INFO: > Chipset version: 3

    谢谢!

  • 问题我已经解决了,用Uniflash 更新了CC3100的 FW version ,一切就正常了。。