cc2541写flash会导致蓝牙断开
时间:10-02
整理:3721RD
点击:
我现在的应用,收到写特征值参数后要调用osal_snv_write写入flash
这样在测试时发现会有蓝牙断开的情况,断开的reason是0x3F,HCI_ERROR_CODE_MAC_CONN_FAILED
这是什么原因导致的呢?写flash时间过长导致蓝牙底层处理超时?
有何解决方法?
我前面可能没说清楚
我确定是写flash导致的蓝牙断开,因为注释掉就不会了
我问的是写flash导致蓝牙断开的原因以及解决方法
进一步跟踪发现是flash页擦除函数耗时20ms导致呆掉的
如果擦除要这么长时间,那么势必会影响正常的Task,怎样解决这个问题呢?
最终我通过设置DEFAULT_DESIRED_MIN_CONN_INTERVAL 和DEFAULT_DESIRED_MAX_CONN_INTERVAL解决了这个问题
注意这些连接参数要生效,DEFAULT_ENABLE_UPDATE_REQUEST要设为TRUE
对ios而言,MIN_CONN_INTERVAL + 20ms要不大于MAX_CONN_INTERVAL,
否则所有参数无效,ios用自己的默认参数,我测试它那个很快,擦flash会断
MIN_CONN_INTERVAL 设为40 (50ms),MAX_CONN_INTERVAL 56 (70ms),测了几款苹果和安卓,擦flash不会断了