FSC-BT936D 指令手册

介绍

描述

本设计指南适用于工程师开发 FSC-BT936D 和FSC-BT936E系列蓝牙模组

模组默认参数

Name

FSC-BT936D-XXXX

LE-Name

FSC-BT936D-LE-XXXX

Pin Code

0000

Secure Simple Pairing Mode

On

UART Baudrate

115200/8/N/1

硬件说明

引脚图

_images/BT936D_pin_map.png

引脚描述

Pin

Pin Name

Type

Pin Descriptions

4

MIC_N

Audio

MIC input, negative

5

MIC_P

Audio

MIC input, positive

6

MIC_BIAS

Audio

MIC Power Supplies

7

SPK_LP

Audio

Headphone/speaker differential L output, positive

8

SPK_LN

Audio

Headphone/speaker differential L output, negative

12

SPK_RN

Audio

Headphone/speaker differential R output, negative

13

SPK_RP

Audio

Headphone/speaker differential R output, positive

19

VDD

VDD

3.3V供电,建议使用LDO供电

20

GND

GND

GND

21

LED2

I/O

未连接手机时,输出1KHZ方波.连接输出高电平

22

LED1

I/O

未连接耳机时,输出低电平. 连接输出高电平

23

RESET

I

低电平复位

31

UART_TX

O

串口TX

32

UART_RX

I

串口RX

35

ANT

ANT

外接天线

硬件设计说明

  • 模组简易测试只需要连接VDD/GND/UART_RX/UART_TX即可使用

  • 画完原理图后请发给飞易通进行审核,避免蓝牙距离达不到最佳效果

功能说明

Profiles & Features

  • SPP (Serial Port Profile)

  • GATTS (Generic Attribute Profile LE-Peripheral role)

  • GATTC (Generic Attribute Profile LE-Central role)

  • HFP-HF (Hands-Free Profile)

  • HFP-AG (Hands-Free-AG Profile)

  • A2DP-Sink (Advanced Audio Distribution Profile)

  • A2DP-Source (Advanced Audio Distribution Profile)

  • AVRCP-Controller (Audio/Video remote controller Profile)

  • AVRCP-Target (Audio/Video remote controller Profile)

  • HID-DEVICE (Human Interface Profile)

  • PBAP (Phonebook Access Profile)

GATT透传服务

  • Service: 0000B360-D6D8-C7EC-BDF0-EAB1BFC6BCBC

  • Write、Notify: 0000B362-D6D8-C7EC-BDF0-EAB1BFC6BCBC

指令说明

规范说明

适用于整个文档

  • {} : 包括与{…}中的内容为可选项

  • << : 主机发给模组的 COMMAND

  • >> : 模组回复主机的 RESPONSE/EVENT

指令格式

AT+Command{=Param1{,Param2{,Param3…}}}<CR><LF>
  • 所有的指令使用 AT 开头,使用 <CR><LF> 结尾

  • <CR> 代表回车符,对应 HEX 为 0x0D

  • <LF> 代表换行符,对应 HEX 为 0x0A

  • 若指令包含参数,参数应使用 = 分隔

  • 若指令包含多项参数,参数应使用 , 分隔

  • 若指令有响应返回,响应使用 <CR><LF> 开始,使用 <CR><LF> 结束

  • 模组应当总是返回指令执行的结果 (成功返回 OK,失败时返回 ERR<code>)

Error Code

Meaning

001

Failed

002

Invalid parameter

003

Invalid state

004

Command mismatch

005

Busy

006

Command not supported

007

Profile not turned on

008

No memory

Others

Reserved for future use

Example:
读取模块蓝牙名称
<< AT+NAME
>> +NAME=FSC-BT936D-0123
>> OK

当没有来电时接听电话
<< AT+HFPANSW
>> ERR003

Event格式

<CR><LF>+Indication{=Param1{,Param2{,Param3…}}}<CR><LF>
  • 所有的事件使用<CR><LF>开始, 使用<CR><LF>结束

  • 若事件包含参数, 参数应位于 “=” 后面

  • 若事件包含多项参数, 参数应使用 “,” 分割

  • 使用命令AT+SEP替换默认分隔符以防止冲突

  • 部分事件使用 “-”、”~” 替换 “+”

Example:
手机端通过SPP协议发送”1234567890”
>> +SPPDATA=10,1234567890

拨打电话10086
>> +HFPSTAT=4,3,3
>> +HFPAUDIO=1,0,0
>> +HFPCID=10086
>> +HFPSTAT=6,3,6

第一路耳机HFP连接成功
>> -HFPDEV=ABCD12347890,AirPods

指令表

通用指令

AT+SEP - 读/写Event分隔符

Command

AT+SEP{=Param}

Param

设置范围0x01~0xFF,默认: ‘,’ , 其中‘0’表示0xFF

Response

返回当前分隔符

Description

events/responses的参数可能包含与默认分隔符相同的值,
使用此命令替换默认分隔符以防止冲突。
(通常将默认分隔符“,”替换为十六进制值“xFF”)
Example:读模块的配对记录
<< AT+PLIST
>> +PLIST=1,32808,1C5CF226D773, Tony, iPhone12
>> +PLIST=2,40, A0BC30075421, Samsung S8
>> +PLIST=E
>> OK
Example: 设置分隔符为‘0xFF’
<< AT+SEP=0
>> OK
Example: 再读模块的配对记录
<< AT+PLIST
>> +PLIST=1<FF>32808<FF>1C5CF226D773<FF>Tony, iPhone12
>> +PLIST=2<FF>40<FF> A0BC30075421<FF>Samsung S8
>> +PLIST=E
>> OK

