FSC-BT1036 应用说明

介绍

描述

本设计指南适用于工程师开发 FSC-BT1036 系列蓝牙模组,同样也适合BT6001、BT955、BT936B、BT909C、BT906系列模组

模组默认参数

Name

FSC-BT1036-XXXX

LE-Name

FSC-BT1036-LE-XXXX

Pin Code

0000

Secure Simple Pairing Mode

On

UART Baudrate

115200/8/N/1

硬件说明

引脚图

以FSC-BT1036C为例:

_images/BT1036_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

配对模式时输出方波,蓝牙已连接输出高电平

18

LED1

I/O

SPP/GATT未连接输出低电平,连接输出高电平

32

GND

GND

GND

33

VDD

VDD

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

40

MIC_RP

Audio

MIC0/Line_IN differential R input, positive

41

MIC_RN

Audio

MIC0/Line_IN differential R input, negative

43

MIC_LP

Audio

MIC0/Line_IN differential L input, positive

44

MIC_LN

Audio

MIC0/Line_IN differential L input, negative

45

MIC_BASE

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/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

应用场景

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=BT1036,V2.8.7,20250922
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: AT+NAME=FSC-BT1036-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

出厂固件如果是收发一体程序,程序默认profile=339, 需发送AT+PRFOILE=1195配置成音频接收模式 (打开SPP,GATT Server,HFP Sink,A2DP Sink,AVRCP-Controller,PBAP) 部分模块收发一体程序不支持PBAP,如BT955模块

@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: +PROFILE=1195
bt -> host: ...
bt -> host: +DEVSTAT=7

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

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

host -> bt: AT+PLAY(播放音乐)
bt -> host: +A2DPSTAT=5
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

@enduml

发射模式连接

Note

发射模式连接需将模块配置到A2DP Source 、 HFP Source, 程序默认连接耳机、音箱后不会主动进入音频发射模式或通话(对讲)模式,需发送指令: 启动音频发射(AT+AUDROUTE=1) 启动通话(AT+AUDROUTE=2)

@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: +PROFILE=339
bt -> host: ...
bt -> host: +DEVSTAT=7

rnote over host, bt: 搜索周边耳机,音响设备并连接
host -> bt: AT+SCAN=1
bt -> host: +SCAN=1,-87,0,DC0D30001E49,FSC-BT1036-1E49,5A020C
bt -> host: +SCAN=2,-78,0,7C9A1DA36B41,AirPods,240404
bt -> host: +SCAN=E

host -> bt: AT+A2DPCONN=7C9A1DA36B41
bt -> host: +A2DPSTAT=2
bt -> host: +A2DPSTAT=3 (A2DP已连接)
bt -> host: +A2DPDEV=7C9A1DA36B41,AirPods
bt -> host: +HFPSTAT=2
bt -> host: +HFPSTAT=3 (HFP已连接)
bt -> host: +HFPDEV=7C9A1DA36B41,AirPods
bt -> host: +AVRCPSTAT=3 (AVRCP已连接)


rnote over host, bt: 启动音频发射模式
host -> bt: AT+AUDROUTE=1
bt -> host: +PLAYSTAT=1
bt -> host: +A2DPSTAT=5
bt -> host: +AUDMODE=1 (返回当前音频路由模式)

rnote over host, bt: 关闭音频发射模式
host -> bt: AT+AUDROUTE=0
bt -> host: +PLAYSTAT=2
bt -> host: +A2DPSTAT=4
bt -> host: +AUDMODE=0

rnote over host, bt: 启动通话、对讲模式
host -> bt: AT+AUDROUTE=2
bt -> host: +HFPAUDIO=1 (建立audio)
bt -> host: +HFPSTAT=4
bt -> host: +AUDMODE=2
bt -> host: +HFPSTAT=6

rnote over host, bt: 关闭通话、对讲模式
host -> bt: AT+AUDROUTE=0
bt -> host: +HFPAUDIO=0 (断开audio)
bt -> host: +HFPSTAT=3
bt -> host: +AUDMODE=0

@enduml

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

BT1036、BT955等模块未打开三方通话功能,若需要测试该功能请和飞易通联系

@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: 拨打电话"10086"
host -> bt: AT+HFPDIAL=10086
bt -> host: OK
bt -> host: +HFPSTAT=4,10086 (phone dialing)
bt -> host: +HFPAUDIO=1
bt -> host: +HFPSTAT=6,10086 (call active)

