蓝牙基础架构

蓝牙分为 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 等。

../../_images/bt_architecture.svg

蓝牙基础架构

蓝牙芯片功能支持列表

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_enabletrue

LE Advertising Extensions: 在 sdk\component\bluetooth\api\include\bt_api_config.h 中, 修改相应 SOC 的 RTK_BLE_5_0_AE_ADV_SUPPORTRTK_BLE_5_0_AE_SCAN_SUPPORT1

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_SUPPORTRTK_BLE_5_0_PA_SYNC_SUPPORT1

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_SUPPORTRTK_BLE_5_1_PAST_RECIPIENT_SUPPORT1

SMP OOB: 默认开启, 可在 sdk\component\bluetooth\api\include\bt_api_config.h 中修改 RTK_BLE_SMP_OOB_SUPPORT0 关闭。

LE Data Length Extension: 默认开启, 可在 sdk\component\bluetooth\api\include\bt_api_config.h 中修改 RTK_BLE_4_2_DATA_LEN_EXT_SUPPORT0 关闭。

SET PHYS: 默认开启, 可在 sdk\component\bluetooth\api\include\bt_api_config.h 中修改 RTK_BLE_5_0_SET_PHYS_SUPPORT0 关闭。

LE POWER CONTROL: 在 sdk\component\bluetooth\api\include\bt_api_config.h 中修改 RTK_BLE_5_2_POWER_CONTROL_SUPPORT1

EATT: 在 sdk\component\bluetooth\api\include\bt_api_config.h 中修改 RTK_BT_5_2_EATT_SUPPORT1