FSC-BT1035 指令手册

介绍

[English]

描述

本设计指南适用于工程师开发 FSC-BT1035 系列蓝牙模组,同样也适合BT806、BT802系列模组

模组默认参数

Name

FSC-BT1035

LE-Name

FSC-BT1035-LE

Pin Code

0000

Secure Simple Pairing Mode

ON

UART Baudrate

115200/8/N/1

硬件说明

引脚图

以|ModuleName|为例:

_images/BT1035_pin_map.png

引脚描述

Pin

Pin Name

Type

Pin Descriptions

4

I2S_CLK

I/O

I2S BCLK

5

I2S_IN

I

I2S DATA IN

6

I2S_OUT

O

I2S DATA OUT

7

I2S_WS

I/O

I2S SYNC

8

RESET

I

低电平复位

13

UART_TX

O

串口TX

14

UART_RX

I

串口RX

15

UART_CTS

I/O

串口流控脚

16

UART_RTS

I/O

串口流控脚(默认为PA脚)

17
LED0
I/O
配对模式时输出方波,
蓝牙已连接输出高电平

32

GND

GND

GND

33

VDD

VDD

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

34

SYS_CTRL

I

Delay 100ms, pull high

36

VDD_IO

I

pio supply

37

USB_DP

USB D+

38

USB_DN

USB D-

43

MIC_LP

Audio

MIC0/Line_IN differential L input, positive

44

MIC_LN

Audio

MIC0/Line_IN differential L input, negative

45

MIC_BIAS

Audio

MIC Power Supplies

46

SPK_RN

Audio

Headphone/speaker differential R output, negative

47

SPK_RP

Audio

Headphone/speaker differential R output, positive

48

SPK_LN

Audio

Headphone/speaker differential L output, negative

49

SPK_LP

Audio

Headphone/speaker differential L output, positive

51

EXT_ANT

ANT

改变天线附近的0欧电阻,可以外接蓝牙天线

硬件设计说明

  • 模组简易测试只需要连接VDD/VDD_IO/VREG_IN/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透传服务

类型

UUID

权限

描述

Service

0xFFF0

透传服务

Write

0xFFF2

Write,Write Without Response

APP发给模组

Notify

0xFFF1

Notify

模组发给APP

指令说明

规范说明

适用于整个文档 - {} : 包括与{…}中的内容为可选项 - << : 主机发给模组的 COMMAND - >> : 模组回复主机的 RESPONSE/EVENT

指令格式

AT+Command{=Param1{,Param2{,Param3…}}}<CR><LF>
  • All commands start with “AT”, end with <CR><LF>

  • <CR> means “carriage return”, corresponds to hex value 0x0D

  • <LF> means “line feed”, corresponds to hex value 0x0A

  • If Command has Parameter, Parameter follows behind ‘=’

  • If Command has multiple Parameters, Parameter must be separated by ‘,’

  • If Command has Response, Response starts with <CR><LF>, ends with <CR><LF>

  • Module will always report command’s execution result by using “OK” for success or “ERROR” for failure

  • 所有的指令使用 AT 开头,使用 <CR><LF> 结尾

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

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

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

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

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

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

Example:
读取模块经典蓝牙名称
<< AT+NAME
>> +NAME=FSC-BT1035XXXX
>> OK

Example:
当没有来电时接听来电
<< AT+HFPANSW
>> ERROR

Event格式

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

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

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

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

指令表

通用指令

AT+HELP - 查询固件功能和命令说明

Command

AT+HELP

Response

<FIRMWARE FUNCTION: appropriate working scenario >
<OTA PATH: latest suitable firmware path on server for upgrade On-The-Air>
<ENABLED PROFILES: LINKS: ON/OFF>
<COMMAND SUMMARY: DESCRIPTION: PROFILE CATEGORY>

Description

使用help命令获取基本摘要信息

AT+VER - 读取固件版本

Command

AT+VER

Response

+VER=Param1,Param2,Param3

Param1

模块类型

Param2

固件版本

Param3

生产日期

Example:
<< AT+VER
>> +VER=BT1035,V2.6.1,20220922
>> OK

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

