BLE MULTI ROLE¶
1 功能概述¶
此项目演示蓝牙多主多从功能以及多个连接设备之间的数据交互。此工程提供一个设备支持3主2从(也即一个设备作为Master role可以同时连接Peer的3个Slave Role的设备,同时作为Slave Role可以同时被Peer的2个Master Role的设备连接,也即6个设备同时通讯)
工程默认的配置是3主2从。工程中提供了两个lib:ble_spark_107x_rd.lib和lib:ble_spark_107x.lib。带“rd”后缀的库进行了RAM优化,有足够的RAM供用户使用,对于不使用或者不追求极致功耗的应用可以使用该库。
2 环境要求¶
board:
pan107x evb
4 演示说明¶
4.1 编译3主2从固件¶
初次打开工程默认配置就是3主2从,用户需要配置如下参数:
3主2从作为Master Role时是通过蓝牙地址和特定的Server来自动建立连接的,因此,为了测试,用户需要提供3个Peer Slave Role的蓝牙地址并填在如下表中:
当然,用户也可以不用修改,只需要将表中的地址设置到対测的Slave Role即可。
4.2 编译对测的Slave Role固件¶
为了与3主2从设备对测,需要编译3个对测的Slave Role固件。用户需要做如下修改:
设置APP_SLV_TEST_EN=1,设置APP_SLV_DEVICE_ID 分别为0,1,2,对应3个Slave设备。
按下图设置BT_MAX_NUM_OF_PERIPHERAL=1,BT_MAX_NUM_OF_CENTRAL=0
编译3个対测的Slave Role固件,需要注意的是,编译时需要修改 APP_SLV_DEVICE_ID =0,1,2(这与蓝牙地址相关) 对应3个対测 Slave Role固件
4.3 编译对测的Master Role固件¶
为了与3主2从设备对测,需要编译2个对测的Master Role固件。用户需要做如下修改:
设置APP_MST_TEST_EN=1,将3主2从设备的蓝牙地址填到如图所示的表中
按下图设置BT_MAX_NUM_OF_PERIPHERAL=0,BT_MAX_NUM_OF_CENTRAL=1
编译工程得到两个对此的Master Role固件,当然,用户也可以使用手机充当Master设备 (数据格式请参看4.5节的内容)
4.3 固件烧录¶
将编译得到的固件通过Jlink分别烧录到对应的pan107 EVB板中,上电设备将自动连接,建议先上电3主2从的设备,然后依次上电其他对测设备。
4.4 数据交互测试¶
设备连接好后(可以通过log查看连接请况),用户可以按pan107 EVB板上的KEY1按键,即可启动数据传输和接收测试。
按键按下以后,3主2从的设备会每间隔1s发送数据到对测的5个设备,同时会接收对测的5个设备发送的数据,并对数据的counter以及内容进行检验,如果错误,则会报错,同时通过log输出。
其他对测设备按下按键以后,会每隔1s发送数据到3主2从的设备,同时也会接收3主2从设备发送的数据,并对数据的counter以及内容进行检验,如果错误,则会报错,同时通过log输出。
4.5 测试的数据格式¶
本demo演示使用的数据具有如下个数:
包头 |
包内容 |
---|---|
4字节的包计数器counter |
N字节的0xAA或者0x77;3主2从的设备发送N字节的0x77数据,接收N字节的0xAA的数据,対测设备必须相应的匹配 |
5 RAM/Flash资源使用情况¶
PAN107x: (ble_spark_107x_rd.lib)
RAM Size: 39.34 kB
Flash Size: 129.83kB
PAN107x: (ble_spark_107x.lib)
RAM Size: 46.34 kB
Flash Size: 130.65kB