|
一.背景
为了方便描述,本文中的主、从机都使用E55主从一体开发板、搭配sscom串口调试助手,其中E55模块型号L-BTMEB55-G0SP4。
本文主要描述客户使用E55主从一体模块时,最常用的一些功能及相关指令介绍。
如果客户想了解开发板操作使用,请参考文章AN-5117 主、从机间透传通信之小白上手指南
如果客户想了解具体主从机间通信流程?请参考文章AN-5102 主从机完整通信流程介绍、通信参数配置建议
二. 作为从机角色
1.读取一些模块固有参数
1.1 读取MAC地址
发→◇01 FC F0 01 00
收←◆04 FC F0 08 00 00 05 80 E3 38 C1 A4 //从机MAC地址是05 80 E3 38 C1 A4。
1.2 读取固件版本
发→◇01 FC F0 01 03
收←◆04 FC F0 07 00 03 52 65 76 30 31 //固件版本是Rev01。
1.3 读取源码版本
发→◇01 FC F0 01 02
收←◆04 FC F0 0D 00 02 76 31 2E 31 2E 32 32 30 34 31 35 //源码版本是v1.1.220415。
1.4 设置设备名称
发→◇01 FC 38 07 00 6C 69 65 72 64 61 //设置设备名称是lierda
收←◆04 FC 38 01 00
2.设置广播参数
2.1 设置广播间隔是1s
发→◇01 FC 32 04 01 01 40 06 //1s=1000ms=1000000us,1000000us÷625us=1600=0x640,注意指令中每个≥ 2 字节的独立数据单元, 都应以低字节序传输,所以要填0x40 06。
收←◆04 FC 32 01 00
2.2 设置广播数据
发→◇01 FC 32 11 05 01 0E 02 01 06 03 03 60 FE 06 FF 73 6C 61 76 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // 02 01 06字段,是协议规定每个广播包必须包含的;03 03 60 FE字段,是利尔达从机固定广播字节,03代表是服务类型,60FE代表服务的UUID值是FE60。在原先基础上,新增1个厂商自定义类型数据,有效长度len是6,数据类型type是0xFF,代表厂商自定义数据类型;具体广播数据值vale是0x73 6C 61 76 65,字面意思是slave。
[16:12:57.879]收←◆04 FC 32 01 00
3.设置连接参数
发→◇01 FC 36 09 03 08 00 08 00 00 00 B0 04 //设置初始最小、最大连接间隔是10ms,初始从机潜伏是0次,初始连接丢失监测超时时间是12s。
收←◆04 FC 36 01 00
4.设置配对密码
发→◇01 FC 3C 08 00 01 31 32 33 34 35 36 //设置配对密码是123456
收←◆04 FC 3C 01 00
至此,从机参数已配置完毕,下一步等待被主机连接,主从机间进行相互通信。
5.更新连接参数(待连接建立后,主机、从机都可发起更新连接参数,将连接参数更新成目标值)
发→◇01 FC 04 0E 5D 0E 74 38 C1 A4 08 00 50 00 00 00 90 01 // 注意MAC地址要填主机的MAC地址(如何获取主机MAC地址?连接建立后,上报的0x84连接建立事件中会上报对方主机的MAC地址),最小连接间隔设置成10ms,最大连接间隔设置成100ms,其他不变。
收←◆04 FC 04 01 00
收←◆04 FC 86 0D 00 5D 0E 74 38 C1 A4 50 00 00 00 90 01 //0x86连接更新事件上报,00代表连接参数更新成功,对方设备地址是5D 0E 74 38 C1 A4,连接间隔是100ms,从机潜伏次数是0次,连接丢失监测超时是4s.
6. 更新MTU(被E55主机连接,不需要从机更新MTU,因为主机默认连接建立成功会更新一次MTU)
发→◇01 FC 10 07 5D 0E 74 38 C1 A4 //更新MTU是103bytes,此处MAC地址要填主机的。
收←◆04 FC 10 01 00
7.写特征值(UUID)
从机给主机写数据:
发→◇01 FC 13 0D 5D 0E 74 38 C1 A4 62 FE 00 03 77 88 99 ////从机通过0xFE62上行通道给主机写数据778899,注意MAC地址要填主机的,UUID要填从机的notify通道UUID值,选择无需确认就能执行下一次操作。
收←◆04 FC 13 01 00
主机收到从机发来的数据:
收←◆04 FC 8C 0E 00 05 80 E3 38 C1 A4 01 62 FE 03 77 88 99 //主机收到0x8C事件,对方从机MAC地址是05 80 E3 38 C1 A4,收到的数据类型是notify,UUID是FE62,数据长度是3bytes,内容是778899。
8.断开连接
发→◇01 FC 03 06 5D 0E 74 38 C1 A4 //注意此处MAC地址要填对方主机的。
收←◆04 FC 03 01 00
04 FC 85 08 00 5D 0E 74 38 C1 A4 13 //0x85连接断开事件上报,0x13代表断开原因是对方主机主动断开连接。
三. 作为主机角色
1.读取一些模块固有参数
1.1读取MAC地址
发→◇01 FC F0 01 00
收←◆04 FC F0 08 00 00 5D 0E 74 38 C1 A4 //主机MAC地址是5D 0E 74 38 C1 A4
1.2读取固件版本
发→◇01 FC F0 01 03 □
收←◆04 FC F0 07 00 03 52 65 76 30 31 //固件版本是Rev01。
1.3 读取源码版本
发→◇01 FC F0 01 02
收←◆04 FC F0 0D 00 02 76 31 2E 31 2E 32 32 30 34 31 35 //源码版本是v1.1.220415。
2. 设置扫描参数
2.1设置扫描间隔
发→◇01 FC 34 04 01 A0 00 5A //设置扫描间隔是100ms,扫描占空比是90%。
收←◆04 FC 34 01 00
2.2设置扫描模式
发→◇01 FC 34 02 02 01 //设置扫描模式为主动扫描。
收←◆04 FC 34 01 00
2.3 设置扫描RSSI阈值
发→◇01 FC 34 02 05 BC //设置扫描阈值是-60dBm。
收←◆04 FC 34 01 00
2.4 设置是否允许重复上报
发→◇01 FC 34 02 08 00 //设置一次扫描任务中不允许重复上报,即多次主机多次收到某个从机广播包,那么只在第一次收到时上报应用层,之后再收到广播包时不上报。
收←◆04 FC 34 01 00
2.5 设置扫描任务执行方式
发→◇01 FC 34 02 09 01 //设置为连续扫描。
收←◆04 FC 34 01 00
2.6 设置过滤广播要查找的字节数
发→◇01 FC 34 21 0A 0E 02 01 06 03 03 60 FE 06 FF 73 6C 61 76 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 //收到的广播包中要过滤的字节数是14bytes,过滤内容是02 01 06 03 03 60 FE 06 FF 73 6C 61 76 65
收←◆04 FC 34 01 00
3. 设置连接参数
发→◇01 FC 36 0F 00 A0 00 5A 01 C8 00 08 00 08 00 00 00 B0 04 //设置扫描间隔是100ms,扫描占空比是90%,扫描时使用的PHY是PHY_1MBPS,连接失败监测超时是20s(代表当应用层已知晓从机MAC地址,不扫描,MCU直接给模块发0x02发起连接指令,如果模块20s内未跟从机成功建立连接,那么判定本次连接失败),设置初始最小、最大连接间隔是10ms,初始从机潜伏是0次,初始连接丢失监测超时时间是12s(代表连接建立后,主机12s内未收到从机的数据包,那么判定连接已断开)。
收←◆04 FC 36 01 00
至此,主机参数已配置完毕,下一步开始扫描周围从机,当扫描到想要的从机时,对其发起连接,待连接建立成功,相互收发数据。数据收发完毕,主机断开连接。
4.开始扫描
发→◇01 FC 01 01 01 //开始扫描
收←◆04 FC 01 01 00
收←◆04 FC 82 19 00 00 00 05 80 E3 38 C1 A4 D5 0E 02 01 06 03 03 60 FE 06 FF 73 6C 61 76 65 //0x82收到广播事件上报,经过广播数据过滤,只有广播数据=0x02 01 06 03 03 60 FE 06 FF 73 6C 61 76 65的广播包被上报给应用层。
5.发起连接
发→◇01 FC 02 07 00 05 80 E3 38 C1 A4 //发起连接
收←◆04 FC 02 01 00
收←◆04 FC 84 0E 00 05 80 E3 38 C1 A4 01 08 00 00 00 B0 04 //0x84连接建立事件上报,对方从机设备地址是05 80 E3 38 C1 A4 ,本机角色是主机,连接间隔是10ms,从机潜伏次数是0次,连接丢失监测超时是12s.
04 FC 89 09 00 05 80 E3 38 C1 A4 67 00 //0x89 MTU更新事件上报,对方从机MAC地址是05 80 E3 38 C1 A4,MTU最大传输单元值是103bytes,即每次数据传输量应≤100bytes。(E55作为主机角色时,建立连接后会自动更新MTU至最大103bytes,无需应用层发指令更新)
收←◆04 FC 8E 03 00 80 00 //0x8E配对请求事件上报。
6.输入从机配对密码
发→◇01 FC 3C 08 01 01 31 32 33 34 35 36 //输入从机配对密码是123456
收←◆04 FC 3C 01 00
收←◆04 FC 8F 08 00 00 05 80 E3 38 C1 A4 //0x8F配对状态上报事件,00代表配对成功。
收←◆04 FC 8A 07 00 05 80 E3 38 C1 A4 //0x8A服务发现完成事件上报,00代表服务发现成功。
7. 更新连接间隔
发→◇01 FC 04 0E 05 80 E3 38 C1 A4 08 00 50 00 00 00 90 01 //注意MAC地址要填从机的MAC地址,最小连接间隔设置成10ms,最大连接间隔设置成100ms,其他不变。
收←◆04 FC 04 01 00
收←◆04 FC 86 0D 00 05 80 E3 38 C1 A4 40 00 00 00 90 01 //0x86连接更新事件上报,00代表连接参数更新成功,对方从机MAC地址是05 80 E3 38 C1 A4,连接间隔是100ms,从机潜伏次数是0次,连接丢失监测超时是4s.
8.使能notify
发→◇01 FC 15 08 05 80 E3 38 C1 A4 62 FE //使能notify,注意这里要填对方从机的MAC地址,UUID填对方从机的notify通道对应的UUID值。
收←◆04 FC 15 01 00
9.写特征值(UUID)
主机给从机写数据:
发→◇01 FC 13 10 05 80 E3 38 C1 A4 61 FE 00 06 11 22 33 44 55 66 //主机通过0xFE61下行通道给从机写数据,注意MAC地址要填从机的,UUID要填从机的write 通道UUID值,选择无需确认就能执行下一次操作。
[14:18:33.814]收←◆04 FC 13 01 00
从机收到主机发过来的数据:
收←◆04 FC 8C 11 00 5D 0E 74 38 C1 A4 00 61 FE 06 11 22 33 44 55 66 //从机收到0x8C事件,对方主机MAC地址是5D 0E 74 38 C1 A4,收到的数据类型是write,UUID是FE61,数据长度是6bytes,内容是112233445566。
10.断开连接
发→◇01 FC 03 06 05 80 E3 38 C1 A4 □ //断开连接,注意MAC地址要填对方从机的。
收←◆04 FC 03 01 00
04 FC 85 08 00 05 80 E3 38 C1 A4 13 //0x85连接断开事件上报,0x13代表断开原因是对方从机主动断开连接。
四. 参考文档
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|