查看: 393|回复: 0

[应用笔记] E92主机、E95从机间完整通信流程测试

[复制链接]

93

主题

99

帖子

381

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
381
发表于 2023-7-10 10:29:18 | 显示全部楼层 |阅读模式
  背景  一般来讲,BLE GATT主从机间通信流程可简述为以下几个阶段,具体如图1所示:

  注意:客户前期调试时,建议先不加配对,等待其他基本功能调通后再调。

  下文将以E92主从一体模块+利尔达低功耗蓝牙模块调试工具APP BleToolForE9x APP作为主机,E95透传从机模块作为从机,来详细讲述主从机完整通信流程。
图1 BLE GATT主从机间完整通信流程
图2 利尔达低功耗蓝牙模块调试工具APP BleToolForE9x APP

  主从机完整通信流程介绍

  1、从机广播

  E95透传从机模块的MODE_CTL、PWR_CTL、BT_CTL引脚均接低电平,上电即处于广播状态、唤醒状态和指令模式,可被主机扫描到。

  2、主机扫描

  E92主从一体模块的PWR_CTL引脚接低电平,上电就处于广播状态、唤醒状态,软件界面设置好扫描参数,点击“开始扫描”,用户可通过从机名称和MAC地址来分辨哪个是目前需要连接的从机。

  注:扫描参数栏一般只需设置“扫描模式”为主动,“RSSI阈值”为-60dBm,其他参数项保持默认即可,其中具体每个参数项含义,见文末:
图3 调试工具APP主机扫描界面

  3、主机发起连接

  软件界面点击“connect按钮”,去连接目标从机,跳到图3所示界面,代表连接成功。
图4 主机发起连接

图5 调试工具APP主机连接界面

  4、配对

  当从机设置了配对密码时,主机发起连接后,需要填写正确的从机配对密码,才能成功建立连接。
  由于调试工具APP目前没有开发配对密码这部分内容,所以直接讲解E95、E92配对密码相关指令。
  注:普通E92主从一体版本没有配对功能,E92配对版才有此功能。
图6 E95从机配对密码设置指令
图7 E95从机设置配对密码为123

  上述图6,E95设置的配对密码是123,转成16进制是0x7B。
图8 E92主机输入配对密码指令
图9 主机输入配对密码123

  注:只要初次连接成功,那么下次连接无需再输入从机配对密码,如下图所示,E92主机发起连接后,并没有跳出0x8E事件,要求输入配对密码。
图10 主机再次发起连接,并没有0x8E事件产生,提示输入配对密码

  5、主机使能notify

  蓝牙协议规定,从机通过notify通知通道(即主机只接收,不回复)给主机发数据前,主机必须打开notify开关,允许从机给自己发数据,具体如下图11所示:
图11 主机使能notify按钮

  6、主从机间进行GATT数据通信

  主从机间成功建立连接后,主机会发现从机的多个服务和特征值,“利尔达透传服务”的UUID是0xFE60,write通道UUID是0xFE61,notify通道的UUID是0xFE62。
注意,E92主机使用0x13写特征值指令给E95从机发数据时,指令中Addr、UUID字段必须填写正确的从机MAC地址、从机write通道UUID(0xFE61)。
图12 从机给主机发数据00112233445566778899
图13 主机收到从机发来的数据00112233445566778899
图14 主机给从机发送数据666666
图15 从机收到数据发来的数据666666

  7、断开连接

  主、从机任何一方都可以主动发起断开连接。
