TI中文支持网
TI专业的中文技术问题搜集分享网站

bluetopia+cc2564中,同时使用ble和spp导致ble断链,请教是否有办法解决?

使用的是MSP430-EXPF5438A开发板,蓝牙模块是松下的PAN1326。任务是利用ble与第三方心率腕表连接,采集到心率后,通过spp将其转发到pc上(pc只支持经典蓝牙)。

开发时,主要以SPPLEdemo为主,加进了HRPDemo中的几个函数,如DiscoverHRS,ConfigureRemoteHRS,以及相应回调函数等。使用了一个每秒执行一次的状态机,根据当前状态执行不同操作。如下所示:

static void HrsTask(void *UserParameter)
{
T_BLE_State tBleState;

tBleState = GetBleState();
switch (tBleState)
{
case LE_NEED_CONN:
{
g_heartrate = -1;
SprintF(SndBuff, "ConnectLE fc026a1daaf3\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);
break;
}
case LE_NEED_DISCOVER:
{
g_heartrate = -1;
SprintF(SndBuff, "DiscoverHRS\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);
break;
}
case LE_NEED_CONFIG_HRS:
{
g_heartrate = -1;
SprintF(SndBuff, "ConfigureRemoteHRS 1\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);
break;
}
default:
{
break;
}
}
}

static void SppTask(void * UserParameter)
{
int ledid = LED_GREEN;
T_SPP_State tSppState;

tSppState = GetSppState();

switch (tSppState)
{
case SPP_NEED_OPEN:
{
// only once on start up
SprintF(SndBuff, "AutomaticReadMode 1\n"); //DisplayRawModeData防止对端PC输入数据时导致对端进程挂掉
Display((SndBuff));
ProcessCommandLine(SndBuff);

SprintF(SndBuff, "SetLocalName Gateway\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);

SprintF(SndBuff, "SetLocalAppearance 1\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);

SprintF(SndBuff, "Open 1\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);
break;
}
case SPP_NEED_PIN:
{
// just for PC test
SprintF(SndBuff, "PINCodeResponse 0\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);
break;
}
case SPP_OK:
{
SprintF(SndBuff, "CBSend !%d,%02x%02x%02x%02x!\n\r", g_heartrate, hfID[3], hfID[2], hfID[1], hfID[0]);
ProcessCommandLine(SndBuff);
break;
}
case SPP_CLOSED:
{
SprintF(SndBuff, "Open 1\n");
Display((SndBuff));
ProcessCommandLine(SndBuff);
break;
}
case SPP_OPENED:
default:
{
// do nothing
break;
}
}
HAL_StartLED(ledid, 1);
}

现在的问题是:

1、仅运行bletask,每隔70秒左右,与心率腕表的链接就会断开,该任务会自动重新连上,如此反复,长时间运行都是这样;

2、加入spptask后,心率腕表依然每隔70秒左右会断开,重新连接时,大部分情况能顺利连上,但少部分情况无法连接,bletask要尝试二三十次才能连上腕表。如果断开到pc端的spp连接(pc关闭相应串口),又恢复到上述第一种情况了。

请问如何消除spp对ble的影响呢?多谢多谢,这个问题困扰很久了,不知该如何解决。

my wu:

回复 Joe@Wi-linktech:

这个问题是在bluetopia V1.3版本中出现的,升级到V1.4后就解决了。

经过对比,我觉得是v1.3没有处理腕表发出的参数更新请求,导致腕表以为对端不在位而断开连接。

v1.4处理了该请求,且同意参数更新,就没再出现该现象。

赞(0)
未经允许不得转载:TI中文支持网 » bluetopia+cc2564中,同时使用ble和spp导致ble断链,请教是否有办法解决?
分享到: 更多 (0)