Command

AT+BAUD{=Param}

Param

9600/19200/38400/57600/115200(default)/230400/460800/921600

Response

+BAUD=Param

Description

模组波特率将立即更改为设定值,或重启后生效,这取决于固件版本

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

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

AT+I2SCFG - 设置I2S格式

Command

AT+I2SCFG{=Param}

Param

以10进制位字段表示,默认为0,每位表示

BIT[0]

0:disable; 1:enable

BIT[1]

0:master; 1:slave

BIT[2]

0:FS=48000Hz;1:FS=44100Hz

BIT[3]

0:left justified; 1:right justified

BIT[4]

0:data 1 bit delay; 1:data no delay

BIT[5-6]

00: bit depth=16bits
01: bit depth=24bits
10: bit depth=32bits

Response

+I2SCFG=Param

Example:常用组合配置如下:

1

I2S Master; Sample rate=48000Hz; Resolution=16bits; Bit clock= 48000*16*2ch=1.536Mhz

3

I2S Slave; Sample rate=48000Hz; Resolution=16bits; Bit clock= 48000*16*2ch=1.536Mhz

65

I2S Master; Sample rate=48000Hz; Resolution=32bits; Bit clock= 48000*32*2ch=3.072Mhz

67

I2S Slave; Sample rate=48000Hz; Resolution=32bits; Bit clock= 48000*32*2ch=3.072Mhz

AT+MICGAIN - 设置麦克风音量

Command

AT+MICGAIN{=Param}

Param

Gain (0~15, default:10)

Description

调整Codec模拟输入音量,I2S模式设置无效

AT+SPKVOL - 设置扬声器音量

Command

AT+SPKVOL{=Param}

Param

音频扬声器音量 (0~15, default:10)

AT+REBOOT - 软件复位

Command

AT+REBOOT

Response

OK

Description

模块将复位

AT+RESTORE - 恢复出厂设置

Command

AT+RESTORE

Response

OK

Description

模块将恢复为出厂设置

AT+BTEN - 开/关蓝牙

Command

AT+BTEN{=Param}

Param

0-关闭蓝牙 1-打开蓝牙

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)

Response

+PROFILE=Param

Description

无法同时启用GATT Server and Client, HFP Sink and Source,A2DP Sink and Source,AVRCP Controller and Target
BT1035、BT806不支持HFP-HF、 A2DP Sink、AVRCP Controller、HID Keyboard、PBAP
Example:
读取当前Profile
<< AT+PROFILE
>> +PROFILE=341
Example:
使能SPP, GATT Server, HFP Source, A2DP Source profile,其他不使能
<< AT+PROFILE=83
>> OK

AT+AUTOCONN - 设置蓝牙上电重连Profile

Command

AT+AUTOCONN{=Param}

Param

(0~15, default:3)
(0) Turn Off
(1-15) Turn on and reconnect times

Response

+AUTOCONN=Param

Description

重新上电后模组将尝试自动连接最后一次连接的设备

AT+STAT - 读所有Profile状态

Command

AT+STAT

Response

+STAT=Param1, Param2, Param3…

Param1

DEVSTAT

Param2

SPPSTAT

Param3

GATTSTAT

Param4

HFPSTAT

Param5

A2DPSTAT

Param6

AVRCPSTAT

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/1,default:1)
0: 关闭后缀
1: 开启后缀“-XXXX”(MAC地址后4Byte)

Response

+NAME=Param

Description

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

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

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

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

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

Command

AT+LENAME{=Param1{,Param2}}

Param1

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

Param2

使能MAC地址后缀(0/1,default:0)
0: 关闭后缀
1: 开启后缀“-XXXX”(MAC地址后4Bytes)

Response

+LENAME=Param

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

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

AT+COD - 读/写设备类型

Command

AT+COD=Param

Param

设备类型(6 bytes ASCII, default:5A020C Handsfree device)

Response

+COD=Param

相关配置参考: COD.

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

Command

AT+PAIR=Param

Param

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

Description

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

AT+SCAN - 搜索附近的设备

Command

AT+SCAN=Param1{,Param2}}

