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

Solution: BLE HID Uart Mult Roles

1 功能概述

此sample为pan108xxb5(64pin芯片)evb上演示蓝牙HID串口设备的透传功能,支持1主多从

2 环境要求

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

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

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

  • 蓝牙主机设备如手机

3 编译和烧录

例程位置:zephyr\samples_panchip\solutions\ble_hid_uart_mult_roles

使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍

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

未定义

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

    Pattern(1B)

    Send Connect Index(1B)

    data(0~200B)

    0x5A

    发送给index的参数为置位index bit位

    例如,连接了1主2从设备情况下,conn 1为作为从机被主机连接,conn 2~3 为从机连接

    发送到全部3个设备时,数据格式内第二个字节为0x7

    发送前两个为0x3,发送到第一个连接为0x1,发送到第一个连接为0x2,以此类推

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主2从

通过命令AT+DEV SHOW可以进行连接设备信息查看

4.2.2.1 从机模式

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

  1. AT+ADV STOP,手机端搜索不到广播

  2. AT+ADV START,手机端可以重新搜索到广播

  3. 手机端蓝牙连接设备

  4. 手机端输入密码进行连接

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

  6. 芯片端发送消息上报

  7. 手机端发送消息下发

4.2.2.2 主机模式

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

  1. AT+SCAN START,成功扫描后返回SCAN DONE

  2. AT+CONN 00,成功连接后返回CONN WHOLE DONE

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

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

  5. 可以对多块板子进行传输

5 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:      108840 B       384 KB     27.68%
SRAM:       38311 B        46 KB     81.33%