导言

不同的蓝牙架构可以用在不同的场景中。从而协议帧的架构方案也会不同。

转载自:《三种蓝牙架构实现方案(蓝牙协议栈方案)》

蓝牙架构实现方案有哪几种?我们一般把整个蓝牙实现方案叫做蓝牙协议栈,因此这个问题也可以这么阐述:蓝牙协议栈有哪些具体的架构方案?在蓝牙协议栈中,host是什么?controller是什么?HCI又是什么?

大家都知道,不同的应用场景有不同的需求,因此不同的应用场景对蓝牙实现方案的要求也不一样,从而催生不同的蓝牙架构实现方案,或者说蓝牙协议栈方案。

架构1:host+controller双芯片标准架构

蓝牙是跟随手机而诞生的,如何在手机中实现蓝牙应用,是蓝牙规格首先要考虑的问题。如果你仔细阅读蓝牙核心规格,你会发现规格书更多地是站在手机角度来阐述的,然后“顺带”描述一下手机周边蓝牙设备的实现原理。如大家所熟知,手机里面包含很多SoC或者模块,每颗SoC或者模块都有自己独有的功能,比如手机应用跑在AP芯片上(一般而言,Android或者iOS开发者只需跟AP芯片打交道),显示屏,3G/4G通信,WiFi/蓝牙等都有自己专门的SoC或者模块,这些模块在物理上都会通过某种接口与AP相连。如果应用需要用到某个模块的时候,比如蓝牙通信,AP会自动跟蓝牙模块交互,从而完成蓝牙通信功能。市场上有很多种AP芯片,同时也有很多种蓝牙模块,如何保证两者的兼容性,以减轻手机的开发工作量,增加手机厂商蓝牙方案选型的灵活性,是蓝牙规格要考虑的事情。为此,蓝牙规格定义了一套标准,使得手机厂商,比如苹果,用一颗新AP替换老AP,蓝牙模块不需要做任何更改;同样用一颗新蓝牙模块换掉老蓝牙模块,AP端也不需要做任何更改。这个标准把蓝牙协议栈分成host和controller两部分,其中host跑在AP上,controller跑在蓝牙模块上,两者之间通过HCI协议进行通信,而且host具体包含协议栈那些部分,controller具体包含协议栈那些部分,两者之间通信的HCI协议如何定义,这些在蓝牙核心规格中都有详细定义,因此我把它称为双芯片标准方案。只要遵循这套标准,用户就可以随意替换Host或者Controller方案。当然,这种方案除了可以应用在手机中,也可以应用在任何其他设备中。AP芯片厂商一般会直接采用Bluez等开源协议栈来实现Host功能,而Controller部分大部分由蓝牙厂商自己来实现。另外,目前比较火的Zephyr开源蓝牙协议栈也支持这种架构。

HOST(AP 芯片) <--> 蓝牙 controller

架构2:单芯片整体方案

手机周边蓝牙设备是蓝牙另外一个非常重要的应用场合,通常手机周边设备功能比较简单,但对成本非常敏感,因此采用一颗芯片来实现整个蓝牙协议栈就是非常明智的选择,即把蓝牙协议栈所有功能都放在一颗芯片上,也就是说,host和controller都放在同一颗芯片上,由于host和controller都在同一颗芯片上,因此物理HCI就没有存在的必要性,host和controller之间直接通过API来交互。像Nordic的蓝牙协议栈Softdevice,就是采用这种模式。当然Zephyr也支持这种架构。

架构3:自定义双芯片架构

还有一些蓝牙设备功能比较强大,它需要一颗功能非常强大的MCU来做主应用,而蓝牙SoC只是整个系统的一部分,这种情况下,大部分蓝牙协议栈功能或者整个蓝牙协议栈功能都是跑在蓝牙SoC中,而蓝牙应用则跑在主MCU中,主MCU和蓝牙SoC之间的通信协议由厂商自己定义,因此称为自定义双芯片架构方案。这种方案也非常常见,可以说,除了架构1和架构2之外的架构,都可以称为架构3。架构3里面有一种非常特殊的情况,即主MCU和蓝牙SoC之间采用了HCI接口进行通信,由于这里的HCI只是用来进行物理通信,而通信的主体不是host和controller,通信包应用数据也不遵循蓝牙核心规格规范,因此不能把它看成第1种架构,Nordic的serialization方案就属于这种特殊情况。

主 MCU + 蓝牙有关的APP() <-自定义协议-> 蓝牙Soc

