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芯片demo历程运行失败

Other Parts Discussed in Thread: CC3100, CC3100SDK, UNIFLASH

采用HZ的芯片,和最新的0.52版本的SDK,在运行SDK中自带的demo历程的时候,有以下几个API调用返回失败

  1)
    /* Set connection policy to Auto + SmartConfig (Device's default connection policy) */
    retVal = sl_WlanPolicySet(SL_POLICY_CONNECTION, SL_CONNECTION_POLICY(1, 0, 0, 0, 1), NULL, 0);
    返回值是-7

 2)
   /* Remove all profiles */
    retVal = sl_WlanProfileDel(0xFF);
    返回值是-7

3)retVal = sl_WlanDisconnect();
   返回值是-128

4)    /* Set PM policy to normal */
    retVal = sl_WlanPolicySet(SL_POLICY_PM , SL_NORMAL_POLICY, NULL, 0);
    返回值是-7

 

  • Hi Xueqin,

    同样的问题,我们就统一到另外一个帖子讨论吧,下次打错字,可以直接修改滴,谢谢!

  • Hi 你们好,我是上海朔思科技的陈工,我们也碰到了这个问题,急需解决,请问是另外的哪个帖子?能提供下链接吗?谢谢!

  • 能否在本贴,直接告知问题原因,如何解决?谢谢!

  • jeff,

       请问你用的CC3100配什么样的MCU进行的操作?是我们的MSP430还是TIVA-C,或者是其他的MCU呢?

    运行demo失败有可能的原因比较多,麻烦你描述一下你的测试平台和测试过程。

    谢谢

  • Hi Ken,你好!

    谢谢答复!

    Sorry,我以为这个问题的原因是一样的,我们用的是siliconlabs的 型号为EFM32LG295F128的MCU,Cortex-M3的内核,是我们一个成熟的GPS跟踪器的板子,把SPI接口信号和HnIB和RESET等信号和2.9V@2A的供电飞线到你们TI的SimpleLink Wi-Fi CC3100 BoosterPack 的demo板上,所以使用的WIFI硬件全部是你们TI的电路和板子(Demo板上看到是前缀是XC,后缀是HZ的3100的芯片),应该没有什么问题,现在除了CC3100外带的串行Flash访问出问题外,其它的WIFI功能测试都是可以的,比如:连上某个AP,通过互联网访问我们自己的中心服务器,收发数据等等,测试都是ok的。

    下面是我们软件工程师的详细问题说明,看看是否描述清楚了,另外附件main.c是我们使用的,谢谢支持!

    我们现在是用飞线的方式,把TI的“SimpleLink Wi-Fi CC3100 BoosterPack”的demo板飞线到我们现有的GPS的板子上测试,想增加WIFI功能,我们板子上有MCU,可以编程、移植TI的SDK的示例代码,WIFI的电路和功能全部使用TI的demo板上的,应该是没有问题的;现在我们对TI demo板上的WIFI模块CC3100接口的软件移植和调试已经基本ok了,大部分功能都ok,除了下面提到的CC3100自带的串行Flash相关的功能还有问题,比如:AP profile 等信息无法设置等等。

     

    问题描述:

    移植后,运行CC3100SDK_1.0.0\cc3100-sdk\examples\tcp_socket下的示例,发现在CC3100需要访问SFLASH时,总是返回错误。

    如,在static _i32 configureSimpleLinkToDefaultState()函数中,以下两个调用一直返回错误,注释掉451和452行后,455行也一样返回错误,访问过程中,我们用示波器测试TI的demo板上的CC31OO与SFLASH间的SPI接口信号的波形时,发现CC3100发给串行Flash的信号的波形不正常,一个是CS只有100ns不到的低电平脉宽宽度(感觉有些窄了,按照20MHz的SPI clock速率,即使8bit数据,也需要400ns的宽度),而且其它配套的SPI的信号都没有,比如:SPI clock,SPI的MOSI数据信号等上面没有测试到右变化的波形,因为CC3100和串行Flash接口的SPI是CC3100直接控制的,所以,这个问题,我们这边也没有什么太多的办法,硬件因为是直接采购并使用TI的“SimpleLink Wi-Fi CC3100 BoosterPack”demo板的,而且我们其它WIFI功能都是测试ok的,所以我们觉得硬件应该问题不大,可能是软件上,哪个地方没注意到,可能熟悉的人提醒一下就ok了,谢谢支持,麻烦了!

      

    450    /* Set connection policy to Auto + SmartConfig (Device's default connection policy) */

    451    retVal = sl_WlanPolicySet(SL_POLICY_CONNECTION, SL_CONNECTION_POLICY(1, 0, 0, 0, 1), NULL, 0);

    452    ASSERT_ON_ERROR(retVal);

    453

    454    /* Remove all profiles */

    455    retVal = sl_WlanProfileDel(0xFF);

    456    ASSERT_ON_ERROR(retVal);

     

     

    这个示例中,注释掉450-456行后,其它功能全部正常,CC3100可以正常连接到AP,并能进行SOCKET发送与接收。

     

     

    我们计划的用法是,

    设置1-5个AP profile,Enable auto connect,在station自动连接到AP后进行TCP数据收发。

     

    以下这段代码中,调用sl_WlanProfileDel、sl_WlanProfileAdd、sl_WlanPolicySet全部返回异常。

        /* Delete all profiles (0xFF) stored and reset policy settings */

        retVal = sl_WlanProfileDel(0xFF);

        if(retVal < 0)

        {

            LOOP_FOREVER();

        }

     

        /* Add WPA2 secured AP profile with priority 7 (highest) */

        secParams.Type = SL_SEC_TYPE_WPA;

        secParams.Key = SEC_SSID_KEY;

        secParams.KeyLen = pal_Strlen(SEC_SSID_KEY);

        retVal = sl_WlanProfileAdd((_i8 *)SEC_SSID_NAME,

                          pal_Strlen(SEC_SSID_NAME), g_BSSID, &secParams, 0, 7, 0);

        if(retVal < 0)

        {

            LOOP_FOREVER();

        }

     

        /*

         * Enable auto connect (connection to stored profiles according to priority)

         * Connection should first be established to higher (secured) profile as in

         * this example

         */

        retVal = sl_WlanPolicySet(SL_POLICY_CONNECTION ,

                         SL_CONNECTION_POLICY(1,0,0,0,0), 0, 0);

        if(retVal < 0)

        {

            LOOP_FOREVER();

        }

     

        /* Wait for the connection to be established */

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

     

  • jeff,

      看你的问题描述,感觉SFLASH里面的文件系统好像工作不是很正常,你有尝试用uniflash更新一下service pack吗?

  • Ken,

    以下是我们使用uniflash更新service pack的记录,最后有一个 Downloading file "/sys/servicepack.ucf"的错误,请问我们更新成功了吗。

    更新后仍然存在更新前的问题。

    [17:23:51] INFO: --- please restart the device ---
    [17:23:51] INFO: connection succeeded
    [17:23:51] INFO: getting storage list
    [17:23:51] INFO: > Executing Operation: GetVersion
    [17:23:51] INFO: reading version info
    [17:23:51] INFO: > Bootloader version: 2.0.3.4
    [17:23:51] INFO: > Chipset version: 3
    [17:23:51] INFO: > Executing Operation: Disconnect
    [17:23:51] Operation GetVersion returned.


    [17:28:21] INFO: --- please restart the device ---
    [17:28:29] INFO: connection succeeded
    [17:28:29] INFO: getting storage list
    [17:28:29] INFO: > Executing Operation: ServicePackProgramming
    [17:28:29] INFO: Path to the service pack file: C:/ti/CC31xx_CC32xx_ServicePack_1.0.0.1.2/servicepack_1.0.0.1.2.bin
    [17:28:29] INFO: reading version info
    [17:28:29] INFO: CC3100Z Device detected.
    [17:28:29] INFO: NWP/MAC/PHY Version from Service Pack:
    [17:28:29] INFO: NWP version: 2.2.7.1
    [17:28:29] INFO: MAC version: 1.2.4.2
    [17:28:29] INFO: PHY version: 1.5.3.23
    [17:28:29] INFO: reading version info
    [17:28:29] INFO: DEVICE CC3100 ES1.32
    [17:28:29] INFO: reading version info
    [17:28:31] INFO: downloading file [NWP_CODE]
    [17:28:31] INFO: Erase storage FLASH
    [17:28:31] INFO: erase storage succeeded
    [17:28:31] INFO: erase storage completed
    [17:28:55] INFO: Verifying Data...
    [17:29:12] INFO:

    Verification OK
    [17:29:13] INFO: Downloading file "/sys/servicepack.ucf" with size 245288
    [17:29:13] ERROR: Open operation failed
    [17:29:13] INFO: > Executing Operation: Disconnect
    [17:29:13] Operation ServicePackProgramming returned.

  • jeff,

     信息显示你的service pack应该是没有更新正确,你先Format一下SFLAH,然后再更新service pack

  • Hi Ken,

    非常感谢!

    好的,我们先Format SFlash再试试,前面我们不敢Format,怕无法恢复;另外有一个疑问是:我们用示波器测试发现 CC3100和SFlash连接的SPI接口的波形不太正确,感觉是CC3100发出的SPI信号不对,而不是SFlash返回的数据不对,如果怀疑“SFLASH里面的文件系统好像工作不是很正常”的话,至少CC3100和SFlash直接的SPI接口信号,应该能示波器测试到正常的SPI收发波形出来,但我们实际测试到的是 CS有低脉冲,但SPI clock和SPI MOSI信号都没有波形变化,即CC3100没有正常的SPI信号输出,而且CS的脉宽很短,所以会不会是另外的问题?比如是CC3100内部的问题?比如:CC3100的Firmware的bug?

    Best regards!

    Jeff Chen

  • Hi Ken,

    另外 service pack的更新log,显示:

    Verification OK

    [17:29:13] INFO: Downloading file "/sys/servicepack.ucf" with size 245288
    [17:29:13] ERROR: Open operation failed
    [17:29:13] INFO: > Executing Operation: Disconnect
    [17:29:13] Operation ServicePackProgramming returned.


    这里的Verification Ok 是Verify 什么?

    /sys/servicepack.ucf 的文件是从哪里来的?/sys/ 目录在什么地方? 是uniflash运行中生成的中间文件吗?还是?

    我们看到最后的log理解为uniflash 没有 读到 /sys/servicepack.ucf 的文件 然后报错,退出,而不是访问SFlash出问题,再退出。

    另外我们原来以为烧入的servicepack的文件是“C:/ti/CC31xx_CC32xx_ServicePack_1.0.0.1.2/servicepack_1.0.0.1.2.bin”,“Verification OK”,表示servicepack的烧入成功,而不是烧入“/sys/servicepack.ucf ”,我们不知道“/sys/servicepack.ucf ”用来做什么?

  • jeff,

      这个verification OK指的是前面erase storage flash的操作,不是指service pack的操作。

    你看到的/sys/servicepack.ucf是需要烧写到SFLASH里面的/sys/路径下的一个文件。.ucf是uniflash的配置文件,里面定义了少入到SFLASH里面的各个文件夹路径以及相对应的文件。

      另外,你format以后,有没有烧写成功呢,如果成功的话,会在downloading servicepack.ucf后再出现一个verification Ok的提示

    谢谢

  • 经过Format,更新service pack后,这个问题解决了。

    这个问题是因为Format解决的,还是因为更新service pack解决的?

    我们生产时,SFLASH肯定是未经Format的,需要在贴片前先把SFLASH格式化一遍吗,如何格式化呢?

    [20:45:04] Begin Format operation.
    [20:45:05] INFO: > Executing Operation: Connect
    [20:45:07] INFO: setting break signal
    [20:45:07] INFO: --- please restart the device ---
    [20:45:15] INFO: connection succeeded
    [20:45:15] INFO: getting storage list
    [20:45:15] INFO: > Executing Operation: Init
    [20:45:15] INFO: reading version info
    [20:45:15] INFO: DEVICE CC3100 ES1.32
    [20:45:15] INFO: reading version info
    [20:45:17] INFO: > Executing Operation: Format
    [20:45:17] INFO: Erase storage SFLASH
    [20:45:17] INFO: erase storage succeeded
    [20:45:17] INFO: erase storage completed
    [20:45:17] INFO: > Executing Operation: Disconnect
    [20:45:18] Operation Format returned.

    [20:45:07] INFO: --- please restart the device ---
    [20:45:15] INFO: connection succeeded
    [20:45:15] INFO: getting storage list
    [20:45:15] INFO: > Executing Operation: Init
    [20:45:15] INFO: reading version info
    [20:45:15] INFO: DEVICE CC3100 ES1.32
    [20:45:15] INFO: reading version info
    [20:45:17] INFO: > Executing Operation: Format
    [20:45:17] INFO: Erase storage SFLASH
    [20:45:17] INFO: erase storage succeeded
    [20:45:17] INFO: erase storage completed
    [20:45:17] INFO: > Executing Operation: Disconnect
    [20:45:18] Operation Format returned.
    [20:46:17] Begin ServicePackProgramming operation.
    [20:46:18] INFO: > Executing Operation: Connect
    [20:46:20] INFO: setting break signal
    [20:46:20] INFO: --- please restart the device ---
    [20:46:24] INFO: connection succeeded
    [20:46:24] INFO: getting storage list
    [20:46:25] INFO: > Executing Operation: ServicePackProgramming
    [20:46:25] INFO: Path to the service pack file: C:/ti/CC31xx_CC32xx_ServicePack_1.0.0.1.2/servicepack_1.0.0.1.2.bin
    [20:46:25] INFO: reading version info
    [20:46:25] INFO: CC3100Z Device detected.
    [20:46:25] INFO: NWP/MAC/PHY Version from Service Pack:
    [20:46:25] INFO: NWP version: 2.2.7.1
    [20:46:25] INFO: MAC version: 1.2.4.2
    [20:46:25] INFO: PHY version: 1.5.3.23
    [20:46:25] INFO: reading version info
    [20:46:25] INFO: DEVICE CC3100 ES1.32
    [20:46:25] INFO: reading version info
    [20:46:26] INFO: downloading file [NWP_CODE]
    [20:46:26] INFO: Erase storage FLASH
    [20:46:27] INFO: erase storage succeeded
    [20:46:27] INFO: erase storage completed
    [20:46:50] INFO: Verifying Data...
    [20:47:07] INFO:

    Verification OK
    [20:47:08] INFO: Downloading file "/sys/servicepack.ucf" with size 245288
    [20:47:18] INFO:

    New Token is 0x0
    [20:47:18] INFO: Download complete
    [20:47:18] INFO: > Executing Operation: Disconnect
    [20:47:18] Operation ServicePackProgramming returned.

  • 这个应该是update sflash解决的,因为你采用的是CC3100+ MCU的方案,所以在你的系统设计时,可以考虑MCU通过UART更新CC3100 SFLASH的功能,这个可以作为你系统功能的一个特性。同时为系统的在线升级保留一个可能性。

    谢谢

  • Hi Ken,

    如果SFlash没有格式话的话,比如:新的SFlash芯片刚焊接到板上,这个时候CC3100的除了SFlash外的其它功能还能正常运行吗?比如:连接到AP上访问到外部互联网等等?

    另外能否通过我们MCU和CC3100直接的SPI接口对SFlash,使用你们特定的API,对SFlash进行格式化和编程的工作?就像PC通过UART口操作CC3100对SFlash编程一样?因为我们现在的设计:CC3100的UART口没有和外面连,只有4个测试点。

    另外,如果SFlash必须通过uniflash工具编程的话,那量产时一般建议怎么做?通过编程器先把SFlash编程好再焊接?那普通的编程器能否支持对SFlash的特定格式进行编程,你们的解决方案是什么?谢谢!

    Best regards!

    Jeff Chen

  • jeff,

        如果不焊SFLASH的话,很多例程不能正常运行,因为里面设计到对SFLASH的读写操作。

    因为CC3100里面内置固话了UART的bootloader能够将串口发送的更新数据存储到SFLASH里面。如果你用SPI接口的话,这个比较难操作。因为CC3100不支持可编程。

    所以到用户在使用CC3100+Host MCU时,还是建议SPI和UART口都用上,SPI用于WIFI的通信,UART可以用于后续通过host MCU来实现SFLAH的更新升级

  • 1. 因为MCU端的SDK的版本需要和Service pack 匹配,所以需要保证两者的版本统一

    2. 目前还不能通过SPI接口和API进行编程

    3. 量产建议先烧再贴片,就像你上面说的,用编程器给SFLASH先烧录,再贴片。如果UART可以引出来的话,也可以通过夹具+UNIFLASH来做。

  • 了解了,非常感谢大家的回复!

    另外我们的励工(作者 ) 于 2015-3-29 22:21 发表了一条关于:“sl_NetAppDnsGetHostByName的问题” 的帖子,我们对这个问题很着急,不知能否尽快给我们答复下,谢谢!

    链接如下:

    http://www.deyisupport.com/question_answer/wireless_connectivity/wifi/f/105/t/83026.aspx

    具体问题,我再在这里贴一下,抱歉了!

    sl_NetAppDnsGetHostByName的问题

    作者  发表于 2015-3-29 22:21


    场景:

    有一个AP,电脑连着能上internet。

    有2块我们自制的带CC3100的板子,连在AP上,一直可以正常发送数据到internet上的服务器。

    忽然从某一时刻起,这两块板子的通信中断了。经检查,调用sl_NetAppDnsGetHostByName返回ffffff5f,即#define SL_NET_APP_DNS_NO_SERVER                      (-161)  /* No DNS server was specified                          */。在此情况下,反复复位或者断电重启这两块板子,都不能恢复通信。

    我们又拿了一块新的板子,每块板子中都已经预置了连接该AP的参数,这块板子居然能调用sl_NetAppDnsGetHostByName成功,也能正常发送数据到服务器。

    问题:

    1.在CC3100调用sl_NetAppDnsGetHostByName前,需要在CC3100中设置DNS服务器吗,如何设置?

    2.sl_NetAppDnsGetHostByName调用失败,只和AP有关吗?为什么有些板子能正常调用,而有些板子一直调用失败?

    3.如何避免调用sl_NetAppDnsGetHostByName的错误?

  • 你好,不焊SFLASH的话可以运行“getting_started_with_wlan_ap”例程吗?我的应用是做为AP,使用TCP和手机交互数据。现在移植了“getting_started_with_wlan_ap”程序,但板上没有SFLASH,程序进如sl_Start(0,0,0)后,死循环在_SlDrvSyncObjWaitTimeout函数里面了。

  • 使用CC3100的串口编程,需要预留什么接口UART1、reset、nHIB这几个可以吗?