Central例程运行在CH32F208WBU6,自己画的板子
从机运行在BLE调试助手,手机是小米11
情况是这样,Central例程有个宏定义
#define DEFAULT_MAX_CONNECTION_INTERVAL 60
在这种情况下一切正常,能扫描到,建立连接,更新连接参数,找到从机主服务FFF0,找到特征值,然后发送数据,一切正常。
我把60改成100后,找不到FFF0服务
#define DEFAULT_MAX_CONNECTION_INTERVAL 100
图中断电处均无法进
随后我跟踪查看连接参数是否有更新成功,结果用注释写出来了。看样子应该是协商成功了。图如下
还有另外一个问题,连接超时的问题。在#define DEFAULT_MAX_CONNECTION_INTERVAL 60 的情况下,我每隔1秒钟就发送一个字节的数据给从机。大概在20~30分钟的时候,连接会超时。返回的reason就是连接超时0x08。测了好几次,基本都是这样,一开始没问题,放在一边不管它,程序就进Terminate Link事件了。从机用的就是BLE 调试助手。下图是Terminate Link事件处理的代码,这部分我都没怎么动,都是例程的原代码。
接下来的一张图片是我添加的一个tmos循环事件START_WRITE_EVT,一秒钟发送一个字节给从机。替换了原代码中的"START_READ_OR_WRITE_EVT"。