求助!CC3100移植到自己MCU平台后死在establishConnectionWithAP()里读取同步字时的N2H_SYNC_PATTERN_MATCH(pBuf, g_pCB->TxSeqNum)。
用msp430f5529lp的getting_started_with_wlan_station例程移植到自己的MCU平台上
前面初始化配置到缺省状态都是正常的configureSimpleLinkToDefaultState();
但到establishConnectionWithAP()后就执行不过了,纠结了很多天了,终于查到卡死的地方,但不知道原因。
在host以spi模式t向cc3100发送读取的指令后再接收CC3100返回的数据,会判断while ( ! N2H_SYNC_PATTERN_MATCH(pBuf, g_pCB->TxSeqNum) ),看程序貌似这个变量在host每向cc3100作读的请求且成功接收后都会加一。而N2H_SYNC_PATTERN_MATCH(pBuf, g_pCB->TxSeqNum)其实就是比较g_pCB->TxSeqNum的后两位和CC3100返回的同步字的后两位是否一致,即0xABCDDCBx后的那个“x”可能是00,01,10,11。如果和g_pCB->TxSeqNum后两位不一致就会死在那里
事实上错误就是这样产生的,在configureSimpleLinkToDefaultState();结束后又重新sl_Start(0, 0, 0);此时g_pCB->TxSeqNum重新变为0x01,接着执行establishConnectionWithAP();函数。在执行一次读取操作后CC3100返回的同步字后两位应该是1才能和g_pCB->TxSeqNum匹配(我用CC31XXEMUBOOST配合VS模拟时其返回的是0xabdccdbd,最后两位是01,就匹配成功了)。但用自己的MCU的时候返回0xabdccdbc。从而导致错误。
请问这证明CC3100在sl_Start(0, 0, 0)中的一次通信后其同步字没有加一从而与g_pCB->TxSeqNum不匹配导致错误的吗?可是为什么呢,我尝试在sl_Start(0, 0, 0)和establishConnectionWithAP();之间加另外的通信函数,如加入 retVal = sl_WlanPolicySet(SL_POLICY_CONNECTION, SL_CONNECTION_POLICY(1, 0, 0, 0, 1), NULL, 0);但这些函数返回值的计算都是累加正常,即从bd到be到bf再返回到bc如此循环,但执行establishConnectionWithAP()时始终返回bc。
已经要被这个问题逼疯了,忘各位大神不吝赐教!跪谢!
Wi-Fi 相关软件问题请到 Wi-Fi 技术版面提问。
你用的 MCU 是哪一颗?
哦,谢谢,是瑞萨的RX631。
求教如何将f5529的get_start_with_station工程移植到f6638上
我移植就修改了下底层硬件驱动,像spi之类的,其他的文件都直接搬过去就可以了,可是我这不遇到问题了么,也不知道是不是哪儿改错或遗漏了。
那你插脚问题是怎么解决的,就是f5529可以直接与cc3100相接,自己的MCU怎么与cc
3100接到一起呢
自己的板子和CC3100相连,注意几个管脚的链接:
1. nHIB,SPI或是SCI管脚(CTS,RTS), IRQ管脚。
具体可以参考原理图上面,具体的关机爱定义。
谢谢
能不能相互交流下,我也遇见了你的这样的问题,大神,求教。邮箱3238245116@qq.com 万分感谢啊