rnote over host, bt: 三方通话来电
bt -> host: +HFPSTAT=8,10086,18620277271
host -> bt: AT+HFPMCAL=2 (Hold active call and accept another call)
bt -> host: +HFPSTAT=9,18620277271,10086 (18620277271 active,10086 hold)
host -> bt: AT+HFPMCAL=2 (Hold active call and accept another call)
bt -> host: +HFPSTAT=9,10086,18620277271 (10086 active,18620277271 hold)

host -> bt: AT+HFPMCAL=1 (Release active call and accept another call)
bt -> host: +HFPSTAT=6,18620277271 (one call active now)

rnote over host, bt: 挂断电话
host -> bt: AT+HFPCHUP
bt -> host: +HFPAUDIO=0
bt -> host: +HFPSTAT=3

@enduml

AVRCP文件系统浏览

Note

BT1036、BT955等模块未打开此功能,若需要测试该功能请和飞易通联系

@startuml
hide footbox
skinparam sequenceMessageAlign center

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

rnote over host, bt: A2DP/AVRCP connected

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

rnote over host, bt: 操作文件浏览功能
bt -> host: +BROWSTAT=3 (browsing channel connected)
host -> bt: AT+GETMP (retrieve media players)
bt -> host: +BROWSTAT=4
bt -> host: +BROWDATA=P,1,1,Music (found browsable media player)
bt -> host: +BROWDATA=E,0
bt -> host: +BROWSTAT=3

host -> bt: AT+SETMP=1 (select player)
bt -> host: +BROWSTAT=4
bt -> host: +BROWDATA=R,iPhone (filesystem root:iPhone)
bt -> host: +BROWDATA=E,0
bt -> host: +BROWSTAT=3

host -> bt: AT+GETFD=1,5 (list folders under root dir)
bt -> host: +BROWSTAT=4
bt -> host: +BROWDATA=F,0100000000000000,我的音乐 (/iPhone/我的音乐)
bt -> host: +BROWDATA=F,0200000000000000,播放列表 (/iPhone/播放列表)
bt -> host: +BROWDATA=E,0
bt -> host: +BROWSTAT=3

host -> bt: AT+SETFD=0200000000000000 (list folders under 播放列表)
bt -> host: +BROWSTAT=4
bt -> host: +BROWDATA=E,0
bt -> host: +BROWSTAT=3

host -> bt: AT+GETFD=1,5
bt -> host: +BROWSTAT=4
bt -> host: +BROWDATA=F,0100000000000000,最近添加
bt -> host: +BROWDATA=F,524A57F5E4594DE6,播放历史
bt -> host: +BROWDATA=E,0
bt -> host: +BROWSTAT=3

bt <--> host: (continue list sub dir until find audio tracks:AT+SETFD=folder id,AT+GETFD=x,y)
bt -> host: +BROWDATA=M,285E9813C3AB900E,New Soul
bt -> host: +BROWDATA=F,C15E9813C3AB900E,BLUE
bt -> host: +BROWDATA=E,0
bt -> host: +BROWSTAT=3

host -> bt: AT+ADDMP=C15E9813C3AB900E (select audio track and add to media player)
bt -> host: OK
bt --> host: media player playing BLUE now

@enduml

AVRCP专辑图片下载

Note

专辑图片下载仅车载协议栈模块支持,SOC音频模块不支持

@startuml
hide footbox
skinparam sequenceMessageAlign center

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

rnote over host, bt: A2DP/AVRCP connected

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

rnote over host, bt: 下载专辑图片
bt -> host: +BIPSTAT=3 (basic image profile connected)
bt <--> host: music start streaming
bt -> host: +TRACKINFO=song,artist,album
bt -> host: +BIPSTAT=4 (blueware auto pulling coverart jpeg image background)
bt -> host: +COVERART=1000090 (download complete)
bt -> host: +BIPSTAT=3

@enduml

Phonebook/Contact photo下载

Note

Contact photo 仅车载协议栈模块支持,SOC音频模块不支持 部分固件不支持下载时,自动连接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: 下载所有电话本且请求头像
host -> bt: AT+PBDOWN=1,,,1
bt <--> host: (if item's photo flag set,photo image number.jpg should be placed in spcecify folder)
bt -> host: +PBDATA=1,本机号码,+8618620277272,1
bt -> host: +PBDATA=1,张三,0571-85592192
bt -> host: +PBDATA=1,jerry,18909731215,1
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

附录

下载 PDF版本

下载PDF版本