附录 A 蓝牙AT协议

1、UART默认配置

附表1-1

类别

说明

备注

波特率

115200

数据位

8

停止位

1

校验位

流控

PIN

PB04(TX),PB05(RX)

TX为芯片UART输出,RX为芯片UART输入;可以通过固件修改。
代码定义如下:
#define UART_DB_TX_PIN IO_PORTB_04
#define UART_DB_RX_PIN IO_PORTB_05

2、协议说明

1)MCU发给芯片的数据包称为CMD(命令),MCU通过发送CMD来完成配置蓝牙,控制蓝牙连接,发送数据等操作。
2)芯片发给MCU的数据包称为EVENT(事件),芯片通过发送EVENT来通知MCU蓝牙状态的变化以及上报数据等行为。
3)MCU每发送一个CMD,都需要等待芯片应答一个EVENT;遵循一去一回的原则;此机制作为软件流控处理。
4)芯片的状态变化和上报数据EVENT为实时发送给MCU,不需要等待MCU的查询。
5)CMD和EVENT包均为小端传输,即低字节先传输。
6)用户有固件程序,可以自己添加CMD和EVENT扩展。

3、包格式

附表1-2

Byte offset

Name

名称

0

Packet type

包类型,0x01–CMD包,0x02–EVENT包

1

Op

操作码,根据包类型指示不同的CMD和EVENT指令

2

length

内容长度

3~(length+3)

payload

内容

4、CMD命令

CMD是MCU发送给蓝牙芯片的指令,用于配置蓝牙,控制蓝牙连接和发送数据等。
芯片收到每个CMD后都会回复一个对应的EVENT作为应答(通常为EVENT_CMD_COMPLETE)。
即MCU发送CMD后应等待一个与之对应的EVENT,收到此EVENT后再发送新的CMD。
另外命令有蓝牙主从机公共使用和主从单独使用,详见标记。
已定义的CMD如附表1-3所示:
附表1-3

CMD

OP操作码

描述

CMD_SET_BT_ADDR

0x00

设置蓝牙EDR地址(从)

CMD_SET_BLE_ADDR

0x01

设置蓝牙BLE地址(主从)

CMD_SET_VISIBILITY

0x02

设置蓝牙可发现和广播(从)

CMD_SET_BT_NAME

0x03

设置蓝牙EDR名称(从)

CMD_SET_BLE_NAME

0x04

设置蓝牙BLE名称(主从)

CMD_SEND_SPP_DATA

0x05

发送蓝牙EDR(SPP)数据(从)

CMD_SEND_BLE_DATA

0x09

发送蓝牙BLE(ATT)数据(从)

CMD_SEND_DATA

0x0A

发送数据(自动选择通道SPP或BLE)(从)

5、EVENT命令

EVENT有蓝牙主从机公共使用和主从单独使用,详见标记。已定义的EVENT如下:
附表1-4

EVENT事件名称

OP操作码

描述

EVENT_BT_CONNECTED

0x00

蓝牙EDR连接建立(从)

EVENT_BLE_CONNECTED

0x02

蓝牙BLE连接建立(主从)

EVENT_BT_DISCONNECTED

0x03

蓝牙EDR连接已经断开(从)

EVENT_BLE_DISCONNECTED

0x05

蓝牙BLE连接已经断开(主从)

EVENT_CMD_COMPLETE

0x06

命令已完成(主从)