微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3100芯片demo历程运行失败

CC3100芯片demo历程运行失败

时间:10-02 整理:3721RD 点击:

采用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来做。

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

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

链接如下:

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

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

sl_NetAppDnsGetHostByName的问题

作者 Jet Lee  发表于 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这几个可以吗?

上一篇:CC3200 service pack版本
下一篇:cc3100 demo

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top