泰凌微TLSR825X开发十四 connslave时序保护

本文探讨了泰凌微BLE设备在连接状态下如何通过时序保护机制管理BrxEvent中断,以防止因长时间禁用中断导致连接断开。介绍了关键API接口及其实现,包括请求关闭、禁用、恢复BrxEvent,并给出了代码示例,强调了在处理长时间操作时序敏感任务的重要性。
摘要由CSDN通过智能技术生成
前言

泰凌微BLE在建立连接后,需要周期性的来完成一个收发包事件(Brx Event),在SDK中该事件通过中断来触发。在部分应用中,如擦写片上flash(MSPI)禁用中断时间较长(100ms)可能会造成连接断开,需要通过时序保护来操作
如有异议,请评论指正

Conn stste Slave role时序保护
API接口

接口对外声明在ll_slave.h头文件中

 int bls_ll_requestConnBrxEventDisable(void);
  • 请求申请关闭BrxEvent
    • 返回0表示解决申请,需要等待BrxEvent事件结束后重新申请,
    • 返回非零,返回表示允许停止BrxEvent的时间(ms)
      • 返回0xFFFF,表示不存在BrxEvent(当前未建立连接,AdvState IdelState),无需保护
      • 当前为conn state且收到了update mapupdate connection parameter更新请求但还未更新时间点,返回时间为更新时间点减去当前时间
      • 当前为Conn state没有收到master请求,返回为当前connection supervison timeout超时断开时间值的一半

void bls_ll_disableConnBrxEvent(void);
  • 停止BrxEvent事件,在申请成功后调用

void bls_ll_restoreConnBrxEvent(void);
  • 恢复BrxEvent事件,必须在申请时间段内调用
代码示例

8258片上的flash擦除需要消耗30~100ms的时间,可根据自己的应用来裁定;

bool flash_protect_erase(unsigned long addr)
{
    uint32_t time_ms = bls_ll_requestConnBrxEventDisable();//请求禁用brxEvent

    if(time_ms > 100)
    {
        bls_ll_disableConnBrxEvent();//禁用brxEvent
        flash_erase_sector (addr);
        bls_ll_restoreConnBrxEvent();//恢复brxEvent
        return true;
    }
    return false;
}
总结

在建立连接后,需要考虑时序保护;
时序保护时,一定要评估临界代码的时间,不能超过请求保护的时间要求,如果时间确实较长,可以考虑修改最大连接超时时间或者拆解多个子任务执行

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值