3.4 协议栈划分
构建一个低功耗蓝牙产品可能使用多种不同的协议栈划分方案。标准规范定义了一种协议栈划分的方法,即使用主机控制器接口分隔主机和控制器这两部分。即便如此,我们也可以使用许多不同的方案。

3.4.1 单芯片解决方案
单芯片解决方案可能是低功耗蓝牙里最简单的协议栈划分方案,如图3-6所示。图中其实并未划分协议栈,产品的所有部分都装在一个芯片上。该芯片包括控制器、主机软件和应用程序。这是低功耗产品的极简方案,只需要一个电源、一根天线、一些连接按钮或灯泡的硬件接口,以及一些额外的分立元件。




Android低功耗蓝牙分段发送_应用程序



不过,使用单芯片解决方案也有一些劣势。首先,因为芯片资源使用受限会导致开发环境使用起来也很困难。其次,为降低成本需要将软件烧录在片内的只读存储器(ROM)中,这就需要为每个产品单独定制芯片。当产品的批量很大时,这样做可以减少物料清单中元件的数量,但在小批量生产时,成本却可能相当昂贵。
对小批量生产或是原型产品来说,可以选用量产的单芯片和一块小的非易失性存储器芯片相结合,前者包含了从控制器到主机的所有一切,后者用于存储应用程序。这会让小批量生产具有非常低的成本。上电时,在非易失性存储器中的内容被读入单芯片中执行。因此,可以同时拥有一个有效的原型平台,以及一个具有成本效益的小规模生产方案。

3.4.2 双芯片解决方案
经典的双芯片解决方案是将控制器放在一个芯片上,而将主机和应用程序放在另一个单独的芯片上,如图3-7a。这种模式通常用于手机和电脑,因为它们已经拥有了非常强大的处理器能够运行完整的主机和应用软件栈。该方案通常使用提供了标准的主机控制器接口的量产控制器芯片。对于拥有强大处理器的设备而言,这种架构上的划分固然是一种理想的方案,不过对其他类型的设备而言,该方案却不能视作理想的选择。


Android低功耗蓝牙分段发送_协议栈_02



一种替代的双芯片解决方案把控制器和主机放在同一个芯片上,而把应用程序放在另一个单独的芯片上,如图3-7b所示。这样做的好处是,由于应用芯片不需要太多的内存或其他资源来运行应用程序,它可以是一个非常小的低功耗微处理器。两个芯片之间的接口通常是一个自定义的接口,比如采用简单的UART。该解决方案的优点是两种标准的量产芯片可以相互组合,同时,还可使用关于应用芯片的标准开发工具。

3.4.3 三芯片解决方案
当然,还可以使用多芯片解决方案,例如结合一个标准的控制器芯片、一个主机芯片和一个应用芯片,如图3-8所示。其中,主机芯片将需要两个独立的接口。


Android低功耗蓝牙分段发送_解决方案_03



这种解决方案往往十分昂贵,通常只限于开发那些使用多个接口以允许每层单独进行测试的系统。小批量生产时,由于减少元器件带来的成本节省较为有限,也能够容忍这种复杂性。对于大批量生产的产品,从成本的角度来看绝对不会采用这种架构。