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

Solution: BLE HID Uart Mult Roles

1 功能概述

此sample为pan107上演示蓝牙HID串口设备的透传功能,支持1主1从

2 环境要求

  • board: pan107(芯片型号)开发板 * 3

  • uart0: overlay中设置P16,P17作为默认的LOG输出端口

  • uart1: overlay中默认P24作为Uart Tx端-连接开发板TX0,P10作为Uart Rx端-连接开发板RX0

  • 蓝牙主机设备如手机

3 编译和烧录

例程位置:<home>\nimble\samples\solutions\ble_hid_uart_mult_roles

使用keil进行打开项目选择需要的controller进行编译烧录。

4 演示说明

4.1 AT指令说明

  1. 所有AT指令必须以\r\n字符结尾。广播状态为AT指令模式。连接状态为数据透传。AT指令模式以字符串格式发送。数据透传串口以hex格式发送。

  2. 存储参数:

    typedef struct {
    	uint32_t baudrate;
    	uint8_t own_mac[6];
    	uint8_t device_name[28];
    	uint8_t name_length;
    	uint8_t bond_mac[6];
    	uint32_t passkey;
    	uint32_t rst_flag;
    } fmc_data;
    

    全擦除后上电第一次打印默认初始化参数,用户可以后续通过AT命令进行修改

    default_data_init
    Baudrate : 115200
    Own_mac : 11 22 33 44 55 66 
    Bond_mac : 11 22 33 44 66 88 
    Name_length : 9
    Device_name : mult_uart
    Passkey : 123456
    
  3. AT指令表

AT指令序号

AT指令

回复

说明

1

AT

AT+OK

测试串口通讯是否正常

2

AT+RESET

OK+RESET

复位芯片指令

3

AT+DEFAULT

OK+DEFAULT

恢复出厂设置

4

AT+BAUD?

BAUD+波特率

10进制值(1200-115200)

5

AT+BAUD+115200
示例:AT+BAUD+115200

OK+BAUD
NO CHANGE BAUD
OVER 115200 REJECT

设置波特率 1200-115200任意值
超出配置限制会被拒绝,相等配置同样不会进行设置
切换波特率后需要更换波特率通信

6

AT+MAC?

MAC+地址

查询MAC地址

7

AT+SETMAC+地址
示例:AT+SETMAC+112233445566

OK+SETMAC

设置MAC地址成功

8

AT+NAME?

NAME+广播名字

查询蓝牙广播名字

9

AT+SETNAME+名字
示例:AT+SETNAME+HELLO_PAN

OK+SETNAME

设置广播名字成功,最长28字节,超过将会截断

10

AT+BONDMAC?

BONDMAC+地址

查询扫描过滤条件的绑定地址

11

AT+BONDMAC+地址
示例:AT+BONDMAC+112233446688

OK+BONDMAC

设置扫描过滤条件的绑定地址成功

12

AT+PIN?

PIN+设置配对密码

作为从机配对时需要在手机端输入密码

13

AT+PIN+配对密码
示例:AT+PIN+234567

OK+PIN

设置密码成功

14

AT+ADV START

OK+ADV START

默认开启了广播

15

AT+ADV STOP

OK+ADV STOP

在广播开启条件下可以停止广播

16

AT+SCAN START

OK+SCAN START
SCAN DONE

依次输出2条
第一条代表消息通信成功
第二条代表扫描到设备后停止扫描

17

AT+SCAN STOP

OK+SCAN STOP

在扫描开启条件下可以停止扫描

18

AT+CONN 00

OK+CONN
CONN DONE
DISCOVERY DONE
CCC DONE
CONN WHOLE DONE

依次输出5条
第一条代表消息通信成功
后四条代表连接后消息交互

19

AT+DISCONN 00

OK+DISCONN
DISCONN DONE

依次输出2条
第一条代表消息通信成功
第二条代表成功断连

20

AT+DEV SHOW

OK+DEV SHOW

显示连接列表
目前默认在log端口显示列表
有需要可以移植到透传端口显示

21

其他

AT+ERROR

未定义

注: 当前NDK烧录代码后,默认开启广播,未开启扫描,命令14-20中仅16可用,并且扫描到指定UUID进行自动连接

  1. 连接状态下,发送透传消息以hex格式发送,消息格式如下

    Pattern(1B)

    Send Connect Index(1B)

    data(0~200B)

    0x5A

    发送给index的参数为置位index bit位
    bit0为发送给从机,bit1为发送给主机

4.2 演示流程

4.2.1AT配置测试

命令1-13可以灵活配置和读取默认配置参数,先进行测试后,建议发送AT+DEFAULT恢复默认配置

注意:

  1. 目前指令5设置921600会返回信息OVER 115200 REJECT,设置相等值会返回NO CHANGE BAUD,设置115200以下的串口波特率会返回OK+BAUD RESET并reset芯片,切换波特率可以继续通信测试

  2. 部分设置命令会答应RESETING...进行芯片重启

image

AT指令测试窗口

4.2.2 蓝牙状态测试

主机和从机可以同时支持,默认上电开启了广播,最多支持1主1从

准备2块板子A和B,分别烧录程序后,A板子只作为从机,可以通过AT指令修改设备mac地址和名字,防止手机扫描到两个设备信息完全一样

然后对B板子以以下流程进行测试

4.2.2.1 从机模式

作为从机默认上电开启了蓝牙广播,测试流程可以按照以下顺序

  1. 手机端蓝牙连接设备

  2. 手机端对属性进行notify enable

  3. 芯片端发送消息上报

  4. 手机端发送消息下发

4.2.2.2 主机模式

作为主机,需要主动开始扫描,扫描到设备后,主动进行连接已经开启的另一块从机设备,连接从机时默认会进行服务发现、notify enable,之后可以进行消息透传测试

  1. AT+SCAN START,成功连接后返回SCAN DONE

  2. 芯片主机端进行数据传输测试

  3. 可以进行第二块从机的准备和完成扫描连接流程

  4. 可以对主机从机同时进行传输

5 开发说明

5.1 功耗说明

功耗测试分为广播态测试,连接态测试,并在两种状态下可以通过电流观察空闲WFI状态休眠电流

功耗测试结果:

工作模式

平均电流(mA)

WFI电流(uA)

广播(35ms广播间隔)

1.23

900

连接(45ms连接间隔)

0.979

901

6 RAM/Flash资源使用情况

Spark Controller:

Flash Size: 130.25k
RAM Size:  40.13 k