今天测试电流发现一个问题,对码完成后,后几秒钟时间,电流是比较小的。顿时感觉有问题,开始怀疑是睡眠处理问题,蓝牙部分没有处理好,本着司马当活马医的精神,报告了技术支持。
不过,也如大家的认知,这个不靠谱,只好继续测试。然后注意到了连接参数更新的问题,把原来参数更新的延迟参数FIRST_CONN_PARAMS_UPDATE_DELAY = 0, 修改 FIRST_CONN_PARAMS_UPDATE_DELAY = 2000,发现问题解决一半。 配对连接时电流下降了,断线连接后,电流又恢复。
只能继续查找,然后注意到,连接后,蓝牙会自动更新连接参数为 {12,4,100},断线连接后会覆盖设定的连接参数。再次修改FIRST_CONN_PARAMS_UPDATE_DELAY = 4000, 让程序在 自动更新参数后,再次更新一次, 问题解决。
实际测试一下参数, 未设置延时前,连接电流大概48uA,设置延迟后,电流10uA。
#define MIN_CONN_INTERVAL 100
#define MAX_CONN_INTERVAL 200
#define SLAVE_LATENCY 2
#define CONN_SUP_TIMEOUT 4000
不过,事情还未彻底解决,电流有时候从10uA飘到26uA,主要是有时候,连接的电流尖峰会更高。这个估计真是 蓝牙的睡眠处理没有解决好了。 看看哪位大神可以解决并共享出来。 |