BT HCI主机控制接口#
BlueTooth 的HCI(主机控制接口)包括三种类型控制接口:
- 通过UART使用HCI 
- 通过virtual HCI 层使用HCI 
- 混合方式 
本实验使用最基础的UART方式
UART HCI 控制器#
这使用 UART 作为 HCI 控制器,这要求 UART 设备强制支持 RTS/CTS。
可以通过 idf.py menuconfig 来配置串口号和串口波特率。
源代码参考#
参见参考资料与源代码
UART分配#
UART0 用作正常输出或由 IDF 监视器使用
UART1 或 UART2 用于传送 HCI 消息
需要 UART1 或 UART2 的 RTS 和 CTS 线。引脚 5、18、23、19 分别用作 UART1 或 UART2 的 TxD、RxD、CTS、RTS 引脚。
实验步骤#
配置项目#
idf.py menuconfig
UART编号配置:HCI UART(H4) Options > UART Number for HCI
UART波特率配置:HCI UART(H4) Options > UART Baudrate for HCI
构建和烧录#
构建项目并将其烧写到板上,然后运行监控工具查看串行输出:
命令行界面:#
idf.py -p PORT flash monitor 
(要退出串行监视器,请键入Ctrl-]。)
Clion界面:#
选择 flash 并运行
选择 monitor 并运行
示例输出#
该示例重置 HCI UART 传输并启用蓝牙控制器。
I (442) CONTROLLER_UART_HCI: HCI UART1 Pin select: TX 5, RX 18, CTS 23, RTS 19
I (442) BTDM_INIT: BT controller compile version [078d492]
I (452) system_api: Base MAC address is not set
I (452) system_api: read default base MAC address from EFUSE
I (462) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
在这些输出发生后,HCI 消息可以通过 UART1 或 UART2 进行通信。(本例中为 UART1)