当前页面为 开发中 版本,查看特定版本的文档,请在页面左下角的下拉菜单中进行选择。

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

3 工程路径

例程位置:<home>\nimble\samples\bluetooth\ble_multi_role\keil_107x

使用keil进行打开项目进行编译烧录。

4 演示说明

4.1 编译3主2从固件

初次打开工程默认配置就是3主2从,用户需要配置如下参数:

3主2从作为Master Role时是通过蓝牙地址和特定的Server来自动建立连接的,因此,为了测试,用户需要提供3个Peer Slave Role的蓝牙地址并填在如下表中:

image

Peer Slave Role Address Table

当然,用户也可以不用修改,只需要将表中的地址设置到対测的Slave Role即可。

4.2 编译对测的Slave Role固件

为了与3主2从设备对测,需要编译3个对测的Slave Role固件。用户需要做如下修改:

  1. 设置APP_SLV_TEST_EN=1,设置APP_SLV_DEVICE_ID 分别为0,1,2,对应3个Slave设备。

image

对测slave role 配置

  1. 按下图设置BT_MAX_NUM_OF_PERIPHERAL=1,BT_MAX_NUM_OF_CENTRAL=0

image

对测slave 设备数量配置

  1. 编译3个対测的Slave Role固件,需要注意的是,编译时需要修改 APP_SLV_DEVICE_ID =0,1,2(这与蓝牙地址相关) 对应3个対测 Slave Role固件

4.3 编译对测的Master Role固件

为了与3主2从设备对测,需要编译2个对测的Master Role固件。用户需要做如下修改:

  1. 设置APP_MST_TEST_EN=1,将3主2从设备的蓝牙地址填到如图所示的表中

image

对测Master设备配置

  1. 按下图设置BT_MAX_NUM_OF_PERIPHERAL=0,BT_MAX_NUM_OF_CENTRAL=1

image

对测Master设备数量配置

  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