AT+VER - 读取固件版本

Command

AT+VER

Response

+VER=Param1,Param2,Param3

Param1

模块类型

Param2

固件版本

Param3

生产日期

Note

升级固件后,生产日期不会变化

Example:
<< AT+VER
>> +VER=BT936D,V1.0.2,20230802
>> OK

AT+BAUD - 读/写串口波特率

Command

AT+BAUD{=Param}

Param

4800/9600/19200/38400/57600/115200(default)/128000/
230400/256000/460800/512000/921600/1382400

Response

+BAUD=Param

Param

返回当前的波特率

Description

模块将在接收到这条指令后,马上切换波特率

Example:
读取波特率
<< AT+BAUD
>> +BAUD=115200
>> OK

设置波特率
<< AT+BAUD=9600
>> OK

AT+MICGAIN - 设置麦克风音量

Command

AT+MICGAIN{=Param}

Param

Gain (0~15, default:8),支持’+’、’-‘调整

Description

调整输入音量

AT+SPKVOL - 设置扬声器音量

Command

AT+SPKVOL{=Param}

Param

VOL (0~15, default:12),支持’+’、’-‘调整

Description

调整输出音量

Note

通话时调整通话的音量,否则调整音乐的音量

AT+REBOOT - 软件复位

Command

AT+REBOOT

Response

OK

Description

模块将复位

Example:
<< AT+REBOOT
>> OK

AT+RESTORE - 恢复出厂设置

Command

AT+RESTORE

Response

OK

Description

模块将恢复为出厂设置

Example:
<< AT+RESTORE
>> OK

AT+PROFILE - 蓝牙Profile配置

Command

AT+PROFILE{=Param}

Param

以10进制位字段表示,每位表示

BIT[0]

SPP (Serial Port Profile)

BIT[1]

GATT Server (Generic Attribute Profile)

BIT[2]

GATT Client (Generic Attribute Profile)

BIT[3]

HFP-HF (Hands-Free Profile Handsfree)

BIT[4]

HFP-AG (Hands-Free Profile Audio Gateway)

BIT[5]

A2DP Sink (Advanced Audio Distribution Profile)

BIT[6]

A2DP Source (Advanced Audio Distribution Profile)

BIT[7]

AVRCP Controller (Audio/Video remote controller Profile)

BIT[8]

AVRCP Target (Audio/Video remote controller Profile)

BIT[9]

HID Keyboard (Human Interface Profile)

BIT[10]

PBAP Server (Phonebook Access Profile)

BIT[15]

iAP2 (For iOS devices)

Response

+PROFILE=Param

Note

此指令无需设置,

Example:读取当前Profile
<< AT+PROFILE
>> +PROFILE=1531

AT+DEVSTAT - 读设备状态

Command

AT+DEVSTAT

Response

+DEVSTAT=Param

Param

以10进制位字段表示,

BIT[0]

0: Power Off; 1: Power On

BIT[1]

0: BR/EDR Not Discoverable; 1: BR/EDR Discoverable

BIT[2]

0: BLE Not Advertising; 1: BLE Advertising

BIT[3]

0: BR/EDR Not Scanning; 1: BR/EDR Scanning

BIT[4]

0: BLE Not Scanning; 1: BLE Scanning

Example:常用组合和描述

0

Device power off

1

Device power on

3

Device power on, BR/EDR Discoverable

5

Device power on, BR/EDR Not Discoverable, BLE Advertising

7

Device power on, BR/EDR Discoverable, BLE Advertising

13

Device power on, BR/EDR Not Discoverable, BLE Advertising, Scanning nearby BR/EDR devices

AT+ADDR - 读BR/EDR蓝牙MAC地址

Command

AT+ADDR

Response

+ADDR=Param

Param

模块的BR/EDR蓝牙MAC地址(12 Bytes ASCII)

Example:
<< AT+ADDR
>> +ADDR=DC0D30010203
>> OK

AT+LEADDR - 读BLE蓝牙MAC地址

Command

AT+LEADDR

Response

+LEADDR=Param

Param

模块的BLE蓝牙MAC地址(12 Bytes ASCII)

AT+NAME - 读/写BR/EDR蓝牙名称

Command

AT+NAME{=Param1{,Param2}}

Param1

BR/EDR蓝牙名称(1~31 Bytes ASCII)

Param2

使能MAC地址后缀(0-2,default:1)
0: 关闭后缀
1: 开启后缀“-XXXX”(MAC地址后4Byte)
2: 开启后缀“-XXXXXX”(MAC地址后6Byte)

Response

+NAME=Param

Param

蓝牙名称

Description

如果存在参数则设置蓝牙名称,否则只是读取

Example:
读取BR/EDR蓝牙名称
<< AT+NAME
>> +NAME=FSC-BT930-XXXX
>> OK

设置BR/EDR蓝牙名称,且关掉后缀
<< AT+NAME=ABC,0
>> OK

设置BR/EDR蓝牙名称为“ABC”并自动添加地址后缀
<< AT+NAME=ABC,1
>> OK

AT+LENAME - 读/写BLE蓝牙名称

Command

AT+LENAME{=Param1{,Param2}}

