附录 A 蓝牙AT协议
1、UART默认配置
类别 |
说明 |
备注 |
波特率 |
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、包格式
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所示:
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如下:
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 |
命令已完成(主从) |