BR/EDR 控制器功能配置
概述
ESP32-S31 的经典蓝牙使用 Orca BR/EDR Controller。其功能通过 bt/porting_btdm/controller/bredr/Kconfig.in 中的 Kconfig 选项在编译期选择。选项分为两类:
功能选项:控制 Link Manager (LM/LMP) 特性以及对应 HCI 命令的注册。未使能的功能不会注册到控制器,相关 HCI 命令将返回
Unknown HCI Command(0x01)。资源与调优选项:配置连接数上限、缓冲区数量、默认发射功率、CCA 等参数,本身不会注册或注销 HCI 命令。
配置路径:
Component config > Bluetooth > Controller Options > BR/EDR Controller Options
备注
使用 ESP-Bluedroid 且使能 HFP 时,若 CONFIG_BT_CTRL_BR_EDR_MAX_SYNC_CONN 为 0,系统会将实际 SCO/eSCO 连接数设为 1。详见 bt/porting_btdm/controller/bredr/include/bredr_user_cfg.h。
在 BR/EDR 已使能(BR/EDR Only 或 Dual Mode)时,Inquiry、ACL 建链、配对、加密、Sniff、角色切换、Scan/Page、AFH、EIR 及信息查询等标准命令无需下方可选功能选项即可使用。
HCI 名称与 Opcode 遵循 Bluetooth Core Specification。表中标准命令以 Opcode Group Field (OGF) 和 Opcode Command Field (OCF) 成对给出,例如 0x01/0x0028。乐鑫厂商命令使用 OGF 0x3F。
功能选项、LM 特性与 HCI 命令
Kconfig 选项 |
LM / LMP 特性 |
HCI 命令 (Opcode) |
|---|---|---|
SCO link;eSCO (EV3) |
HCI_Setup_Synchronous_Connection (0x01/0x0028)HCI_Accept_Synchronous_Connection_Request (0x01/0x0029)HCI_Reject_Synchronous_Connection_Request (0x01/0x002A)HCI_Enhanced_Setup_Synchronous_Connection (0x01/0x003D)HCI_Enhanced_Accept_Synchronous_Connection_Request (0x01/0x003E)HCI_Read_Voice_Setting (0x03/0x0025)HCI_Write_Voice_Setting (0x03/0x0026)HCI_Read_Synchronous_Flow_Control_Enable (0x03/0x002E)HCI_Write_Synchronous_Flow_Control_Enable (0x03/0x002F) |
|
eSCO EV4 包类型 |
无独立 HCI 命令。影响 |
|
eSCO EV5 包类型 |
同上。 |
|
eSCO 2-EV3 包类型 |
同上。 |
|
eSCO 3-EV3 包类型 |
同上。 |
|
eSCO 3-slot 包类型 |
同上。 |
|
Hold Mode |
HCI_Hold_Mode (0x02/0x0001)HCI_Read_Hold_Mode_Activity (0x03/0x002B)HCI_Write_Hold_Mode_Activity (0x03/0x002C) |
|
Active Peripheral Broadcast (APB);LM 层 truncated page 支持 |
APB 本身无独立 HCI 命令。Truncated page / CSB 接收相关 HCI 由 CONFIG_BT_CTRL_BR_EDR_CPB_RX_EN 注册。 |
|
+
CONFIG_BT_CTRL_BR_EDR_APB_EXT_BCST_ENC_EN |
Broadcast Encryption |
|
+
CONFIG_BT_CTRL_BR_EDR_APB_EXT_PCA_EN |
Piconet Clock Adjustment (PCA) |
无。Clock Adjustment 通过 LMP 实现。 |
Synchronization train (master);Connectionless Peripheral Broadcast – Transmit |
HCI_Set_Connectionless_Peripheral_Broadcast (0x01/0x0041)HCI_Start_Synchronization_Train (0x01/0x0043)HCI_Set_Reserved_LT_ADDR (0x03/0x0074)HCI_Delete_Reserved_LT_ADDR (0x03/0x0075)HCI_Set_Connectionless_Peripheral_Broadcast_Data (0x03/0x0076)HCI_Read_Synchronization_Train_Parameters (0x03/0x0077)HCI_Write_Synchronization_Train_Parameters (0x03/0x0078) |
|
Synchronization scan;Connectionless Peripheral Broadcast – Receive |
HCI_Truncated_Page (0x01/0x003F)HCI_Truncated_Page_Cancel (0x01/0x0040)HCI_Set_Connectionless_Peripheral_Broadcast_Receive (0x01/0x0042)HCI_Receive_Synchronization_Train (0x01/0x0044) |
|
控制器链路密钥存储(目前仅支持 RAM) |
HCI_Read_Stored_Link_Key (0x03/0x000D)HCI_Write_Stored_Link_Key (0x03/0x0011)HCI_Delete_Stored_Link_Key (0x03/0x0012) |
|
Test Mode |
HCI_Read_Loopback_Mode (0x06/0x0001)HCI_Write_Loopback_Mode (0x06/0x0002)HCI_Enable_Device_Under_Test_Mode (0x06/0x0003)HCI_Write_Simple_Pairing_Debug_Mode (0x06/0x0004)HCI_Write_Secure_Connections_Test_Mode (0x06/0x000A) |
|
Direct Test Mode (DTM) |
使能乐鑫自定义的 RF 测试指令(非 Bluetooth Core Spec 特性)。 |
|
Slot Availability Mask (SAM) |
无。SAM 通过 LMP feature bits 协商。部分实现,目前用于 ACL 空口时间调度。 |
|
Mobile Wireless Standards (MWS) 共存 |
HCI_Set_External_Frame_Configuration (0x03/0x006F)HCI_Set_MWS_PATTERN_Configuration (0x03/0x0073)部分实现,仅支持上述命令。
|
资源与调优选项
以下选项配置控制器容量与射频默认参数,本身不会使能或关闭 LM feature bits,也不会单独注册/注销 HCI 命令。
Kconfig 选项 |
说明 |
|---|---|
BR/EDR ACL 最大连接数 (1–7),限制控制器可维护的 ACL 链路数量。 |
|
ACL-U TX/RX buffer 数目。
ACLU_TX_BUF_NB 为 ACL-U TX buffer 总数,会体现在 HCI_Read_Buffer_Size 的返回结果中。DYNAMIC_ACLU_TX_BUF_NB 从该总数中划出。若配置为非 0,这部分 buffer 会在运行中需要时从 heap 中分配,而非在控制器初始化时预分配;在运行中未使用时可减少内存占用,但用到时可能会拖慢控制器执行速度。ACLU_RX_BUF_NB 为 ACL-U RX buffer 数目。 |
|
SCO/eSCO TX/RX buffer 数目。仅在 CONFIG_BT_CTRL_BR_EDR_MAX_SYNC_CONN > 0 时可见;静态 buffer 默认值随最大同步连接数变化。
静态 TX buffer 在控制器初始化时分配,由所有 sync 链路共享。动态 TX buffer 在第一条 sync 链路建立时分配,并在最后一条 sync 链路释放相关 buffer 后回收。
SYNC_RX_BUF_NB_PER_LINK 为每条链路的平均 RX buffer 数目(静态 + 动态)。若静态 RX buffer 少于 SYNC_RX_BUF_NB_PER_LINK × 当前 sync 链路数,则会随链路增减动态扩缩 RX pool。设为 0 可禁用动态 sync RX buffer。 |
|
|
SCO/eSCO 默认数据通路。目前仅支持 HCI;PCM/I2S 路由尚不可用。 |
TX Clear Channel Assessment。使能后,若检测到的信号强度高于 CCA 阈值(单位:-1 dBm),控制器可取消本次发送。无独立 HCI 命令。 |
|
ACL、Page、Page Scan、Inquiry Scan 的默认发射功率 (dBm)。
芯片实际支持的发射功率范围可通过函数
esp_bredr_tx_power_range_get() 获取;超出该范围的配置会被拒绝。ACL 链路功率可随对端 LMP 功率控制请求调整。ACL 初始功率继承自
TX_PWR_PAGE (Central) 或 TX_PWR_PSCAN (Peripheral),建议将二者配置在 ACL 最小/最大范围内。 |
|
APB 默认发射功率。需使能 CONFIG_BT_CTRL_BR_EDR_APB_EN。 |
|
CPB 与 Synchronization Train 的默认发射功率。需使能 CONFIG_BT_CTRL_BR_EDR_CPB_TX_EN。 |
Vendor Events
Kconfig 选项 |
相关 HCI vendor event |
|---|---|
使能 Legacy Authentication Completed Vendor Event,以帮助缓解 Legacy 认证过程中的 BIAS 攻击。默认使能。 |