蓝牙 BLE 协议学习: 3种蓝牙架构实现方案(蓝牙协议栈方案)的更多相关文章

  1. 蓝牙 BLE 协议学习: 001-BLE协议栈整体架构

    背景 在深入BLE协议帧之前,我们先看一下BLE协议栈整体架构. 转载自:<深入浅出低功耗蓝牙(BLE)协议栈> 架构 如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片, ...

  2. 蓝牙 BLE 协议学习: 000-有关概念介绍

    背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1 ...

  3. [蓝牙] 2、蓝牙BLE协议及架构浅析&&基于广播超时待机说广播事件

    第一章 BLE基本概念了解 一.蓝牙4.0和BLE区别   蓝牙4.0是一种应用非常广泛.基于2.4G射频的低功耗无线通讯技术.蓝牙低功耗(Bluetooth Low Energy ),人们又常称之为 ...

  4. ESP32:蓝牙BLE控制M3508电机

    ESP32:蓝牙BLE控制M3508电机 先给各位朋友拜个年,祝大家新春快乐,事事顺利,身体健康啊! 还是熟悉的3508,内容概述: ESP32主控 蓝牙BLE通信 使用实时系统(FreeRTOS) ...

  5. 蓝牙(Bluetooth) IEEE 802.15.1 协议学习

    catalogue . 蓝牙概念 . 配对和连接 . 机密安全性 . 蓝牙协议分类 . 蓝牙协议栈 1. 蓝牙概念 蓝牙(Bluetooth)是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网 ...

  6. 玩转BLE(3)_使用微信蓝牙精简协议伪造记步数据

    1. 前言 在物联网时代,有一个问题肯定会让人头疼(现在已经初露端倪了): 物联网中的IOT设备有两个主要特点: 1)简单小巧(不具备复杂的人机交互接口,需要手机等终端设备辅助完成配置.控制等功能). ...

  7. 蓝牙BLE: ATT协议层中属性(Attribute)

    ATT(Attribute Protocol)属性层是GATT和GAP的基础,它定义了BLE协议栈上层的数据结构和组织方式. 属性(Attribute)概念是ATT层的核心,ATT层定义了属性的内容, ...

  8. 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

    本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的 ...

  9. 深入浅出低功耗蓝牙(BLE)协议栈

    深入浅出低功耗蓝牙(BLE)协议栈 BLE协议栈为什么要分层?怎么理解蓝牙"连接"?如果蓝牙协议只有ATT没有GATT会发生什么? 协议栈框架 一般而言,我们把某个协议的实现代码称 ...

随机推荐

  1. 如何删除 AppStore 中的恶意评论 iOS

    AppStore 中的评论,对于产品的形象影响很大.如果评论榜中出现了恶意评论,会对产品形象影响很大,当然这些差评有可能是用户的真实反馈,需要产品设计人员做好产品设计,满足客户的需求.另外也可能是竞争 ...

  2. 第四节:Vuejs组件及组件之间的交互

    一. 组件及其交互 1.组件的注册 (1).全局注册 Vue.component('组件名称', { }) 第1个参数是标签名称,第2个参数是一个选项对象. 选项参数包括 data:必须是一个func ...

  3. SpringBoot与Mybatis整合,插件生成dao、mapper、pojo

    一.创建SpringBoot项目,引入相关依赖包 <?xml version="1.0" encoding="UTF-8"?> <projec ...

  4. ES5中的this

    参考资料:>>> this的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理: this 永远指向最后调用它的那个对象 下面我们来看一个最简单的例子:(例子均来自参考资 ...

  5. 3_03_MSSQL课程_Ado.Net_登录复习和ExcuteScalar

    SQL注入 ->登陆窗体破解 ->配置文件 ->首先在 app.Config文件中添加 节点,如下: <connectionStrings> <add name=& ...

  6. Python学习第十课——文件的基本操作

    文件基本操作 文件读操作 #读出路径下的测试.txt文件 f = open('测试.txt', encoding='utf-8') # 打开要读文件 data = f.read() # 读取内容 pr ...

  7. WebView 设置请求头 Header

    package com.webview.demo; 2 3 import android.os.Bundle; 4 import android.support.v7.app.AppCompatAct ...

  8. Day11 - L - 邂逅明下 HDU - 2897

    当日遇到月,于是有了明.当我遇到了你,便成了侣.那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话)小t和所有世俗的人们一样,期待那百年难遇的日食.驻足 ...

  9. rhel7 系统服务——unit(单元)

    Linux内核版本从3.10后开始使用systemd管理服务,这也是系统开机后的第一个服务.systemd通过unit单元文件来管理服务. 它保存了服务.设备.挂载点和操作系统其他信息的配置文件,并能 ...

  10. UniGui安装(01)

    UniGui安装.Delphi10和uniGUI1.90.0.1509 1]下载 2]安装 3]目录说明 1]下载 在我百度网盘里  uniGUI1-90-0-1509.zip https://pan ...