蓝牙基础架构
蓝牙分为 BT Host, HCI 和 BT Controller 三部分:
BT Host: 包含 Application, Framework 和 Host stack 三部分:
Application: 包含蓝牙 APIs, 以及由此实现的 Peripheral, Central, Scatternet, Mesh, A2DP, LE Audio 等应用。
Framework: 包含 LE audio lib, BLE mgr lib, BT mgr lib 以及 system lib, 其中 LE audio lib 和 BLE mgr lib 实现了 BAP 和 CAP 以及 LE audio 依赖的 BLE profile, BT mgr lib 则是 BR/EDR profile 的实现, system lib 则是提供一些系统相关的功能。
LE audio lib:
sdk\component\bluetooth\rtk_stack\platform\amebaxxx\lib\(km4/kr4/ca32)\leaudio.a
BLE mgr lib:
sdk\component\bluetooth\rtk_stack\platform\amebaxxx\lib\(km4/kr4/ca32)\ble_mgr.a
BT mgr lib:
sdk\component\bluetooth\rtk_stack\platform\amebaxxx\lib\(km4/kr4/ca32)\bt_mgr.a
system lib:
sdk\component\bluetooth\rtk_stack\platform\amebaxxx\lib\(km4/kr4/ca32)\sysm.a
Host stack: 包含 Host stack lib(
sdk\component\bluetooth\rtk_stack\platform\amebaxxx\lib\(km4/kr4/ca32)\(ble_only/dual_mode)\btgap.a
), 实现了蓝牙上层协议栈的功能, 包括 GAP, GATT, L2CAP, ATT 和 SMP 等。
HCI: Host Controller Interface, Controller 与 Host 的唯一通信接口, Controller 与 Host 所有的数据交互都通过该接口完成。
Controller: 以二进制数组形式提供(
sdk\component\bluetooth\driver\platform\amebaxxx\hci\bt_normal_patch.c
),实现了蓝牙下层协议栈的功能, 包括 Link Layer 和 PHY 等。
蓝牙基础架构
蓝牙芯片功能支持列表
Physical |
RTL8721Dx |
RTL8726EA |
RTL8720EA |
RTL8713EA |
RTL8730E |
RTL8721F |
---|---|---|---|---|---|---|
BR/EDR |
N |
Y |
N |
Y |
Y |
N |
BLE |
Y |
Y |
Y |
Y |
Y |
Y |
BLE 4.0 |
RTL8721Dx |
RTL8726EA |
RTL8720EA |
RTL8713EA |
RTL8730E |
RTL8721F |
|
---|---|---|---|---|---|---|---|
Advertiser |
Y |
Y |
Y |
Y |
Y |
Y |
|
Scanner |
Y |
Y |
Y |
Y |
Y |
Y |
|
Initiator |
Y |
Y |
Y |
Y |
Y |
Y |
|
Master |
Y |
Y |
Y |
Y |
Y |
Y |
|
Slave |
Y |
Y |
Y |
Y |
Y |
Y |
|
Link Layer Encryption |
Y |
Y |
Y |
Y |
Y |
Y |
|
Max Link (Theoretical value) |
BLE |
8 Master Link + 3 Slave Link |
8 Master Link + 3 Slave Link |
8 Master Link + 3 Slave Link |
8 Master Link + 3 Slave Link |
8 Master Link + 3 Slave Link |
8 Master Link + 3 Slave Link |
BR/EDR |
NULL |
7 Master Link + 3 Slave Link |
NULL |
7 Master Link + 3 Slave Link |
7 Master Link + 3 Slave Link |
NULL |
BLE 4.1 |
RTL8721Dx |
RTL8726EA |
RTL8720EA |
RTL8713EA |
RTL8730E |
RTL8721F |
---|---|---|---|---|---|---|
BR/EDR Secure Connection |
N |
Y |
N |
Y |
Y |
N |
Low Duty Cycle Directed Advertising |
Y |
Y |
Y |
Y |
Y |
Y |
MWS Coexistence |
N |
Y |
Y |
Y |
Y |
N |
LE Ping |
Y |
Y |
Y |
Y |
Y |
Y |
LE Link Layer Topology |
Y |
Y |
Y |
Y |
Y |
Y |
LE Scatternet |
Y |
Y |
Y |
Y |
Y |
Y |
BLE 4.2 |
RTL8721Dx |
RTL8726EA |
RTL8720EA |
RTL8713EA |
RTL8730E |
RTL8721F |
---|---|---|---|---|---|---|
LE Data Length Extension |
Y |
Y |
Y |
Y |
Y |
Y |
LE Secure Connection |
Y |
Y |
Y |
Y |
Y |
Y |
Link Layer Privacy |
Y |
Y |
Y |
Y |
Y |
Y |
Link Layer Extended Scanner Filter Policies |
Y |
Y |
Y |
Y |
Y |
Y |
BLE 5.0 |
RTL8721Dx |
RTL8726EA |
RTL8720EA |
RTL8713EA |
RTL8730E |
RTL8721F |
---|---|---|---|---|---|---|
LE 2Mbps PHY |
Y |
Y |
Y |
Y |
Y |
Y |
LE Long Range |
Y |
Y |
Y |
Y |
Y |
Y |
LE Advertising Extensions |
Y |
Y |
Y |
Y |
Y |
Y |
LE Channel Selection Algorithm #2 |
Y |
Y |
Y |
Y |
Y |
Y |
High Duty Cycle Non-Connectable Advertising |
Y |
Y |
Y |
Y |
Y |
Y |
LE Periodic Advertising |
N |
Y |
Y |
Y |
Y |
N |
BLE 5.1 |
RTL8721Dx |
RTL8726EA |
RTL8720EA |
RTL8713EA |
RTL8730E |
RTL8721F |
---|---|---|---|---|---|---|
Periodic Advertising Sync Transfer (PAST) |
N |
Y |
Y |
Y |
Y |
N |
LE Connection Oriented AoA/AoD |
N |
Y |
Y |
Y |
Y |
N |
LE Connectless AoA/AoD |
N |
Y |
Y |
Y |
Y |
N |
BLE 5.2 |
RTL8721Dx |
RTL8726EA |
RTL8720EA |
RTL8713EA |
RTL8730E |
RTL8721F |
---|---|---|---|---|---|---|
LE Connected Isochronous Stream (CIS) |
N |
Y |
Y |
Y |
Y |
N |
LE Broadcast Isochronous Streams (BIS) |
N |
Y |
Y |
Y |
Y |
N |
LE Power Control |
N |
Y |
Y |
Y |
Y |
N |
蓝牙功能配置
Link Layer Privacy: 以 Peripheral 为例, 在 sdk\component\bluetooth\example\ble_peripheral\peripheral.c
中, 修改 privacy_enable
为 true
。
LE Advertising Extensions: 在 sdk\component\bluetooth\api\include\bt_api_config.h
中, 修改相应 SOC 的 RTK_BLE_5_0_AE_ADV_SUPPORT
和 RTK_BLE_5_0_AE_SCAN_SUPPORT
为 1
。
LE Periodic Advertising: 在 sdk\component\bluetooth\api\include\bt_api_config.h
中, 修改相应 SOC 的 RTK_BLE_5_0_AE_ADV_SUPPORT
, RTK_BLE_5_0_AE_SCAN_SUPPORT
, RTK_BLE_5_0_PA_ADV_SUPPORT
和 RTK_BLE_5_0_PA_SYNC_SUPPORT
为 1
。
Periodic Advertising Sync Transfer (PAST): 在 sdk\component\bluetooth\api\include\bt_api_config.h
中, 修改相应 SOC 的 RTK_BLE_5_0_AE_ADV_SUPPORT
, RTK_BLE_5_0_AE_SCAN_SUPPORT
, RTK_BLE_5_0_PA_ADV_SUPPORT
, RTK_BLE_5_0_PA_SYNC_SUPPORT
RTK_BLE_5_1_PAST_SENDER_SUPPORT
和 RTK_BLE_5_1_PAST_RECIPIENT_SUPPORT
为 1
。
SMP OOB: 默认开启, 可在 sdk\component\bluetooth\api\include\bt_api_config.h
中修改 RTK_BLE_SMP_OOB_SUPPORT
为 0
关闭。
LE Data Length Extension: 默认开启, 可在 sdk\component\bluetooth\api\include\bt_api_config.h
中修改 RTK_BLE_4_2_DATA_LEN_EXT_SUPPORT
为 0
关闭。
SET PHYS: 默认开启, 可在 sdk\component\bluetooth\api\include\bt_api_config.h
中修改 RTK_BLE_5_0_SET_PHYS_SUPPORT
为 0
关闭。
LE POWER CONTROL: 在 sdk\component\bluetooth\api\include\bt_api_config.h
中修改 RTK_BLE_5_2_POWER_CONTROL_SUPPORT
为 1
。
EATT: 在 sdk\component\bluetooth\api\include\bt_api_config.h
中修改 RTK_BT_5_2_EATT_SUPPORT
为 1
。