
评测二 p2p通信 众所周知,站在GATT层,分Client和Server角色,站在GAP层,分Central和Peripheral角色。而p2p通信就是GATT Client对Server特征的一系列操控。STM32WB55刚好定义了一组LED_Button service,它的构成见官方文档《AN5289 - Building a Wireless application》7.4章节: ![]() 图1 p2p对端通信服务UUID 可读可写是LED特征,通知是Button特征。 一、 准备工作 STM32WB55 Nucleo board用STM32CubeProgrammer烧录STM32Cube_FW_WB_V1.16.0\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_p2pServer\Binary\BLE_p2pServer_reference.hex,STM32WB55 Dongle进入boot后同样用STM32CubeProgrammer(细节上一篇评测有讲,不赘述)或直接外置Jlink烧录STM32Cube_FW_WB_V1.16.0\Projects\P-NUCLEO-WB55.USBDongle\Applications\BLE\BLE_p2pClient\Binary\BLE_p2pClient_reference.hex,注:dongle的Jink板子并未丝印,需要查看原理图上CN1的PA13/PA14/GND/3V3就能SWD编程。 ![]() 图2 dongle的SWD编程接口 手机安装ST BLE Toolbox。 二、 runtime 1. 手机做client 手机端往UUID=0000FE41-8e22-4541-9d4c-21edae82ed19写0100把对端server的LED1熄灭,写0101把对端server的LED1点亮;同理开发板SW1按下往UUID=0000FE42-8e22-4541-94dc-21edae82ed19发通知0100或0100,第1个字节代表第1个server。这里测出一个问题,为了录屏,我用旧手机当client(小米6+安卓9),发现APP的LED&Button进入页没有显示LED图标,必须要按下按钮收到通知LED图标才出现,新手机上APP没有此现象;再个就是旧手机不容易扫描到,经常设备看不到p2pserver,新手机好很多,可能是APP未对旧系统适配。 ![]() 图3 旧版APP进入并未显示有LED控制图标(未适配) ![]() 图4 手机LED&Button特征操作 2. dongle做client 这里的操作就多了,彼此可以互通信,dongle的SW1可控Nucleo board的LED1,反过来Nucleo的SW1可控制dongle的LED1,连接心跳彼此的绿灯都在同步闪烁指示,同时Nucleo的SW2可以设置连接参数,按一下可切换连接间隔在10ms或1s,并且10ms->1s立马切换,1s->10ms要等彼此绿灯闪10次即等10s才切换成功,经测试验证和readme.txt描述现象一致,相应日志也能看到:
![]() 图5 连接过程server日志 ![]() 图6 dongle&Nucleo board互通 |
意法半导体推出首款与高通合作的STM32配套无线物联网模块
Nucleo-STM32WB09KE测评-蓝牙调试并使用OLED显示数据
【NUCLEO-WB09KE评测】创建BLE工程和开启调试信息
【NUCLEO-WB09KE评测】+2.串口打印
【NUCLEO-WB09KE评测】+5.实现标准电量服务
【NUCLEO-WB09KE评测】BLE例程HeartRate及工具探索
【NUCLEO-WB09KE评测】+3.蓝牙广播
STM32WB系列MCU低功耗测试
Nucleo-STM32WB09KE测评--IIC传感器读取
【NUCLEO-WB09KE评测】+4.蓝牙控制LED