图16 主机发起断开连接
图17 从机发起断开连接

  通信参数配置建议

  从机一般需要配置串口参数、连接参数、广播参数、配对密码、MTU等。
  主机一般需要配置串口参数、连接参数、扫描参数、MTU等。

  1、串口参数:配置成跟MCU相同即可。

  2、连接参数:包含最小连接间隔、最大连接间隔、从机潜伏次数、连接丢失监测超时时间这4个参数,客户一般需要设置一下最小/最大连接间隔,从机潜伏次数设置成0,连接丢失监测超时时间保持默认即可。

  ●连接间隔:两个连接事件之间的时间间隔,连接间隔以1.25ms为单位,取值范围是6(7.5ms)~3200(4s)。

  连接间隔大的优势是显著地节省功耗,因为设备可以在连接事件之间有较长时间的休眠,坏处是当设备有应用数据需要发送时,必须要等到下一个连接事件;短的连接间隔优势是两设备连接频繁,可以更快地收发数据,坏处是设备因连接事件的到来而被频繁的唤醒,会有较多功耗。

  从机潜伏次数:从机设备没有数据要发时,可跳过一定数目的连接事件的值,取值范围是:0-499。数字约小通信速度越快,但是功耗越高。

  注意在距离远或者干扰大的时候,如果暂无数据通信需求,那么把这个值设大可以减少连接断开的概率。

  连接丢失监测超时时间:主从机设备如果在这段时间内,没有及时收到对方的回复,那么判断此连接事件已断开,取值范围是:10ms~32s。

  总之,主从机双方都可以发起更新连接事件,更新完最终产生的连接参数是由主机决定的,主机会根据具体使用情况在最小~最大连接间隔范围内,选择合适的连接间隔时间,这个具体值是不可控的,实际使用过程中需要客户不断尝试。

  例如客户想把连接间隔设置成20ms,那么可以把从机和主机的最大连接间隔都改成20ms,最小连接间隔保持默认,那么从机或主机发起连接更新后,主机一般会选择自身的最大连接间隔作为最终的连接间隔。

  3、广播参数:包含广播间隔、广播数据、扫描响应数据,其他参数保持默认即可。

  广播间隔:两个广播事件之间的时间间隔,单位是625us。广播间隔越大,功耗越低,但是广播数据的发送频次也就越低;广播间隔越小,功耗越高,但是广播数据的发送频次也就越高。
  广播数据:共31字节,数据格式是len(1byte)+type(1byte)+value(nbytes)。
  扫描响应数据:主机设置成主动扫描时,当主机扫描到从机广播事件后,主机会发起扫描请求scan_req事件,从机收到后需要回复扫描响应scan_rsp事件。扫描响应数据共31字节,数据格式也遵循len+type+value格式,利尔达从机默认扫描响应数据是从机设备名称,type=0x09。

  4、扫描参数:包含扫描间隔、扫描窗口占空比、扫描模式、RSSI阈值、扫描时长、扫描PHY、是否连续扫描、是否允许重复上报、过滤广播。

  扫描模式:主动扫描会去获取从机扫描响应,被动扫描不会,一般设置成主动扫描即可。
  占空比:占空比=(scan_wind/scan_intv)*100%,客户需要扫描窗口scan_wind开大一些的话,可适当的调大占空比,一般采用软件默认值50%即可。
  RSSI:低于此RSSI阈值的广播数据将不会上报给 MCU,客户可根据主从设备间距、信号强度等因素来选择。
  ●扫描时长:scan_time,一次扫描任务持续的最长时间,客户想增加扫描到从机的可能性,那么可以适当的增加扫描时长,一般采用默认值1s即可。
  扫描PHY:目前市面上大部分BLE设备都是使用1M PHY,所以这里一般选择PHY_1M即可。
  连续扫描:连续扫描,即扫描窗口scan_wind结束后,等待扫描间隔scan_intv的时间到后,再次开启扫描,可理解为循环扫描;单次扫描,即扫描窗口scan_wind结束后不再开启下一个扫描窗口。
  扫描间隔:scan_intv,扫描间隔,2个扫描窗口的间隔时间。
  重复上报:重复上报允许的情况下,每一帧串口数据都会上报; 重复上报不允许的情况下,相同的广播数据只通过串口上报一次。
  过滤广播:是指,主机搜到从机广播后,通过用户填写的从机广播数据的特殊字节,来过滤出广播这帧数据的从机;其他从机,则不上报。
图18 扫描过程简介

  5、配对密码:是BLE协议层定义的一个通信加密机制,客户可根据需求来决定是否需要设置。

  6、MTU:最大传输单元,空中包每次可发送数据的最大字节数是MTU-3,具体值由主从机双方协商结果为准。

  一般建立连接后,主机或从机都可以发起MTU更新,来提升数据传输速率。注意,一次连接只能更新一次MTU值。

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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