Param1

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

Param2

BLE扫描上报类型或BR/EDR扫描时间
BLE扫描 0: BLE上报类型与BR/EDR一致 ; 1: 上报BLE广播数据
BR/EDR扫描 1 - 255(默认: 5) 单位:秒

Description

Format description reference: +SCAN - 扫描结果

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

Command

AT+PLIST{=Param}

Param

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

Response1

+PLIST=Param1, Param2{,Param3}

Param1

(1~8) 配对设备序号

Param2

(MAC) 配对设备的MAC地址

Param3

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

Response2

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

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

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

AT+DSCA - 断开所有连接

Command

AT+DSCA

Description

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

AT+TPMODE - 打开/关闭透传模式

Command

AT+TPMODE{=Param}

Param

模式(0~1,默认0) 0: 指令模式 1: 透传模式

Response

+TPMODE=Param

Description

当在SPP/GATT协议下连接并且打开透传模式时,AT指令将会被禁用,
通过UART接收的每个字节将被发送到远端

AT+AUXCFG - 配置音频输入模式

Command

AT+AUXCFG{=Param}

Param

模式(0-3,默认:0)
0: USB Mode
1: LineIn Mode
2: Spdif Mode
3: I2S Mode

Description

该模式用来配置模组的音频输入模式;
BT1035,BT806不支持SPDIF
Example:
将模组设置为Line-in输入模式
<< AT+AUXCFG=1
>> OK

AT+PRINT - 打开/关闭日志打印

Command

AT+PRINT{=Param}

Param

0-关闭 1-打开 ; 默认: 打开日志打印

AT+MUTEPIO - Set PA_MUTE pin

Command

AT+MUTEPIO{=Param}

Param

PIO(0 ~ 63, default:PIO2)

AT+LINKKEY - 获取链路密钥

Command

AT+LINKKEY=Param

Param

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

Response

+LINKKEY=Param1,Param2

Param1

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

Param2

设备的链路密钥

Description

只能获取已配对过设备的链路密钥

AT+RSSI - 获取信号强度

Command

AT+RSSI=Param

Param

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

Response

+RSSI=Param1,Param2

Param1

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

Param2

设备信号强度

Description

获取已配对设备的信号强度

AT+MUTEDELAY - 获取/设置静音延迟

Command

AT+MUTEDELAY{=Param}

Param

静音延迟(0 ~ 60, 默认:20) 单位:50ms

AT+LINEPIO - 获取/设置模拟输入检测PIO

Command

AT+LINEPIO{=Param}

Param

模拟输入检测PIO(0 ~ 63, 默认:PIO44)

AT+LINKCFG - 打开/关闭自动连接

Command

AT+LINKCFG{=Param1{,Param2}}

Param1

0:关闭 1:打开

Param2

0:扫描所有设备 1:打开过滤功能

Description

设置后模组将自动扫描附近的设备5.12s, 并找到信号最强的设备自动连接;
如果模组未被连接,模组会一直扫描附近的设备
打开过滤功能后, +SCAN - 扫描结果 只会上报包含主设备类型里包含音视频特征
(即 COD 按位与0x000400的结果不为0)的设备

Note

BT1035使用AT+LINKCFG, BT806使用AT+AUTOLINK

HFP指令

AT+HFPSTAT - 读HFP状态

Command

AT+HFPSTAT

Response

+HFPSTAT=Param

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+HFPRING - 模拟呼入

Command

AT+HFPRING{=Param}

Param

电话号码 (1~15 Bytes ASCII)

Description

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

Example:
重拨
<< AT+HFPRING
>> OK
Example:
模拟呼入号码075527924639
<< AT+HFPRING=075527924639
>> OK

AT+HFPANSW - 接听来电

Command

AT+HFPANSW

Description

接听来电

AT+HFPCHUP - 拒绝/挂断电话

Command

AT+HFPCHUP

Description

拒接来电或者挂断去电/通话

AT+HFPAUDIO - 建立/结束语音音频

Command

AT+HFPAUDIO{=Param}

Param

0-结束与远程hfp接收器设备的语音音频连接
1-建立与远程hfp接收器设备的语音音频连接

