当前文档版本为 NDK-v0.4.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

BLE MULTI ROLE

1 功能概述

此项目演示蓝牙多角色功能,可以支持多主多从,可以通过串口控制设备执行广播、扫描。

  • 作为主机:可以直接扫描和连接bleprph_enc示例,可以直接下载bleprph_enc到另外一块EVB板上。

  • 作为从机:其实就是一个bleprph_hr例程,可以使用手机nrf_connect app与其相连。

作为主机和从机的功能可以同时使用。

2 环境要求

  • board: pan107x evb

  • uart(option): 用来显示串口log(波特率921600,选项8n1

3 编译和烧录

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

编译后无错误直接点击IDE的’‘Download’按钮进行下载即可。

4 演示说明

命令串口端口:

UART PORT

DESCRIPTION

P10

UART1_TX

P24

UART1_RX

BaudRate:921600

相关的串口命令如下表格所示:

TEST CMD

DESCRIPTION

ADV_START\r\n

开启广播

ADV_STOP\r\n

停止广播

SCAN_START\r\n

开启扫描

SCAN_STOP\r\n

停止扫描

  1. 烧录完成后,串口输出的log如下:

    Try to load HW calibration data.. DONE.
    - Chip Info         : 0x1
    - Chip CP Version   : 255
    - Chip FT Version   : 2
    - Chip MAC Address  : D0000000017D
    - Chip UID          : FD0311230F37560365
    - Chip Flash UID    : 425031563233391711230F3756036578
    - Chip Flash Size   : 512 KB
    LL Spark Controller Version:d7c4bfa
    APP version: 0.144.38920
    ble_store_config_num_our_secs:0
    ble_store_config_num_peer_secs:0
    ble_store_config_num_cccds:0
    blehr_advertise
    

    上电默认发广播,广播名字为“cent_prph”。

  2. 用手机“NRF CONNECT” app连接广播名字为“cent_prph”广播,连上后此时无广播无扫描。

    串口发送“ADV_START\r\n”,串口log输出如下:

    Try to load HW calibration data.. DONE.
    - Chip Info         : 0x1
    - Chip CP Version   : 255
    - Chip FT Version   : 2
    - Chip MAC Address  : D0000000017D
    - Chip UID          : FD0311230F37560365
    - Chip Flash UID    : 425031563233391711230F3756036578
    - Chip Flash Size   : 512 KB
    LL Spark Controller Version:d7c4bfa
    APP version: 0.144.38920
    ble_store_config_num_our_secs:0
    ble_store_config_num_peer_secs:0
    ble_store_config_num_cccds:0
    blehr_advertise
    connection established; status=0
    blehr_advertise
    

    连上后继续发广播。用其他手机“NRF CONNECT” app可以连接新发出的广播。

  3. 作为主机,如果空中有bleprph_enc存在,则会主动连接上 。

    连上后的log如下:

    LL Spark Controller Version:d7c4bfa
    APP version: 0.144.38920
    ble_store_config_num_our_secs:0
    ble_store_config_num_peer_secs:0
    ble_store_config_num_cccds:0
    blehr_advertise
    connection established; status=0
    blehr_advertise
    scan start fail
    Try to load HW calibration data.. DONE.
    - Chip Info         : 0x1
    - Chip CP Version   : 255
    - Chip FT Version   : 2
    - Chip MAC Address  : D0000000017D
    - Chip UID          : FD0311230F37560365
    - Chip Flash UID    : 425031563233391711230F3756036578
    - Chip Flash Size   : 512 KB
    LL Spark Controller Version:d7c4bfa
    APP version: 0.144.38920
    ble_store_config_num_our_secs:0
    ble_store_config_num_peer_secs:0
    ble_store_config_num_cccds:0
    blehr_advertise
    Connection established handle=0 our_ota_addr_type=0 our_ota_addr=7d:01:00:00:00:d0 our_id_addr_type=0 our_id_addr=7d:01:00:00:00:d0 peer_ota_addr_type=0 peer_ota_addr=cd:00:00:00:00:d0 peer_id_addr_type=0 peer_id_addr=cd:00:00:00:00:d0 conn_itvl=40 conn_latency=0 supervision_timeout=256 encrypted=0 authenticated=0 bonded=0
    Service discovery complete; status=0 conn_handle=0
    Read complete; status=0 conn_handle=0 attr_handle=12 value=0x00
    Write complete; status=270 conn_handle=0 attr_handle=22
    Subscribe complete; status=0 conn_handle=0 attr_handle=20
    

    如果还需要连接其他广播设备,串口发送“SCAN_START\r\n”。

  4. 多连接相关:

    • 目前例程默认配置两主两从,配置的宏如下所示:

      /* CENTRAL maximum number of states supported */
      // <o> BT_MAX_NUM_OF_CENTRAL
      #define CONFIG_BT_MAX_NUM_OF_CENTRAL            2
      // <i> CENTRAL maximum number of states supported
      
      /* PERIPHERAL maximum number of states supported */
      // <o> BT_MAX_NUM_OF_PERIPHERAL
      #define CONFIG_BT_MAX_NUM_OF_PERIPHERAL         2
      // <i> PERIPHERAL maximum number of states supported 
      
    • 可以根据自己的需求修改宏参数即可,受芯片ram资源限制,目前最多支持两主两从。

    • 可修改宏”PAN_BLE_CTLR_BUFFER_ALLOC”增加多角色的数量。

5 RAM/Flash资源使用情况

Spark Controller:

RAM Size:41.66 k
Flash Size: 126.11k