引言
ACI 指令的应用场景:
目前市面上的 BLE 产品还是以单芯片方案为主,即芯片厂商提供包含蓝牙功能的 SOC 和对应的 SDK,用户在此 SDK 的基础上进行 BLE 应用层的开发。而且协议栈一般都打包成库,以接口的形式提供给应用层。如上图的第三个方框所示。
而有些 BLE 产品是多芯片方案的,如智能手表,会以一颗比较强大的 MCU 作为主控,再外接一个蓝牙模块(或协处理器)实现蓝牙功能。ST 为该场景下的蓝牙部分的实现提供了强大、灵活的支持。
上图中间方框中的蓝色方框部分,对应了单芯片方案中的协议栈的部分;该部分包含两个固件:
- 运行在 BLE 芯片上的 DTM 固件(SDK->Project\BLE_Examples\DTM)
- 运行在 MCU 上的应用例程固件(SDK->Project\STM32L)
DTM 固件封装了蓝牙标准 HCI 接口并进行了扩展,可通过 UART 、SPI 接口和外部 MCU 通讯。
MCU 上的应用例程和 DTM 固件对接,并为上层用户提供了类似于单芯片方案中的协议栈接口。用户可像开发单芯片方案一样,进行 MCU 上的 BLE APP 层面的开发。
这样的层次架构带来一个巨大的好处:在固件适配方面,用户可以以最小的代价,在单芯片方案、多芯片方案中进行硬件置换。
当我们把上图中的 MCU 换成 PC 时:
看下图,有个几个名词:HCI, ACI, DTM, GUI tool。
HCI 是蓝牙核心规范定义的一个接口规范,通过该接口规范,我们可以控制 BLE 控制器做一些事情。
ACI 是 ST 的 BLE SDK 定义的一个接口规范。ACI 是对 HCI 的引用和扩展。
DTM 是 ST 的 BLE SDK 提供的一个固件工程;主要实现了 ACI 接口。
BlueNRG GUI Tool 是和 D