A2DP/AVRCP指令

AT+A2DPSTAT - 读A2DP状态

Command

AT+A2DPSTAT

Response

+A2DPSTAT=Param

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+A2DPCFG - 读/写AVRCP配置

Command

AT+A2DPCFG{=Param}

Param

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

BIT[0]

0: 禁用AAC Codec 1: 启用AAC Codec

BIT[1]

0: 禁用APTX Codec 1: 启用APTX Codec

BIT[2]

0: 禁用APTX-LL Codec 1: 启用APTX-LL Codec

BIT[3]

0: 禁用APTX-HD Codec 1: 启用APTX-HD Codec

BIT[4]

0: 禁用APTX-AD Codec 1: 启用APTX-AD Codec

BIT[5]

0: 禁用LDAC Codec 1: 启用LDAC Codec

Description

BT806不支持

Example:
读当前A2DP配置
<< AT+A2DPCFG
>> +A2DPCFG=0
>> OK
Example:
设置A2DP配置:仅启用AAC编解码
<< AT+A2DPCFG=1
>> OK

AT+A2DPENC - 读A2DP编码器

Command

AT+A2DPENC

Response

+A2DPENC=Param

Param

BT1035: 1:SBC 2:APTX 3:APTX-HD 4:APTX-LL 5:APTX-AD
BT806: 1:SBC 2:FASTSTREAM 3:APTX 4:APTX-LL

AT+A2DPAUDIO - 建立/断开A2DP音频连接

Command

AT+A2DPAUDIO{=Param}

Param

0-断开与远程A2DP接收器设备的A2DP音频连接
1-建立与远程A2DP接收器设备的A2DP音频连接

AT+AVRCPSTAT - 读AVRCP状态

Command

AT+AVRCPSTAT

Response

+AVRCPSTAT=Param

Description

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

AT+AVRCPCONN - 建立AVRCP连接

Command

AT+AVRCPCONN{=Param}

Param

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

Description

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

AT+AVRCPDISC - 断开AVRCP连接

Command

AT+AVRCPDISC

Description

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

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

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

Note

BT1035最大有效载荷长度仅支持236

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+GATTCONN - 建立GATT中心连接

Command

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

Param1

目标设备MAC地址+MAC地址类型 (13 Bytes ASCII)

Param2

Service-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII)

Param3

Write-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII)

Param4

Notify-UUID, Support 16 Bit and 128 Bit(4 Bytes/32 Bytes ASCII)

Description

GATT客户端启用有效

Example:
连接指定的服务端设备
<< AT+GATTCONN=123456ABCDEF0,FFF0,FFF2,FFF1
>> OK

AT+GATTSEND - 通过GATT发数据

Command

AT+GATTSEND=Param1,Param2

Param1

Payload length (1~492)

Param2

Payload (1~492 Bytes UTF8)

Description

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

Note

BT1035最大有效载荷长度仅支持236

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

Events表

通用指示

+SCAN - 扫描结果

Format

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

Param1

索引

Param2

设备地址类型 (0~2)
(0) LE public address
(1) LE random address
(2) BR/EDR address

Param3

MAC地址 (12 Bytes ASCII)

Param4

RSSI (-127 ~ -1)

Param5

Param6的大小(如果存在)

Param6

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

Param7

设备类别

Example:
扫描附近BR/EDR设备
<< AT+SCAN=1
>> OK
>> +SCAN=1,2,DC0D30000057,-42,11,FSC-BT1026C,240408
>> +SCAN=2,2,DC0D30000012,-70,16,FSC-BT1006A-0012,240404
>> +SCAN=3,2,DC0D300011B9,-70,14,222qqqqqqqqqqq,240404
>> +SCAN=E

+PAIRED - 配对结果

Format

+PAIRED=Param

Param

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

HFP指示

+HFPSTAT - HFP状态

Format

+HFPSTAT=Param

Param1

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Outgoing call
(5) Incoming call
(6) Active call

+HFPDEV - HFP远端设备信息

Format

+HFPDEV=Param1{,Param2}

Param1

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

Param2

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

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