Param1

BLE蓝牙名称(1~25 Bytes ASCII)

Param2

使能MAC地址后缀(0-2,default:1)
0: 关闭后缀
1: 开启后缀“-XXXX”(MAC地址后4Byte)
2: 开启后缀“-XXXXXX”(MAC地址后6Byte)

Response

+LENAME=Param

AT+SSP - 读/写BR/EDR配对模式

Command

AT+SSP{=Param}

Param

Pairing mode (0~3, default:2)
(0) Legacy pairing, use pin code for pairing
(1) Secure simple pairing, auto pairing
(2) Secure simple pairing, display yes/no in pairing
(3) Secure simple pairing, passkey compare,
user need to accept/reject pair request with command AT+CFM

Response

+SSP=Param

Note

重启生效

AT+PIN - 读/写配对密码

Command

AT+PIN{=Param}

Param

配对密码(4~15 Bytes ASCII, default:0000)

Response

+PIN=Param

Description

当+SSP=0时,配对密码有效

Example:
查询配对密码
<< AT+PIN
>> +PIN=0000
>> OK

修改配对密码为 1234
<< AT+PIN=1234
>> OK

AT+CFM - 接受/拒绝远端的配对请求

Command

AT+CFM=Param1, Param2

Param1

远端设备的MAC地址(12Bytes)

Param2

0-拒绝远端的配对请求
1-接受远端的配对请求

Description

当+SSP=3时,CFM命令有效

AT+PAIR: 读/写BR/EDR/BLE可发现模式

Command

AT+PAIR=Param

Param

Mode(0-3)
0: Leave BR/EDR/BLE discoverable mode (stop advertising/broadcasting)
1: Enter BR/EDR discoverable mode (start broadcasting)
2: Enter BLE discoverable mode (start advertising)
3: Enter BR/EDR/BLE discoverable mode (start advertising/broadcasting)

Description

如果未连接设备(BR/EDR或BLE),模块将始终可被发现;
如果与远程设备连接,模块将不可被发现,除非收到此命令

AT+PAGE: 读/写BR/EDR可连接模式

Command

AT+PAGE=Param

Param

Mode(0-1)
0: Leave BR/EDR connectable mode (stop paging)
1: Enter BR/EDR connectable mode (start paging)

Description

如果未连接设备,模块将始终处于可连接模式,
如果与远程设备连接,模块将不可连接,除非收到此命令

AT+SCAN - 搜索附近的设备

Command

AT+SCAN=Param1{,Param2{,Param3{,Param4}}}

Param1

扫描方式(0~2)
0: 停止扫描
1: 扫描附近BR/EDR设备
2: 扫描附近BLE设备(部分程序不支持)

Param2

(1~48)扫描时间. unit:1.28s, default:12.8s

Param3

(1~25 Bytes ASCII)过滤名称.

Param4

EDR:(1~25 Bytes ASCII)过滤COD. BLE:1-扫描胎压设备

Description

格式说明参考: +SCAN - 扫描结果 +HFPSTAT - HFP状态

AT+RSSI: 读BR/EDR信号强度

Command

AT+RSSI=Param

Param

当前连接设备的MAC地址

Response

+PIN=Param

Param

RSSI value (-127 ~ 0)

AT+PLIST - 读取/清除配对记录

Command

AT+PLIST{=Param}

Param

(0/1~8/12 Bytes MAC address)
(0) 清除所有配对记录
(1~8) 清除指定索引的配对记录
(MAC) 清除指定地址的配对记录

Response1

+PLIST=Param1, Param2, Param3{,Param4}

Param1

(1~8) 配对设备序号

Param2

以10进制位字段,设备连接的profile,参考AT+PROFILE

Param3

(MAC)配对设备的MAC地址

Param4

(UTF8)配对设备的蓝牙名称

Response2

+PLIST=E 配对记录查询完成

Example:读模块的配对记录
<< AT+PLIST
>> +PLIST=1,32808,1C5CF226D773, iPhone12
+PLIST=2,40, A0BC30075421, Samsung S8
+PLIST=E
>> OK

Example:清除模块的所有配对记录
<< AT+PLIST=0
>> OK

AT+DSCA - 断开所有连接

Command

AT+DSCA{=Param}

Param

(0/1/12 Bytes MAC address)
(0) 断开手机连接的蓝牙
(1) 断开耳机连接的蓝牙
(MAC) 指定地址断开连接
参数缺省则断开所有已连接的蓝牙

Description

模块断开与远程设备的所有蓝牙连接

AT+AUDROUTE - 音频路由管理

Command

AT+AUDROUTE{=Param}

Param

Note: HF1 & HF2 means peer Bluetooth headphones
0 Stop audio routing
1 Route music (a2dp streaming) from Module to HP1/HP2 simultaneously
2 Route voice call (hfp sco) between Module and HP1
3 Route voice call (hfp sco) between Module and HP2
4 Route voice call (hfp sco) between HP1 and HP2 (intercom mode)
5 Route voice call (hfp sco) from Module to HP1/HP2 simultaneously
6 Route music (a2dp streaming) from Module to HP1 only
7 Route music (a2dp streaming) from Module to HP2 only

Description

某些路由模式需要指定固件版本,BT930不支持该指令,有关更多说明,
BT936D仅支持AUDROUTE=2,3切换通话
AT+AUDROUTE=4 支持蓝牙耳机前后对讲(备注:需AT+HFPCFG=0才能生效)
请参阅应用场景: 发射模式连接

