请选择 进入手机版 | 继续访问电脑版
查看: 830|回复: 0

[技术交流] 主从一体模组连接多个从机时,难被主机连接,如何解决?

[复制链接]

93

主题

99

帖子

381

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
381
发表于 2022-8-15 16:40:59 | 显示全部楼层 |阅读模式
  背景

  主从一体模组,具备主机、从机2种角色。当作为主机角色连接了多个从机时,自身作为从机角色,有时会出现难以被其他主机连接的情况,本文通过测试、分析,给出了解决方案,具体见文末。

  具体问题描述:
  S98作为主机角色,连接了4个从机设备。4个从机设备每500ms会发送大约50字节数据给S98。
  S98作为从机角色,手机或E92主从一体去连接S98,发现很难连上。

  分析

  一、测试条件

  ●4个从机如下:
  3个E66 透传模组,Rev09版本,BLE4.2。
  1个E95 透传模组,Rev04版本,BLE5.1。
  ●主机如下:
  1个S98 主从一体,固件Rev01,1个E92主从一体,Rev02 (见上图)
  6个不同型号的手机。
  二、测试方法
  1、所有设备接入到串口。
  2、使用上位机工具操作,S98分别连接1、2、3、4个从机,E92或其他手机连接S98B。
  3、主从机间仅保持连接,或者定时每500ms向S98发送150字节数据。

  三、测试过程

  1、S98连接1个4.2从机
  2、S98连接2个4.2从机
  3、S98连接3个4.2从机
  4、S98连接4个从机
  四、分析

  1、总结上述测试结果,可直观的看出:
  ●当连接从机设备数量增加时,手机能连上的概率越来越低。
  ●当连接全部从机时,安卓手机几乎全都不可连接。但是苹果手机可连接成功,仅有一次失败。同时E92主机可以连接S98并且全都连接成功。

  2、进一步抓包分析:
  在无从机连接的情况下,抓包分析安卓手机、苹果手机、E92主机连接S98的流程:
  ●安卓手机:
  手机扫描到设备->发起连接->立即更新默认连接间隔到7.5ms->发现设备服务
  ●苹果手机:
  手机扫描到设备->发起连接->以默认30ms连接间隔通信->发现设备服务
  ●E92主机:
  扫描到设备->发起连接->发现设备服务
  可看出,以上三种主机差异点在于,发起连接后以多少的连接间隔进行通信。

  3、推测换不同主机时,连接间隔不同的原因如下:

  可能的原因1:
  ●当安卓手机一旦发起连接,以7.5ms的连接间隔进行通信,导致S98突然要维护一个7.5ms的通信定时任务,并且要保证从机不断连,RF收发冲突,任务处理不及时导致了timeout。
  ●苹果手机发起连接,以30ms的连接间隔通信,对S98压力不打,所以冲突概率小。
  ●E92发起连接,不主动更新连接间隔,以S98默认的100ms连接间隔连接,所以每次都成功连接。

  可能的原因2:
  ●S98处理单个事件耗时过长,导致容易和其他事件冲突。

  五、验证
  1、基于上述可能原因1,优化方案如下:扩大从机连接间隔,适当增加slavelatency,减小对从机事件的处理耗时,留出足够时间给安卓手机以7.5ms间隔的通信,服务发现完成后,安卓手机会将连接间隔再改回默认值。只要安卓手机7.5ms的发现服务事件过去,那么之后的连接就是稳定的。

  1)具体测试,更改从机连接间隔到300ms,slave latency为5,超时为30秒。
  4台从机都更新成该参数。
  4台从机都以300ms间隔发100字节。
  2)S98收到从机发来的数据。此时用安卓手机去连接S98。
  手机连接成功,主机端也收到连接信息,并且保持连接不断开。

  2、基于上述可能原因2,优化方案如下:修改协议栈参数“event_length”,减小每次事件处理耗时,将原事件处理最大时长,由25ms调整到12.5ms,留出更多时隙给其他事件处理。
  1)将事件长度修改为10(即12.5ms),再进行多连接测试。
  具体测试过程,同测试1,但是不更改连接间隔,保持100ms的连接间隔。
  在多从机同时发送数据的情况下,再用手机去连接S98,发现手机连接成功,主机端也收到连接信息,并且保持连接不断开,收发正常。

  结论

  当主从一体模组连接多个从机时,作为从机角色难被主机连接,解决办法如下所示:
  ●扩大从机连接间隔,适当增加slavelatency。
  ●修改协议栈参数“event_length”,减小每次事件处理耗时。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表