+HFPAUDIO - HFP语音音频状态

Format

+HFPAUDIO=Param

Param

(0) HFP语音音频断开连接,音频输入/输出切换到远端设备
(1) HFP语音建立连接,音频输入/输出切换到模块

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

Format

+HFPBATT=Param

Param

(0~9) 远程设备的电池电量

+HFPSR - HFP采样率

Format

+HFPSR=Param

Param

采样率: 8000/16000/32000

A2DP/AVRCP指示

+A2DPSTAT - A2DP状态

Format

+A2DPSTAT=Param

Param

(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
(4) Streaming
(5) Paused

+A2DPDEV - A2DP远端设备信息

Format

+A2DPDEV=Param1{,Param2}

Param1

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

Param2

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

+AVRCPSTAT - AVRCP状态

Format

+AVRCPSTAT=Param

Param

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

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

Format

+PLAYSTAT=Param

Param

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

+CTPLAY - 歌曲播放

Format

+CTPLAY

Description

收到播放指令

+CTPAUSE - 歌曲暂停

Format

+CTPAUSE

Description

收到暂停指令

+CTSTOP - 歌曲停止

Format

+CTSTOP

Description

收到停止播放指令

+CTFWD - 下一曲

Format

+CTSTOP

Description

收到播放下一曲指令

+CTBACK - 上一曲

Format

+CTBACK

Description

收到播放上一曲指令

SPP指示

+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 initialization

bt -> host: +SPPSTAT=1
bt -> host: +GATTSTAT=1
bt -> host: +A2DPSTAT=1
bt -> host: +AVRCPSTAT=1
bt -> host: +HFPSTAT=1
bt -> host: +VER=FSC-BT1035,V6.0.1,20210922
bt -> host: +DEVSTAT=1
rnote over host, bt: send AT+PAIR=1, enter discoverable
host -> bt: AT+PAIR=1
bt -> host: +DEVSTAT=7 (可发现打开,手机可以找到bt且可以连接)

rnote over host, bt: 修改蓝牙名称CARKIT,且不带地址码后缀,并校验
host -> bt: AT+NAME
bt -> host: AT+NAME=FSC-BT1035
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

修改任何参数建议先查询再修改最后校验:

发射模式连接

@startuml
hide footbox
skinparam sequenceMessageAlign center

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

rnote over host, bt: Profile initialization

bt -> host: +SPPSTAT=1
bt -> host: ...
bt -> host: +DEVSTAT=1

rnote over host, bt: scan nearby devices
host -> bt: AT+SCAN=1
bt -> host: +SCAN=1,2,DC0D30000057,-42,11,FSC-BT1026C,240408
bt -> host: +SCAN=2,2,DC0D30000012,-70,16,FSC-BT1006A-0012,240404
bt -> host: +SCAN=E

host -> bt: AT+A2DPCONN=DC0D30000057 (连接FSC-BT1026C)
bt -> host: OK
bt -> host: +A2DPSTAT=2
bt -> host: +A2DPSTAT=3 (A2DP已连接)
bt -> host: +A2DPDEV=DC0D30000057,FSC-BT1026C
bt -> host: +HFPSTAT=3 (HFP已连接)
bt -> host: +AVRCPSTAT=3 (AVRCP已连接)
bt -> host: +A2DPENC=1 (sbc encoder)
bt -> host: +A2DPSTAT=4 (自动进入A2DP播放)

rnote over host, bt: 停止播放
host -> bt: AT+A2DPAUDIO=0
bt -> host: +A2DPSTAT=5 (A2DP暂停)

rnote over host, bt: 建立hfp音频连接
host -> bt: AT+HFPAUDIO=1
bt -> host: +HFPSTAT=4
bt -> host: +HFPAUDIO=1
bt -> host: +HFPSTAT=6
bt -> host: +HFPSR=16000 (采样率: 16000)

rnote over host, bt: 断开hfp音频连接
host -> bt: AT+HFPAUDIO=0
bt -> host: +HFPSTAT=3
bt -> host: +HFPAUDIO=0

@enduml

附录

下载PDF版本

下载PDF版本