FSC-BT910x 指令手册
介绍
描述
本设计指南适用于工程师开发 FSC-BT910x 系列蓝牙模组,适用于BT9101,BT9104系列模组
模组默认配置 以BT9101为例
Name |
FSC-BT9101 |
LE-Name |
FSC-BT9101-LE |
Pin Code |
0000 |
Secure Simple Pairing Mode |
Off |
Service UUID |
FFF0 |
Write UUID |
FFF2 |
Notify UUID |
FFF1 |
UART Baudrate |
115200/8/N/1 |
硬件说明
引脚图
FSC-BT9101:

引脚描述
Pin |
Pin Name |
Type |
Pin Descriptions |
---|---|---|---|
1 |
UART_TX |
O |
串口数据脚 |
2 |
UART_RX |
I |
串口数据脚 |
3 |
UART_CTS |
I |
串口流控脚 |
4 |
UART_RTS |
O |
串口流控脚 |
9 |
Tran/CMD |
I/O |
UART模式控制脚 H = 指令模式 L = 透传模式 |
10 |
Disc |
I/O |
断开连接脚 |
11 |
RESET |
I |
低电平复位 |
12 |
VDD |
Power |
3.3V供电,建议使用LDO供电 |
13 |
GND |
GND |
GND |
16 |
FW_URXD |
I |
烧录脚 |
17 |
FW_UTXD |
O |
烧录脚 |
32 |
Work |
O |
蓝牙未连接输出方波,蓝牙连接输出高电平 |
33 |
STATUS |
O |
蓝牙未连接输出低电平,蓝牙连接输出高电平 |
36 |
EXT_ANT |
ANT |
改变天线附近的0欧电阻,可以外接蓝牙天线 |
Note
如需使用9,10引脚控制模块需使用 AT+PIOCFG 指令开启功能
FSC-BT9104:

引脚描述
Pin |
Pin Name |
Type |
Pin Descriptions |
---|---|---|---|
1 |
GND |
GND |
Power Ground |
2 |
PA8 |
I/O |
Programmable I/O |
3 |
Status |
O |
蓝牙未连接输出低电平,蓝牙连接输出高电平 |
5 |
FW_URXD |
I |
烧录脚 |
6 |
FW_UTXD |
O |
烧录脚 |
8 |
GND |
GND |
GND |
9 |
VDD_3V3 |
VDD |
3.3V供电,建议使用LDO供电 |
10 |
RESET |
I |
低电平复位 |
11 |
UART_RX |
I |
串口数据脚 |
12 |
UART_TX |
O |
串口数据脚 |
13 |
UART_RTS |
O |
串口流控脚 |
14 |
UART_CTS |
I |
串口流控脚 |
15 |
GND |
GND |
Power Ground |
16 |
EXT_ANT |
ANT |
改变天线附近的0欧电阻,可以外接蓝牙天线 |
硬件设计说明
模组只需要连接VDD/GND/UART_RX/UART_TX即可使用
如果MCU需要获取蓝牙模组的连接状态,需要接STATUS引脚
画完原理图后请发给飞易通进行审核,避免蓝牙距离达不到最佳效果
功能说明
GPIO指示
模块工作状态引脚 PIN 32
状态 |
描述 |
---|---|
1Hz方波 |
蓝牙未连接 |
高电平 |
蓝牙连接 |
BT连接状态引脚 PIN 33,BT9104是PIN3
状态 |
描述 |
---|---|
低电平 |
蓝牙未连接 |
高电平 |
蓝牙连接 |
工作模式
透传模式 |
蓝牙未连接,串口收到的数据按照AT指令进行解析;蓝牙连接后串口收到的数据全
部原样发送到远端蓝牙。
|
指令模式 |
蓝牙未连接,串口收到的数据按照AT指令进行解析;蓝牙连接后串口收到的数据仍
然按照AT指令进行解析。需要发送数据到远端的时候,发送AT+SPPSEND指令。
|
GATT透传服务
类型 |
UUID |
权限 |
描述 |
Service |
0xFFF0 |
透传服务 |
|
Write |
0xFFF2 |
Write,Write Without Response |
APP发给模组 |
Notify |
0xFFF1 |
Notify |
模组发给APP |
AT指令说明
规范说明
适用于整个文档
{} : 包括与{…}中的内容为可选项
<< : 主机发给模组的 COMMAND
>> : 模组回复主机的 RESPONSE
指令
指令格式
所有的指令使用 AT 开头,使用 <CR><LF> 结尾
<CR> 代表回车符,对应 HEX 为 0x0D
<LF> 代表换行符,对应 HEX 为 0x0A
若指令包含参数,参数应使用 = 分隔
若指令包含多项参数,参数应使用 , 分隔
若指令有响应返回,响应使用 <CR><LF> 开始,使用 <CR><LF> 结束
模组应当总是返回指令执行的结果 (成功返回 OK,失败时返回 ERROR)
通知
通知格式
所有的通知使用<CR><LF>开始, 使用<CR><LF>结束
若通知包含参数, 参数应位于 “=” 后面
若通知包含多项参数, 参数应使用 “,” 分割
指令表
通用指令
AT+HELP - 查询固件功能和命令说明
Command |
AT+HELP |
Response |
<MODULE DEFAULT PARAMETER>
<COMMAND SUMMARY: DESCRIPTION: PROFILE CATEGORY>
|
Description |
使用help命令获取基本摘要信息 |
Note
如需升级最新版本请参考 空中升级说明
AT - 串口通信测试
Command |
AT |
Response |
OK |
Description |
当上电或更改波特率时,测试主机和模块之间的UART通讯 |
AT+REBOOT - 软件复位
Command |
AT+REBOOT |
Response |
OK |
Description |
模块将复位 |
AT+RESTORE - 恢复出厂设置
Command |
AT+RESTORE |
Response |
OK |
Description |
模块将恢复为出厂设置 |
AT+BTEN - 读/写当前蓝牙工作模式
Command |
AT+BTEN{=Param1} |
|
使能蓝牙(0/1,default:0)
0: 断开所有连接,禁用可发现/可连接
1: 启用发现/接入
|
Response |
+BTEN=Param |
Description |
读/写当前蓝牙工作模式 |
AT+NAME - 读/写BR/EDR蓝牙名称
Command |
AT+NAME{=Param1{,Param2}} |
|
BR/EDR蓝牙名称(1~29 Bytes ASCII) |
|
使能MAC地址后缀(0~2,default:0)
0: 关闭后缀
1: 开启后缀“XXXX”(MAC地址后4Byte)
2: 开启后缀“XXXXXX”(MAC地址后6Byte)
|
Response |
+NAME=Param |
|
蓝牙名称 |
Description |
如果存在参数则设置蓝牙名称,否则只是读取 |
AT+LENAME - 读/写BLE蓝牙名称
Command |
AT+LENAME{=Param1{,Param2}} |
|
BLE蓝牙名称(1~29 Bytes ASCII) |
|
使能MAC地址后缀(0~2,default:0)
0: 关闭后缀
1: 开启后缀“-XXXX”(MAC地址后4Byte)
2: 开启后缀“-XXXXXX”(MAC地址后6Byte)
|
Response |
+LENAME=Param |
|
蓝牙名称 |
Description |
如果存在参数则设置蓝牙名称,否则只是读取 |
AT+PIN - 读/写配对密码
Command |
AT+PIN{=Param} |
|
配对密码(4~15 Bytes ASCII, default:0000) |
Response |
+PIN=Param |
Description |
当+SSP=0时,配对密码有效 |
AT+PLIST - 读取/清除配对记录
Command |
AT+PLIST{=Param} |
|
(0 / 1~8)
(0) 清除所有配对记录
(1~8) 清除指定索引的配对记录
|
Response1 |
+PLIST=Param1, Param2 |
|
(1~8) 配对设备序号 |
|
(MAC)配对设备的MAC地址 |
Response2 |
+PLIST= 配对记录查询完成 |
AT+BAUD - 读/写串口波特率
Command |
AT+BAUD{=Param} |
|
波特率(4800/9600/19200/38400/57600/115200/
230400/460800/921600,256000,512000,1000000, default:115200)
|
Response |
+BAUD=Param |
|
波特率 |
Description |
模块将在接收到这条指令后,马上切换波特率 |
AT+VER - 读取固件版本
Command |
AT+VER |
Response |
+VER=Param |
|
固件版本 |
Description |
读取版本号 |
AT+ADDR - 读BR/EDR蓝牙MAC地址
Command |
AT+ADDR |
Response |
+ADDR=Param |
|
模块的BR/EDR蓝牙MAC地址(12 Bytes ASCII) |
AT+LEADDR - 读BLE蓝牙MAC地址
Command |
AT+LEADDR |
Response |
+LEADDR=Param |
|
模块的BLE蓝牙MAC地址(12 Bytes ASCII) |
AT+COD: 读/写设备类型
Command |
AT+COD=Param |
|
设备类型(6 bytes ASCII, default:240404 Handsfree device) |
Response |
+COD=Param |
相关配置参考 COD.
AT+TPMODE - 打开/关闭透传模式
Command |
AT+TPMODE{=Param} |
|
模式(0~1,默认0) 0: 指令模式 1: 透传模式 |
Response |
+TPMODE=Param |
Description |
当在SPP/GATT协议下连接并且打开透传模式时,AT指令将会被禁用,
通过UART接收的每个字节将被发送到远端
|
AT+FLOWCTL - 开启/关闭串口流控
Command |
AT+FLOWCTL{=Param1} |
|
参数(0~1,default0) 0: 关闭流控 1: 开启流控 |
Response |
+FLOWCTL=Param |
Description |
打开/关闭串口流控 |
AT+SSP - 开启/关闭简易配对
Command |
AT+SSP{=Param} |
|
PROFILE mode (0~1, default:0) 0: 关闭SSP 1: 开启SSP
|
Response |
+SSP=Param |
Note |
重启生效 |
AT+MODE - 读/写蓝牙PROFILE
Command |
AT+MODE{=Param} |
|
Pairing mode (0~4, default:0)
(0) NONE PROFILE
(1) SPP PROFILE
(2) HID PROFILE
(3) BLE PROFILE
(4) ALL PROFILE
|
Response |
+SSP=Param |
AT+AUTOCONN - 设置蓝牙上电重连
Command |
AT+AUTOCONN{=Param} |
|
0: 关闭自动重连
1: 开启自动重连
|
Response |
+AUTOCONN=Param |
Description |
上电后,模块将根据设置PROFILE尝试与配对列表中的设备建立连接 |
AT+PIOCFG - 开启/关闭IO口控制模块
Command |
AT+PIOCFG{=Param,Param1} |
|
0: 禁用命令/传输模式切换功能
1: 启用命令/传输模式切换功能
|
|
0: 禁用蓝牙断开功能
1: 启用蓝牙断开功能
|
Response |
+PIOCFG=Param |
Description |
用引脚控制传输模式和连接状态 |
Note |
BT9101可用,BT9104封装受限,引脚未引出。 |
AT+DSCA - 断开所有连接
Command |
AT+DSCA |
Description |
模块断开与远程设备的所有蓝牙连接,在指令模式下使用 |
AT+SCAN - 搜索附近的设备
Command |
AT+SCAN=Param1{,Param2{,Param3}} |
|
扫描方式(0~2)
0: 停止扫描
1: 扫描附近BR/EDR设备
2: 扫描附近BLE设备(部分程序不支持)
3: 扫描附近BR/EDR/BLE设备(部分程序不支持)
|
|
(1~48)扫描时间. unit:1.28s, default:12.8s |
|
(1~25 Bytes ASCII)过滤名称. |
Description |
格式说明参考: +SCAN - 扫描结果 |
AT+SECURITY - 打开/关闭安全验证
Command |
AT+SECURITY{=Param1} |
|
模式(0~1,默认0) 0: 未开启安全验证 1: 开启安全验证 |
Response |
+SECURITY=Param |
Description |
打开/关闭安全验证 |
AT+TXPOWER - 读/写发射功率
Command |
AT+TXPOWER{=Param} |
|
发射功率(0~6,默认3)
0: -12dBm
1: -8dBm
2: -4dBm
3: 0dBm
4: 4dBm
5: 8dBm
6: 10dBm
|
Response |
+TXPOWER=Param |
|
发射功率 |
Description |
修改发射功率,命令设置后重启生效 |
AT+UARTCFG - 读/写串口配置
Command |
AT+UARTCFG{=Param} |
|
配置 (0~5)
bit0:
0 - 1位停止位
1 - 2位停止位
bit2~bit1:
00 - None
01 - Odd
10 - Even
|
Response |
+UARTCFG=Param |
|
配置 (0~5) |
Description |
修改串口配置(停止位和校验位) |
AT+LINKCFG - 自动搜索链接配置
Command |
AT+LINKCFG{=Param} |
|
配置 (0~2)
0:关闭自动搜索链接
1:spp自动搜索链接
2:ble自动搜索链接
|
Description |
若配置该指令模块会根据配置自动搜索链接 |
AT+RSSICFG - 读/写RSSI配置
Command |
AT+RSSICFG{=Param,Param1} |
|
高rssi值 |
|
低rssi值 |
Description |
信号强度大于
Param 时PIN34脚置低信号强度小于
Param1 时PIN34脚置高信号强度处于
Param ~ Param1 时电平不变BT9101可用,BT9104封装受限,引脚未引出。
|
SPP指令
AT+SPPSTAT - 读SPP状态
Command |
AT+SPPSTAT |
Response |
+SPPATAT=Param |
Description |
格式说明参考: +SPPSTAT - SPP状态 |
AT+SPPCFG - 读/写SPP配置
Command |
AT+SPPCFG{=Param} |
|
配置(0~1, 默认:0)
0:关闭spp动态注册
0:开启spp动态注册
|
Response |
+SPPCFG=Param |
Description |
开启动态注册后模块会在连接时注册spp服务
断开时注销spp服务
|
AT+SPPCONN - 建立SPP连接
Command |
AT+SPPCONN{=Param} |
|
目标设备MAC地址(12 Bytes ASCII) |
AT+SPPDISC - 断开SPP连接
Command |
AT+SPPDISC |
Description |
断开当前与远程设备的SPP连接 |
AT+SPPSEND - 通过SPP发数据
Command |
AT+SPPSEND=Param1,Param2 |
|
Payload length (1~236) |
|
Payload (1~236 Bytes UTF8) |
Description |
如果透传模式开启,该指令将会被禁用 |
GATT指令
AT+GATTSTAT - 读GATT状态
Command |
AT+GATTSTAT |
Response |
+GATTATAT=Param |
Description |
格式说明参考: +GATTSTAT - 连接状态上报 |
AT+ADVADDR - 打开/关闭广播地址
Command |
AT+ADVADDR{=Param} |
|
模式(0~1,默认1) 0: 关闭广播地址 1: 开启广播地址 |
Response |
+ADVADDR=Param |
Description |
打开/关闭广播地址 |
AT+IBEACON - 打开/关闭ibeacon广播
Command |
AT+IBEACON{=Param} |
|
模式(0~1,默认0) 0: 关闭ibeacon广播 1: 开启ibeacon广播 |
Response |
+IBEACON=Param |
Description |
打开/关闭ibeacon广播 |
AT+ADVDATA - 读/写BLE广播0xFF的数据
Command |
AT+ADVDATA{=Param} |
|
厂商自定义广播数据(数据长度不超过26) |
Response |
+ADVDATA=Param |
|
tag为0xFF的广播数据 |
Description |
厂商自定义广播数据tag为0xFF |
AT+ADBLE - 打开/关闭AndroidBLE
Command |
AT+ADBLE{=Param} |
|
模式(0~1,默认1) 0: 关闭AndroidBLE 1: 开启AndroidBLE |
Response |
+ADBLE=Param |
Description |
开启后SPP和BLE地址会是两个地址 | 关闭 SPP和BLE地址会一个地址 |
AT+UUIDCFG - 读/写UUID
Command |
AT+UUIDCFG{=Param1,Param2,Param3} |
|
service UUID (defalut: 0000) |
|
write UUID (defalut: 0000) |
|
notify UUID (defalut: 0000) |
Response |
+UUIDCFG=Param1,Param2,Param3 |
Description |
自定义数据传输复位的UUID,支持32/128位UUID.
为默认参数时:
service UUID = 0xFFF0
write UUID = 0XFFF2
notify UUID = 0XFFF1
|
AT+GATTSEND - 通过GATT发数据
Command |
AT+GATTSEND=Param1,Param2 |
|
Payload length (1~236) |
|
Payload (1~236 Bytes UTF8) |
Description |
如果透传模式开启,该指令将会被禁用 |
AT+LESTAT - 读LE状态
Command |
AT+LESTAT |
Response |
+LEATAT=Param |
Description |
格式说明参考: +LESTAT - 连接状态上报 |
AT+LECCONN - 向指定地址发起连接
Command |
AT+LECCONN{=Param1{,Param2{,Param3{,Param4}}}} |
|
12字节设备地址+1字节地址类型 |
|
通信服务UUID |
|
通信写权限特征值UUID |
|
通信通知权限特征值UUID |
Response |
OK |
Description |
向指定设备发起连接,参数由12字节(设备地址)和1字节
(地址类型)组成,一般情况下地址类型为“0”或者“1”。地址
类型获取方式:
使用 AT+SCAN 扫描返回的第二个参数,例:
+SCAN=0,0,DC0D30001ED4,-65,10,FSC-BT946
连接命令:
AT+LECCONN=DC0D30001ED40
|
AT+LESEND - 发送数据到远端设备
Command |
AT+LESEND=Param1,Param2 |
|
Payload length (1~236) |
|
Payload (1~236 Bytes UTF8) |
Response |
OK |
Description |
如果透传模式开启,该指令将会被禁用 |
HID指令
AT+HIDSTAT - 读HID状态
Command |
AT+HIDSTAT |
Response |
+HIDATAT=Param |
Description |
格式说明参考: +HIDSTAT - HID状态 |
AT+HIDCONN - 建立HID连接
Command |
AT+HIDCONN{=Param} |
|
目标设备MAC地址(12 Bytes ASCII) |
AT+HIDDISC - 断开HID连接
Command |
AT+HIDDISC |
Description |
断开当前与远程设备的HID连接 |
AT+HIDOSK - 弹出/退出键盘
Command |
AT+HIDOSK |
Description |
弹出/退出键盘 ios有效 |
AT+HIDMODE - 读/写HID模式
Command |
AT+HIDMODE{=Param} |
|
HID键盘输入模式(0~1), default 1
(0) Hex key code
(1) Ascii key code (English)
|
Note |
模块可以通过特定的固件支持各种键盘语言,例如:
TURKEY SPAIN PORTUGAL FRANCE GERMANY ITALY CZECH JAPAN
|
AT+HIDDLY - 读/写HID发送时间
Command |
AT+HIDDLY{=Param} |
|
HID report period in millisecond, default 10 ms |
AT+HIDSEND - 通过HID发数据
Command |
AT+HIDSEND=Param1,Param2 |
|
Report length |
|
Report payload |
Note |
For special key code:
0x0D -> ENTER
0x08 -> BACKSPACE
0x09 -> TAB
0x20 -> SPACE
|
Description |
如果透传模式开启,该指令将会被禁用 |
通知列表
+SPPSTAT - SPP状态
Format |
+SPPSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
|
+SCAN - 扫描结果
Format1 |
+SCAN={ : 开始扫描 |
Format2 |
+SCAN =Param1,Param2,Param3, Param4,Param5,Param6 |
|
列表序号 |
|
地址类型(1字节) |
|
地址(12字节) |
|
RSSI |
|
设备名长度 |
|
设别名名 |
Format3 |
+SCAN=} : 停止扫描 |
+GATTSTAT - 连接状态上报
Indication |
+GATTSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
|
Description |
指令模式下,模组的连接状态发生变化,通过+GATTSTAT主动上报 |
+LESTAT - 连接状态上报
Indication |
+LESTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
|
Description |
指令模式下,模组的连接状态发生变化,通过+LESTAT主动上报 |
+HIDSTAT - HID状态
Format |
+HIDSTAT=Param |
|
(0) Unsupported
(1) Standby
(2) Connecting
(3) Connected
|
应用场景
查询/修改模组默认参数
模组在蓝牙没有连接的状态下,会将串口数据按照AT指令解析。 主机可以对模组的默认参数进行查询和修改,下图展示了:
修改设备名为 ABC
查询设备名
查询蓝牙地址
发送数据的流程
模组上电会持续向外发送广播数据,远端蓝牙(手机)可以通过搜索获取到广播包, 并向模组发起连接请求。连接成功后模组会拉高连接状态脚通知主机蓝牙连接成功。 主机可以通过蓝牙模组将数据发送给远端蓝牙,远端蓝牙也可以把数据发送给主机。
模组做主机连接远端设备
模组可以作为主设备去连接从设备,主机可以发送指令控制模组进行扫描连接和断开。下图展示了连接其他设备的过程:
FAQ
IOS 手机如何获取蓝牙MAC地址?
IOS系统出于安全考虑,在底层将蓝牙MAC地址变成了UUID发送给上层应用。所以APP无法获取到设备的MAC地址。
FSC-BT910x 默认会将MAC地址放在广播中,APP可以通过下面的方法从广播包中获取MAC地址。
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { if(![self describeDictonary:advertisementData]) { NSLog(@"is not fsc module"); return; } } - (Boolean)describeDictonary: (NSDictionary *) dict { NSArray *keys; id key; keys = [dict allKeys]; for(int i = 0; i < [keys count]; i++) { key = [keys objectAtIndex:i]; if([key isEqualToString:@"kCBAdvDataManufacturerData"]) { NSData *tempValue = [dict objectForKey:key]; const Byte *tempByte = [tempValue bytes]; if([tempValue length] == 6) { // tempByte 后面参数是蓝牙地址 return true } }else if([key isEqualToString:@"kCBAdvDataLocalName"]) { //there is name //NSString *szName = [dict objectForKey: key]; } } return false; }