AT+FOCUS - 选择连接的音频设备

Command

AT+FOCUS{=Param1{,Param2}}

Param1

(12 Bytes ASCII)目标设备MAC地址/耳机1

Param2

(12 Bytes ASCII)目标设备MAC地址/耳机2

Description

BT936B/BT906/BT936D支持链接两个耳机,BT930只支持链接一个耳机

Example:连接耳机1
<< AT+FOCUS=7C9A1DA36B41
>> OK
Example:清除链接地址,并清除配对记录
<< AT+FOCUS=0
>> OK

HFP指令

AT+HFPSTAT - 读HFP状态

Command

AT+HFPSTAT

Response

+HFPSTAT=Param1,Param2,Param3

Description

格式说明参考: +HFPSTAT - HFP状态

AT+HFPCONN - 建立HFP连接

Command

AT+HFPCONN{=Param}

Param

目标设备MAC地址(12 Bytes ASCII)

Description

如果参数不存在,模块将重新连接到最后一个HFP配对过的设备

Example:连接最后一个配对过的设备
<< AT+HFPCONN
>> OK
Example:连接指定MAC地址的设备
<< AT+HFPCONN=1C5CF226D773
>> OK

AT+HFPDISC - 断开HFP连接

Command

AT+HFPDISC

Description

断开当前与远程设备的HFP连接

AT+HFPDIAL - 重拨/拨打电话号码

Command

AT+HFPDIAL{=Param}

Param

电话号码 (1~25 Bytes ASCII)

Description

如果存在参数,请拨打指定号码,否则重拨

Example:重拨
<< AT+HFPDIAL
>> OK
Example:拨打号码 “075527924639”
<< AT+HFPDIAL=075527924639
>> OK

AT+HFPDTMF - 发送DTMF

Command

AT+HFPDTMF{=Param}

Param

