应用开发示例
初始化及读写参数
模块Profile初始化修改蓝牙名称
响应事件示例如下:
读写参数

MCU 修改参数示例
修改任何参数,建议先查询再修改最后校验,避免出错。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}
数据透传应用
FSC-BT909C 通用蓝牙双模数传应用固件程序,工作模式包含两种数据传输模式:透传模式和指令模式。一般默认数据透传模式,在透传状态下可进行全双工透明通信,如需切换工作模式,可参考 FSC-BT909C 通用双模数传应用 AT命令集 使用 AT+TPMODE 指令来进行切换。
两种数据传输模式工作机制与区别如下:
透传模式 :
蓝牙未连接,串口收到的数据按照AT指令进行解析;
蓝牙连接成功后,串口收到的数据全部原样发送到远端蓝牙。
指令模式 :
蓝牙未连接,串口收到的数据按照AT指令进行解析;
蓝牙连接成功后,串口收到的数据仍然按照AT指令进行解析,需要通过AT指令发送数据给远端,如AT+SPPSEND。
有关模块进入透传状态的时序,参考如下:
SPP主从应用
FSC-BT909C 通用蓝牙双模数传应用固件程序,可同时支持SPP主从功能, 当使用SPP主功能的AT命令时,模块充当主角色,否则充当从角色。
SPP主端功能AT命令列表:
Commands |
Description |
AT+SCAN |
搜索周围蓝牙设备 |
AT+SPPCONN |
建立SPP连接 |
AT+SPPSTAT |
读SPP状态 |
AT+SPPDISC |
断开SPP连接 |
AT+SPPSEND |
通过SPP发送数据 |
SPP主端交互(AT命令模式)示例:
音频接收模式连接
Note
出厂固件如果是收发一体程序,程序默认 +PROFILE=339,需发送 AT+PRFOILE=1195 配置成音频接收模式(即使能SPP,GATT Server,HFP Sink,A2DP Sink,AVRCP-Controller,PBAP);
部分模块收发一体程序不支持PBAP,如FSC-BT955模块。
发射模式连接
Note
发射模式连接需将模块配置到A2DP Source 、 HFP Source;
程序默认连接耳机、音箱后不会主动进入音频发射模式或通话(对讲)模式,需使用AT指令来进行模式切换: 启动音频发射(AT+AUDROUTE=1) , 启动通话(AT+AUDROUTE=2)。
MCU 连接AirPods,并启动音频发射 参考代码:
1#define PROFILE_HFP_HF (uint16)(BIT3)
2#define PROFILE_HFP_AG (uint16)(BIT4)
3#define PROFILE_A2DP_SINK (uint16)(BIT5)
4#define PROFILE_A2DP_SOURCE (uint16)(BIT6)
5
6void bt_connect(void)
7{
8 //enable hfp source,a2dp source,avrcp tg,spp,gatt
9 uart_send("AT+PROFILE=339\r\n"); //if profile changes,module will auto reboot,
10 wait_ms(500);
11 uart_send("AT+PROFILE\r\n");
12 uint32 profiles = uart_read("+PROFILE",profiles);
13 if(profiles & (PROFILE_A2DP_SOURCE|PROFILE_HFP_AG))
14 {
15 uint8 addr[6];
16 uint8 buf[30]={0};
17 uint8 a2dp_state=0
18 uart_send("AT+SCAN=1\r\n");
19 uart_read_scan_addr("+SCAN",addr);
20 sprintf(buf,"AT+A2DPCONN=%s\r\n",addr);
21 uart_send(buf); //send a2dp connect
22
23 uart_read("+A2DPSTAT",a2dp_state);
24 if(a2dp_state == 3) //a2dp connected
25 {
26 uart_send("AT+AUDROUTE=1"); // start a2dp audio
27 }
28 uart_read("+A2DPSTAT",a2dp_state);
29 if(a2dp_state == 5)
30 {
31 //a2dp streaming
32 }
33 }
34 else
35 {/*not support master*/}
36}
HFP三方通话操作
Note
非通用音频固件包含功能;
FSC-BT1036x、FSC-BT909C、FSC-BT955等模块未打开三方通话功能,若需要测试该功能请和飞易通联系。
AVRCP文件系统浏览
Note
非通用音频固件包含功能;
FSC-BT1036、FSC-BT909C、FSC-BT955等模块未打开此功能,若需要测试该功能请和飞易通联系。
AVRCP专辑图片下载
Note
AVRCP专辑图片下载功能,SOC音频模块不支持,仅车载协议栈RF模块支持。
Phonebook/Contact Photo下载
Note
Contact Photo SOC音频模块不支持,仅车载协议栈RF模块支持。
部分固件不支持下载时,自动连接PBAP, 需发送AT+PBCONN连接PBAP再下载