安卓连接蓝牙 有时候连接成功后马上断开,或者主机发送数据的时候断连。

偶尔情况是这样,但是好像时不时会出现,断电重上电之后可能会正常,安卓主机的日志:[INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=6 cid=4:4 

btm_sec_disconnected clearing pending flag handle:6 reason:8

de7923d6faeac02a290000dd6666c862.png

蓝牙设置:

// How often to perform read rssi event

#define SBP_READ_RSSI_EVT_PERIOD             3200


// Parameter update delay

#define SBP_PARAM_UPDATE_DELAY               6400


// What is the advertising interval when device is discoverable (units of 625us, 80=50ms)

#define DEFAULT_ADVERTISING_INTERVAL         80


// Limited discoverable mode advertises for 30.72s, and then stops

// General discoverable mode advertises indefinitely

#define DEFAULT_DISCOVERABLE_MODE            GAP_ADTYPE_FLAGS_GENERAL


// Minimum connection interval (units of 1.25ms, 6=7.5ms)

#define DEFAULT_DESIRED_MIN_CONN_INTERVAL    6


// Maximum connection interval (units of 1.25ms, 100=125ms)

#define DEFAULT_DESIRED_MAX_CONN_INTERVAL    3200


// Slave latency to use parameter update

#define DEFAULT_DESIRED_SLAVE_LATENCY       6


// Supervision timeout value (units of 10ms, 100=1s)

#define DEFAULT_DESIRED_CONN_TIMEOUT         3200


用一些小程序连接有时候也会有这问题,连接成功后马上提示断开连接


reason8是超时断开,检查是否代码有执行时间过长的任务,导致蓝牙本身任务来不及处理而出现的断开。

将有效连接间隔配置为最大任务的两倍。

slavelatency目前先不要配置,使用默认的0。

可以先使用例程测试,防止硬件导致射频信号受到影响。


最大任务600ms左右,最大连接间隔4s,按道理来说不会超时,而且这个任务是安卓发送指令了他才发生,没发指令的时候什么都没运行。有时候是一连接,或者连接中突然断连,还有没有可能是其他情况 


reason8的断开是超时断开。

针对测试点:

1、例程测试,连接APP查看是否断开;

2、例程测试如问题,将连接间隔拉大,如配置为1000,timeout时间配置为500,查看是否断开;

3、自行检查代码是否有执行时间过长的任务;

4、slavelatency这个参数目前建议不要使用。


只有登录才能回复,可以选择微信账号登录