![]() |
![]() |
![]() |
Host控制接口(HCI)
主控制器接口(HCI)层是在蓝牙协议栈的主机(Host)和控制器(controller)之间传送命令和事件的薄层。在纯网络处理器应用程序(即host_test项目)中,HCI层通过SPI或UART等传输协议实现。
在诸如simple_peripheral项目的嵌入式无线MCU项目中,HCI层通过无线MCU内的函数调用和回调来实现。所有与Controller进行通信的命令和事件(如ATT,GAP等)将最终称为HCI API,从协议栈的Host通过HCI层传递到Controller。同样,控制器通过HCI将接收到的数据和事件发送到Host上层。
除了标准的蓝牙LE HCI命令之外,还有许多HCI扩展供应商特定的命令可以扩展控制器的一些功能,以供应用使用。有关在嵌入式应用程序中调用的可用HCI和HCI扩展命令的描述,请参阅BLE Stack API参考。
BLE5-Stack支持纯网络处理器配置(host_test),即允许应用程序在外部MCU上运行以连接到BLE5-Stack。网络处理器可以通过外部传输协议(UART,SPI等)接受所有LE HCI命令; 然而,因为 BLE Controller和Host都驻留在无线MCU上,所以一些HCI命令将使其相应的事件被TI BLE主机消耗。因此,不可能使用标准HCI LE命令将外部的蓝牙主机与CC2640无线MCU进行接口连接。网络处理器配置应使用HCI和TI供应商特定的HCI命令来实现外部蓝牙应用。
类似于网络处理器配置(host_test),BLE5-Stack可以被配置为使用子集HCI命令,然后通过UASRT,SPI传递给控制器,从而能够切换到完整的嵌入式应用。此配置称为生产测试模式(PTM)。可用的HCI命令的子集是执行蓝牙RF认证的子集。有关如何在嵌入式应用程序上启用PTM的信息,请参阅使用生产测试模式(PTM)。
当需要满足以下条件时,应考虑将PTM用于直接测试模式(DTM),以代替完整的网络处理器配置(host_test):
-
设备只会烧写一次FLASH在生产过程中。并且固件镜像无法再更改
-
HCI传输层FLASH可用,PTM需要FLASH在应用程序,因此减少应用程序FLASH
注意
BLE5-Stack也支持直接测试模式(DTM)。DTM在蓝牙核心规范版本5.0的直接测试模式部分([第6卷,第F部分))中有详细描述。Host_test支持所有DTM命令以及供应商特定的调制解调器测试命令。有关如何设置用于定制产品和芯片包类型的host_test应用程序二进制文件的信息,请参阅配置CC2640的蓝牙直接测试模式(SWRA530)。
在应用程序中使用HCI和HCI供应商特定的命令
按照以下步骤使用这些命令并在应用程序中接收各自的事件:
- 包括HCI传输层头文件。
`#include “hci_tl.h”`
- 注册用于HCI/Host消息的GAP,以便从控制器接收事件。这应该在应用程序初始化函数中完成。