DTMF (0~9/#/*)

Example:通话时发送DTMF “#”
<< AT+HFPDTMF=#
>> OK

AT+HFPANSW - 来电接听

Command

AT+HFPANSW

Description

来电接听

AT+HFPCHUP - 来电去电拒接/挂断

Command

AT+HFPCHUP

Description

拒绝来电或挂断去电/通话

AT+HFPADTS - 语音切换

Command

AT+HFPADTS=Param

Param

0: 将语音音频从模块传输到远程设备
1: 将语音音频从远程设备传输到模块

Description

如果参数缺省,则交替切换

AT+HFPVR - 开始/停止远程设备的语音识别

Command

AT+HFPVR=Param

Param

0-停止 1-开始

Description

开始/停止远程设备的语音识别(例如iOS设备的Siri)

AT+HFPINFO - 读HFP当前的信息

Command

AT+HFPINFO

Description

返回当前HFP的状态,信号强度,电池,设备名等信息

AT+MICMUTE - 静音麦克风

Command

AT+MICMUTE=Param

Param

0-不静音 1-静音

Description

通话时静音本地麦克风

A2DP/AVRCP指令

AT+A2DPSTAT - 读A2DP状态

Command

AT+A2DPSTAT

Response

+A2DPSTAT=Param1,Param2,Param3

Description

格式说明参考: +A2DPSTAT - A2DP状态

AT+A2DPCONN - 建立A2DP连接

Command

AT+A2DPCONN{=Param}

Param

目标设备MAC地址(12 Bytes ASCII)

Description

如果参数不存在,模块将重新连接到最后一个A2DP配对过的设备

AT+A2DPDISC - 断开A2DP连接

Command

AT+A2DPDISC

Description

断开当前与远程设备的A2DP连接

AT+A2DPINFO - 读A2DP当前的信息

Command

AT+A2DPINFO

Description

返回当前A2DP的状态,远端设备名等信息

AT+AVRCPSTAT - 读AVRCP状态

Command

AT+AVRCPSTAT

Response

+AVRCPSTAT=Param1,Param2,Param3

Description

格式说明参考: +AVRCPSTAT - AVRCP状态

AT+AVRCPCFG - 读/写AVRCP配置

Command

AT+AVRCPCFG{=Param}

Param

以10进制位字段表示,default:3,每位表示:

BIT[0]

自动获取音乐ID3信息(标题,艺术家,专辑).默认:1

BIT[1-3]

如果大于0,则自动获取音乐状态(播放进度)。 默认:1(second)

BIT[4]

播放器浏览功能启用/禁用,默认不支持

BIT[5]

指定文件夹自动拉取媒体封面图片,默认不支持

Example: 读AVRCP配置
<< AT+AVRCPCFG
>> +AVRCPCFG=1
OK
Example: 设置成5秒上报播放进度
<< AT+AVRCPCFG=9
>> OK

AT+PLAYPAUSE - 播放/暂停

Command

AT+PLAYPAUSE

Description

根据当前播放状态将播放或暂停命令发送到远端媒体播放器

AT+PLAY - 播放

Command

AT+PLAY

Description

发送播放命令到远端媒体播放器

AT+PAUSE - 暂停

Command

AT+PAUSE

Description

发送暂停命令到远端媒体播放器

AT+STOP - 停止

Command

AT+STOP

Description

发送停止命令到远端媒体播放器

AT+FORWARD - 下一曲

Command

AT+FORWARD

Description

发送下一曲命令到远端媒体播放器

AT+BACKWARD - 上一曲

Command

AT+BACKWARD

Description

发送上一曲命令到远端媒体播放器

PBAP指令

AT+PBSTAT - 读PBAP状态

Command

AT+PBSTAT

Response

+PBATAT=Param

Description

格式说明参考: +PBSTAT - PBAP状态

AT+PBCONN - 建立PBAP连接

Command

AT+PBCONN{=Param}

Param

目标设备MAC地址(12 Bytes ASCII)

Description

如果参数不存在,模块将使用当前HFP的地址连接.
一些固件支持,发送AT+PBDOWN时自动连接PBAP

AT+PBDISC - 断开PBAP连接

Command

AT+PBDISC

Description

断开当前与远程设备的PBAP连接

AT+PBDOWN - 下载电话本

Command

AT+PBDOWN=Param1{,Param2}

Param1

电话本类型(0-5)
(0) Phonebook (SIM Storage)
(1) Phonebook (Phone Storage)
(2) Received call log
(3) Dialed call log
(4) Missed call log
(5) All call log

Param2

下载数量 (1~65535, default:3000 for phonebook; 50 for call log)

Description

对于某些手机(例如iPhone),必须在手机的蓝牙设置中打开联系人下载权限
请参阅应用场景: Phonebook下载

AT+PBABORT - 取消电话本下载

Command

AT+PBABORT

Description

取消电话本下载

SPP指令

AT+SPPSTAT - 读SPP状态

Command

AT+SPPSTAT

Response

+SPPATAT=Param

Description

格式说明参考: +SPPSTAT - SPP状态

AT+SPPCONN - 建立SPP连接

Command

AT+SPPCONN{=Param}

Param

目标设备MAC地址(12 Bytes ASCII)

AT+SPPDISC - 断开SPP连接

Command

AT+SPPDISC

Description

断开当前与远程设备的SPP连接

AT+SPPSEND - 通过SPP发数据

Command

AT+SPPSEND=Param1,Param2

Param1

Payload length (1~492)

Param2

Payload (1~492 Bytes UTF8)

Description

如果透传模式开启,该指令将会被禁用

Example: 通过SPP给远程设备发送数据 “1234567890”
<< AT+SPPSEND=10,1234567890
>> OK

GATT指令

AT+GATTSTAT - 读GATT状态

Command

AT+GATTSTAT

Response

+GATTATAT=Param

Description

格式说明参考: +GATTSTAT - GATT状态

AT+GATTDISC - 断开GATT连接

Command

AT+GATTDISC

Description

断开当前与远程设备的GATT连接

AT+GATTSEND - 通过GATT发数据

Command

AT+GATTSEND=Param1,Param2

Param1

Payload length (1~492)

Param2

Payload (1~492 Bytes UTF8)

Description

如果透传模式开启,该指令将会被禁用

Example: 通过GATT给远程设备发送数据 “1234567890”
<< AT+SPPSEND=10,1234567890
>> OK

Events表

通用指示

+PWRSTAT - 上电状态

Format

+PWRSTAT=Param

Param

0-Powering off 1-Powering on(booting)

Description

在上下电状态下,不建议使用AT命令

+SCAN - 扫描结果

Format1

+SCAN =Param1,Param2,Param3, Param4,Param5,Param6

Param1

索引

Param2

RSSI (-127 ~ -1)

Param3

设备地址类型 (0~3)
(0) BR/EDR address
(1) LE public address
(2) LE random address
(3) iOS device with Carplay support

Param4

MAC地址 (12 Bytes ASCII)

Param5

BR/EDR设备名称或者LE设备广播数据

Param6

设备类型(6 Bytes ASCII)

Format2

+SCAN=E: 停止扫描

Example: 扫描BR/EDR附近设备
<< AT+SCAN=1
>> OK
+SCAN=1,-32,3,B019C66209FA,wt-iphone,7A020C
+SCAN=2,-74,0,DC0D30000053,BW226,040680
+SCAN=3,-43,0,00158354F994,LAPTOP-3L,120104
+SCAN=E

+ADV - 胎压扫描结果

Format1

+ADV=Param

Param

前12字节为胎压地址,后面数据则为胎压数据

Example: 搜索名字为TPMS的胎压设备,持续时间1分钟
<< AT+SCAN=2,60,TPMS,1
>> OK +DEVSTAT=23
+ADV=EF89ED86324E685A00010000010101061D49990000

+PAIRREQ - 配对请求

Format

+PAIRREQ=Param1,Param2{,Param3}

Param1

Passkey (000000~999999)

Param2

当前配对设备的MAC地址(12 Bytes ASCII)

Param3

当前配对设备的名称

+PAIRED - 配对结果

Format

+PAIRED=Param1,Param2

Param1

配对结果 (0)-成功 (1~255)-失败原因

Param2

当前配对设备的MAC地址(12 Bytes ASCII)

+SPKVOL - 音量输出大小

Format

+SPKVOL=Param1,Param2

Param1

A2DP的音量大小

Param2

HFP的音量大小

HFP指示

+HFPSTAT - HFP状态

Format

+HFPSTAT=Param1,Param,Param3

Param1

(0~10)和手机端蓝牙连接的HFP状态
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Outgoing call
(5) Incoming call
(6) Active call

Param2

状态同上,第一路蓝牙耳机HFP的状态

Param3

状态同上,第二路蓝牙耳机HFP的状态

Example: 拨打10086
<< AT+HFPDIAL=10086
>> +HFPSTAT=4,1,1
>> +HFPAUDIO=1,0,0
>> +HFPCID=10086
>> +HFPCIE=10086
Example: 来电且号码是13265463800
>> +HFPSTAT=5,1,1
>> +HFPCID=13265463800
>> +HFPCIE=tony
>> +HFPAUDIO=1,0,0

+HFPCID - 来电/去电电话号码

Format

+HFPCID=Param

Param

(1~25 Bytes ASCII), 电话号码

+HFPCIE - 来电/去电电话名称

Format

+HFPCID=Param

Param

(UTF8), 电话名称

+HFPDEV - HFP远端设备信息

Format

+HFPDEV=Param1{,Param2}

Param1

(12 Bytes ASCII), 当前HFP连接远端设备的MAC地址

Param2

(UTF8), 当前HFP连接远端设备的名称

Note

当指示-HFPDEV表示第一路耳机的信息,当指示~HFPDEV表示第二路耳机的信息

Example: HFP连接成功
>> +HFPDEV=1C5CF226D774,iPhone

+HFPAUDIO - HFP语音音频状态

Format

+HFPAUDIO=Param1,Param2,Param3

Param1

和手机端连接蓝牙的HFP语音状态
(0) HFP语音音频断开连接,音频输入/输出切换到远端设备
(1) HFP语音建立连接,音频输入/输出切换到模块

Param2

状态同上,表示第一路耳机HFP语音状态

Param3

状态同上,表示第二路耳机HFP语音状态

+HFPSIG - HFP远端设备网络信号强度

Format

+HFPSIG=Param

Param

(0~5) 远端设备的网络信号强度

+HFPROAM - HFP远端设备漫游状态

Format

+HFPROAM=Param

Param

(0/1) 远端设备的漫游状态

+HFPBATT - HFP远端设备电池电量

Format

+HFPBATT=Param1,Param2,Param3

Param1

(-1~5) 远程设备的电池电量,手机端的电池电量

Param2

(-1~9) 远程设备的电池电量,第一路耳机的电池电量

Param3

(-1~9) 远程设备的电池电量,第二路耳机的电池电量

Note

-1表示未获取到电池电量;
由于这个状态”非蓝牙规范定义的状态”,因此有一些耳机(比如:Airpods)不支持

+HFPNET - HFP远端设备网络运营商

Format

+HFPNET=Param

Param

(UTF8)远程设备的网络运营商选择

+HFPMANU - HFP远端设备制造商

Format

+HFPMANU=Param

Param

(UTF8)远程设备制造商

+HFPNUM - HFP远端设备本机号码

Format

+HFPNUM=Param

Param

(ASCII)远端设备的本机号码

+HFPIBR - HFP远端设备支持来电铃声

Format

+HFPIBR=Param

Param

0-不支持 1-支持

Description

指示当前连接的手机是否支持来电铃声

+HFPRING - HFP远端设备来电铃声指示

Format

+HFPRING=Param

Param

0-不支持in-bang-ring 1-支持in-band-ring

Description

来电时手机正在响铃,如果远程手机不支持in-band-ring,模块播放本地铃声

+HFPVR - HFP远端设备语音唤醒

Format

+HFPVR=Param

Param

0-停止唤醒语音 1-唤醒语音

Description

此事件用来指示唤醒远端语音设备,如siri

+HFPCFG - 读/写HFP配置

Format

+HFPCFG=Param

Param

以10进制位字段表示,default:3

BIT[0]

0-HFP异常断开时,不回链最后断开的设备,1-HFP异常断开时,不回链最后断开的设备

BIT[1]

0-关闭16k,1-打开16k耳机通话

BIT[2]

0-关闭三方通话功能,1-打开三方通话功能(需要固件支持三方功能)

Description

关闭16K耳机通话,才能支持前后对讲功能

A2DP/AVRCP指示

+A2DPSTAT - A2DP状态

Format

+A2DPSTAT=Param1,Param2,Param3

Param1

和手机蓝牙连接的A2DP状态
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Paused
(5) Streaming

Param2

状态同上,第一路蓝牙耳机A2DP的状态

Param3

状态同上,第二路蓝牙耳机A2DP的状态

+A2DPDEV - A2DP远端设备信息

Format

+A2DPDEV=Param1{,Param2}

Param1

(12 Bytes ASCII), 当前A2DP连接远端设备的MAC地址

Param2

(UTF8), 当前A2DP连接远端设备的名称

Note

当指示-A2DPDEV表示第一路耳机的信息,当指示~A2DPDEV表示第二路耳机的信息

+AVRCPSTAT - AVRCP状态

Format

+AVRCPSTAT=Param1,Param2,Param3

Param1

和手机蓝牙连接的AVRCP状态
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected

Param2

状态同上,第一路蓝牙耳机AVRCP的状态

Param3

状态同上,第二路蓝牙耳机AVRCP的状态,目前仅支持一路和耳机的AVRCP连接

+PLAYSTAT - 媒体播放器播放状态

Format

+PLAYSTAT=Param

Param

(0) Stopped
(1) Playing
(2) Paused
(3) Fast Forwarding
(4) Fast Rewinding

+TRACKSTAT - 媒体播放器播放进度

Format

+TRACKSTAT=Param1,Param2,Param3

Param1

(0~4), 媒体播放器状态

Param2

(Decimal ASCII),当前音乐播放的时间(秒)

Param3

(Decimal ASCII),当前音乐的总时间(秒)

+TRACKINFO - 媒体音乐信息

Format

+TRACKINFO=Param1,Param2,Param3

Param1

标题

Param2

艺术家

Param3

专辑

Example: 手机播放歌曲“Creep-Radio Head”
>> +TRACKINFO=Creep , Radiohead , Pablo Honey

+CTPAUSE - 暂停

Description

远端设备发送暂停命令

+CTPLAY - 播放

Description

远端设备(蓝牙耳机)发送播放命令

+CTSTOP - 停止

Description

远端设备(蓝牙耳机)发送停止命令

+CTBACK - 上一曲

Description

远端设备(蓝牙耳机)发送上一曲命令

+CTFWD - 下一曲

Description

远端设备(蓝牙耳机)发送下一曲命令

PBAP指示

+PBSTAT - PBAP状态

Format

+PBSTAT=Param

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Downloading

+PBCNT - 远端设备的电话簿条目

Format

+PBCNT=Param

Param

远端设备的电话簿条目

+PBDATA - 电话本数据

Format1

+PBDATA=Param1,Param2,Param3{,Param4}

Param1

类型
(0) Phonebook (SIM Storage)
(1) Phonebook (Phone Storage)
(2) Received call log
(3) Dialed call log
(4) Missed call log

Param2

电话名称

Param3

电话号码

Param4

(15 Bytes ASCII), 当前下载通话记录,则有此参数
Format:
Year(4Bytes) Month(2Bytes) Day(2Bytes) T(1Byte) Hour(2Bytes)
Minute(2Bytes) Second(2Bytes). e.g. 20161012T152826 represents
2016/10/12/15/28/26

Format2

+PBDATA=E 下载完成

Description

某些手机可能没有通话时间

Example: 下载所有电话本
<< AT+PBDOWN=1
>> +PBCNT=234
+PBDATA=1 , Jack , 18219146201
+PBDATA=1 , kenan , 8613771972680
……
+PBDATA=E

Example: 下载10条已拨电话
<< AT+PBDOWN=3,10
>> +PBDATA=3 , China Mobile , 10086 , 20171013T103516
+PBDATA=3 , Jerry , 18688967507 , 20171012T152826
……
+PBDATA=E

SPP指示

Note

由于IAP2(Apple Accessory Protocol)和AAP(Android Auto Protocol)的指示和SPP几乎相同,分别是:

+IAPSTAT, +IAPDATA for iAP2 profile

+AAPSTAT, +AAPDATA for AAP profile

文档将忽略这些指示说明, 默认BT930、BT936B不支持该指令.

+SPPSTAT - SPP状态

Format

+SPPSTAT=Param

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected

+SPPDATA - SPP接收数据

Format

+SPPDATA=Param1,Param2

Param1

Payload length

Param2

Payload

Example: 通过SPP从远端设备接收到数据“ 1234567890”
<< +SPPDATA=10,1234567890

GATT指示

+GATTSTAT - GATT状态

Format

+GATTSTAT=Param

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected

+GATTDATA - GATT接收数据

Format

+SPPDATA=Param1,Param2

Param1

Payload length

Param2

Payload

Example: 通过GATT从远端设备接收到数据“ 1234567890”
<< +GATTDATA=10,1234567890

应用场景

Profile初始化及修改参数

下图展示了Profile初始化以及修改名称

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over host, bt: Profile初始化

bt -> host: +DEVSTAT=0
bt -> host: +PWRSTAT=1
bt -> host: +VER=BT930,V3.6.0,20220922
bt -> host: +PROFILE=1195
bt -> host: +SPPSTAT=1
bt -> host: +GATTSTAT=1
bt -> host: +A2DPSTAT=1
bt -> host: +AVRCPSTAT=1
bt -> host: +HFPSTAT=1
bt -> host: +PBSTAT=1
bt -> host: +DEVSTAT=1
bt -> host: +DEVSTAT=7 (可发现打开,手机可以找到bt且可以连接)

rnote over host, bt: 修改蓝牙名称CARKIT,且不带地址码后缀,并校验
host -> bt: AT+NAME
bt -> host: +NAME=FSC-BT930-1E49
host -> bt: AT+NAME=CARKIT,0
bt -> host: OK
host -> bt: AT+NAME
bt -> host: +NAME=CARKIT

@enduml

MCU 修改设备名CARKIT参考代码,修改任何参数建议先查询再修改最后校验:

 1void change_name(void)
 2{
 3    uart_send("AT+NAME\r\n");
 4    if(uart_read("+NAME",name_buf))
 5    {
 6        if(memcmp(name_buf,"CARKIT",6))
 7        {
 8            uart_send("AT+NAME=CARKIT,0\r\n");      //defalut disable MAC address suffix
 9            uart_send("AT+NAME\r\n"); // read bt name
10            if(uart_read("+NAME",name_buf))
11            {
12                if(memcmp(name_buf,"CARKIT",6))
13                {
14                    //change name fail
15                }
16                else
17                {
18                    //change name success
19                }
20            }
21        }
22    }
23}

接收模式连接

Note

接收模式BT930、BT936D模块可以支持

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over host, bt: Profile初始化

bt -> host: +PWRSTAT=1
bt -> host: ...
bt -> host: +DEVSTAT=7

rnote over host, bt: 手机搜索BT并发起连接
bt -> host: +A2DPSTAT=3,1,1 (A2DP已连接)
bt -> host: +A2DPDEV=8C861E94A09E,Navy
bt -> host: +AVRCPSTAT=3,1,1 (AVRCP已连接)
bt -> host: +ABSVOL=1 (手机支持绝对音量)
bt -> host: +HFPSTAT=3,1,1 (HFP已连接)
bt -> host: +HFPDEV=8C861E94A09E,Navy
bt -> host: +HFPSIG=3
bt -> host: +HFPBATT=4,-1,-1
bt -> host: +HFPROAM=0
bt -> host: +HFPNUM=8618620277271
bt -> host: +HFPMANU=AppleInc.

host -> bt: AT+HFPDIAL=10086 (拨打"10086")
bt -> host: OK
bt -> host: +HFPSTAT=4,1,1
bt -> host: +HFPAUDIO=1,0,0 (建立audio)
bt -> host: +HFPCID=10086
bt -> host: +HFPCIE=10086
bt -> host: +HFPSTAT=6,1,1 (call active)
host -> bt: AT+HFPCHUP(挂断电话)
bt -> host: +HFPSTAT=3,1,1
bt -> host: +HFPAUDIO=0,0,0 (断开audio)

host -> bt: AT+PLAY(播放音乐)
bt -> host: +A2DPSTAT=5,1,1
bt -> host: +PLAYSTAT=1
bt -> host: +TRACKINFO=song,artist,album
bt -> host: +TRACKSTAT=1,1,240
bt -> host: +TRACKSTAT=1,2,240
host -> bt: AT+PAUSE(暂停音乐)
bt -> host: +PLAYSTAT=2
bt -> host: +A2DPSTAT=4,1,1

@enduml

发射模式连接

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over bt, host: scan nearby headset
host -> bt: AT+SCAN=1
bt -> host: +SCAN=1,-56,0,FF733EEF25E9,N-612,240408
bt -> host: +SCAN=2,-78,0,7C9A1DA36B41,AirPods,240404
bt -> host: +SCAN=E

rnote over bt, host:(add 2 device to foucu list)
host -> bt: AT+FOCUS=FF733EEF25E9,7C9A1DA36B41
bt -> host: +A2DPSTAT=3,3,1 (devA a2dp connected)
bt -> host: +A2DPSTAT=3,3,3 (devB a2dp connected)
bt -> host: +HFPSTAT=3,3,1 (devA hfp connected)
bt -> host: +HFPSTAT=3,3,3 (devB hfp connected)

host -> bt: AT+PLAY (send music play command to phone)
bt -> host: +A2DPSTAT=5,4,4 (a2dp streaming)
bt -> host: +A2DPSTAT=5,5,4 (devA a2dp streaming)
bt -> host: +A2DPSTAT=5,5,5 (devB a2dp streaming)

host -> bt: AT+PAUSE(send music pause command to phone)
bt -> host: +A2DPSTAT=4,5,5 (a2dp pause)
bt -> host: +A2DPSTAT=4,4,5 (devA a2dp pause)
bt -> host: +A2DPSTAT=4,4,4 (devB a2dp pause)

host -> bt: AT+HFPDIAL=10086
host -> bt: AT+AUDROUTE=2 (establish devA hfp audio)
bt -> host: +HFPSTAT=4,3,3
bt -> host: +HFPAUDIO=1,0,0 (voice connected,phone)
bt -> host: +HFPAUDIO=1,1,0 (voice connected,devA)
bt -> host: +HFPCID=10086
bt -> host: +HFPCIE=10086
bt -> host: +HFPSTAT=6,6,3
host -> bt: AT+AUDROUTE=3 (establish devB hfp audio)
bt -> host: +HFPAUDIO=1,0,1 (voice connected,devA)
bt -> host: +HFPSTAT=6,3,6

host -> bt: AT+HFPCHUP
bt -> host: +HFPSTAT=3,3,3
bt -> host: +HFPAUDIO=0,0,0(voice disconnected)

@enduml

Phonebook下载

Note

部分固件不支持下载时,自动连接PBAP, 需发送AT+PBCONN连接PBAP再下载

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over host, bt: HFP connected

bt -> host: ...
bt -> host: +HFPSTAT=3

rnote over host, bt: 下载所有电话本
host -> bt: AT+PBDOWN=1
bt -> host: +PBSTAT=2
bt -> host: +PBSTAT=3 (PBAP已连接)
bt -> host: +PBSTAT=4 (PBAP下载中)
bt -> host: +PBDATA=1,本机号码,+8618620277272
bt -> host: +PBDATA=1,张三,0571-85592192
bt -> host: ...
bt -> host: +PBDATA=1,jerry,18909731215
bt -> host: +PBDATA=E (下载完成)
bt -> host: +PBSTAT=3

rnote over host, bt: 下载50条通话记录
host -> bt: AT+PBWODN=5,50
bt -> host: +PBDATA=3,yidong,+10086,20200213T114247
bt -> host: ...
bt -> host: +PBDATA=2,andy,85592192,20200212T104202
bt -> host: +PBDATA=E
bt -> host: +PBSTAT=3

@enduml

附录

Note

如需升级最新版本请参考 空中升级说明

下载 PDF版本

下载PDF版本