CC2540连接自动断开
大家好,
现遇到一个问题,当在从模块程序中加入一些硬延时,比如在ProcessGATTMsg或者performPeriodicTask中加入一些
void HalDelayMs(uint16 MilliSecs)
{
uint16 uscount;
while(MilliSecs--)
{
for(uscount=0;uscount<1000;uscount++)
{
/* 32 NOPs == 1 usecs */
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop");
}
}
}
系统就会连不上,或者连上自后又会随机自动断开,当连接多个从模块时更严重,请问有什么解决办法?谢谢!
读某些传感器数据可能会耗费较长时间,此时为了避免上述问题怎么处理比较好?目前用的是simplebleperipheral模板,在应用层另外添加一个task来处理?有人遇到类似的问题吗?谢谢!
是啊 本人同求 连三个从设备 一通信就断,不知道为啥?请问你解决了吗?
请问您的connection intervel设的是多少?另外peripheral的连接参数会更行新吗?central设备使用的是什么?
连接间隔是最小80ms ,最大1000ms,参数不更新 主机是蓝牙4.0(CC2540)发板,谢谢
请问您是每次都自动断开吗?
我今天在CC2540EM(central)上连接了三个CC2540 mini keyfob(peripheral), 使用peripheral默认的设置,多数情况是稳定连接的,且parameter update是打开的。
#define DEFAULT_MIN_CONN_INTERVAL 0x0006 // 100 milliseconds
#define DEFAULT_MAX_CONN_INTERVAL 0x0C80 // 4 seconds
楼主没有使用os吧?
在bluetopia中,任务调度其实是单线程,没有多线程机制。你使用上述方式延时,会导致协议栈得不到及时运行,错过对端蓝牙的握手消息,对端认为你的设备超时了,会主动断开连接。
解决方法是让你的任务周期运行,根据周期运行计数来实现延时。
例如设定一个静态变量,每运行一次加1,当累加到某一数值时,就得到了“累加数x周期”的延时,根据不同延时,可以执行不同操作,并在某个时候让静态变量清零,然后重新开始该过程。
请问楼主现在你可以最多和几个Peripheral同时稳定通信?通信速率是多少?谢谢
我的也会出现在别的地方如果时间处理过长,会断开的现象。用的是ios端连接的。
昨天我的开发版也出现自动断开现象,主要是发生在ios7上,但今天有奇怪得好了……
