采用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
SZ1:
Hi Xueqin,
同样的问题,我们就统一到另外一个帖子讨论吧,下次打错字,可以直接修改滴,谢谢!
Jeff Chen:
回复 SZ1:
Hi 你们好,我是上海朔思科技的陈工,我们也碰到了这个问题,急需解决,请问是另外的哪个帖子?能提供下链接吗?谢谢!
Jeff Chen:
回复 Jeff Chen:
能否在本贴,直接告知问题原因,如何解决?谢谢!
Ken Wang:
回复 Jeff Chen:
jeff,
请问你用的CC3100配什么样的MCU进行的操作?是我们的MSP430还是TIVA-C,或者是其他的MCU呢?
运行demo失败有可能的原因比较多,麻烦你描述一下你的测试平台和测试过程。
谢谢
Jeff Chen:
回复 Ken Wang:
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(); }
Ken Wang:
回复 Jeff Chen:
jeff,
看你的问题描述,感觉SFLASH里面的文件系统好像工作不是很正常,你有尝试用uniflash更新一下service pack吗?
Jet Lee:
回复 Ken Wang:
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.
Ken Wang:
回复 Jet Lee:
jeff,
信息显示你的service pack应该是没有更新正确,你先Format一下SFLAH,然后再更新service pack
Jeff Chen:
回复 Ken Wang:
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
Jeff Chen:
回复 Ken Wang:
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 ”用来做什么?
TI中文支持网


