80,489
社区成员
发帖
与我相关
我的任务
分享最近用到NRF52820的HID,用官方的HID_KEYBOARD例程去改,增加一些自己的服务,最后发现苹果手机连接没有发现问题,但是安卓手机去连接,几乎每次连接后不久就随机断连
。
通过NRF connect查看断连原因,发现是Error 8 (0x8): GATT CONN TIMEOUT。而JLINK打印断连原因,同样也是08错误,如下图

因为苹果没有问题,安卓有问题,一开始猜测可能是连接参数,因为不熟悉安卓手机的底层,所以先改蓝牙端的连接参数
/*lint -emacro(524, MIN_CONN_INTERVAL) // Loss of precision */
#define MIN_CONN_INTERVAL MSEC_TO_UNITS(50, UNIT_1_25_MS) //MSEC_TO_UNITS(7.5, UNIT_1_25_MS) /**< Minimum connection interval (7.5 ms) */
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(100, UNIT_1_25_MS)//MSEC_TO_UNITS(30, UNIT_1_25_MS) /**< Maximum connection interval (30 ms). */
#define SLAVE_LATENCY 0//6 /**< Slave latency. */
#define CONN_SUP_TIMEOUT MSEC_TO_UNITS(4000, UNIT_10_MS) //MSEC_TO_UNITS(430, UNIT_10_MS) /**< Connection supervisory timeout (430 ms). */
以上红色为官方的参数,左边为我改后的参数,现在这个新参数有可能降低了数据传输的效率,因为连接参数变大了,不过解决了断连的问题。如果有安卓开发的小伙伴,能告诉我安卓的底层连接参数吗,以便在蓝牙设备端配置合适的参数,适配手机。