ble协议栈从零开始一(学习方法和基本概念)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/XG_2013/article/details/80629121

前言:

目前市面上的低功耗的芯片非常多,比较出名的有nordic,ti,dialog等,国产的有bluex,丰加等。个人觉得不管是学习还是开发,nordic的芯片都是最好的。nordic的编码风格对用户非常友好,上层的API函数的抽象封装非常易懂。如果你是初学者建议你选择nrf52832。单纯的ble的开发其实并不需要对协议栈有多了解,只需要了解上层的GAP,GATT,一些profile,和 SM即可。哈哈既然你进来了,协议栈还是了解一下。

一、学习途径:

1)www.bluetooth.org(ble的官网)

2 ) www.nordicsemi.com(假设你选择的是nordic的芯片)

如上图蓝牙的官网,你可以下载到你需要的spec


上图标红地方都是经常用到的spec,core spec介绍,这个蓝牙协议最核心地方,建议先从 4.2版本开始看起。虽然现在5.0版本也有了,但是5.0在4.2版本增加很多feature特别是广播的格式,容易让别人难以理解,理解了4.2版本再去看5.0会轻松很多。mesh的spec是介绍ble组网,通过ble广播组成的泛洪的网路(笔者有幸参与了自己公司的mesh协议的编写后续会逐步添加文字介绍),GATT spec介绍的是ble设备链接后的数据交互,以及给予这个衍生出来的profile。


上图是nordic的官网,我们比较关心的就是popular product,在那个下拉框选到你的芯片的信号,然后你就可以下载到这芯片的SDK,MESH的SDK,各种开发工具,调试工具


选择上图的download,哈哈你能找到你所需要的所有的东西了。

二、基于core_4.2spec 梳理一下蓝牙基本概论:

少说话,直接上图


上图是蓝牙的架构图,上图这是什么东东,host是什么?LE controller是什么? BR/EDR controller是什么? AMP controller是什么?

1)controller包含了蓝牙协议栈的physical layer 和 link layer,负责信号的调制解调,逻辑链路的建立,

2 ) host 主要是对controller数据的进一步抽象,GAP,ATT,SMP, l2CAP都是在这个模块

3) 这host 与 controller 通信的接口叫做HCI借口,一般可以是串口,USB接口等

蓝牙诞生之初,使用的是BR技术,此时蓝牙的理论传输速率,只能达到721.2Kbps。在那个年代,56Kbps的Modem就是高大上了,这个速度可以说是惊为天人了啊!但是科技变化太快了,BR技术转眼就过时了。那怎么办呢?缝缝补补一下,增强速度呗,Enhanced Data Rate就出现了。使用EDR技术的蓝牙,理论速率可以达到2.1Mbps。这一次的升级换代,还算优雅,因为没有改变任何的硬件架构、软件架构和使用方式上的改变。也许你也猜到了,EDR又落伍了,看看人家WIFI(WLAN),几十Mbps,上百Mbps,咱们才2.1Mbps,也太寒酸了吧!那怎么办呢?蓝牙组织想了个坏主意:哎,WIFI!把你的物理层和MAC层借我用用呗!这就是AMP(Alternate MAC and PHY layer extension)。艾玛,终于松口气了,我们可以达到54Mbps了。不过呢,由于蓝牙自身的物理层和AMP技术差异太明显了,这次扩展只能是交替使用(Alternate)的,也就是说,有我(BR/EDR)没你(AMP)。嗯!不优雅!

看到这应该明白LE、BR、EDR、AMP了吧。

【注1:细心的读者可能会注意到,这里特别强调了optional和alternate这两个字眼,这是蓝牙Spec的原话。它意味着,BR和EDR是可以同时存在的,但BR/EDR和AMP只能二选一。】


1)图中所描述的蓝牙系统的组成部分,如Bluetooth Core和Bluetooth Application,如Host和Controller,都是指“逻辑实体”。所谓的“逻辑实体”,需要和日常生活中的“物理实体”区隔开。如在做电路设计时,一个蓝牙芯片、一个主控CPU,就是指物理实体。而蓝牙协议所描述的这些“逻辑实体”,不一定会和物理实体一一对应,如在实际应用中,Host和Bluetooth Application可能会位于同一个物理实体中(主控CPU),而Controller单独位于另一个物理实体中(蓝牙芯片)。

2)蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)。蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制;蓝牙应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,百花齐放,定义出各种各样的策略,如FTP、文件传输、局域网等等。

3)Bluetooth Core由两部分组成,Host和Controller。这两部分在不同的蓝牙技术中(BR/EDR、AMP、LE),承担角色略有不同,但大致的功能是相同的。Controller负责定义RF、Baseband等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路(Logical Link);Host负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让Bluetooth Application更为方便的使用。

4)在一个系统中,Host只有一个,但Controller可以一个,也可以有多个。如:单独的LE Controller;单独的BR/EDR Controller;单独的LE+BR/EDR Controller;在单独的BR/EDR Controller或LE+BR/EDR Controller基础上,增加一个或多个额外的AMP Controller。



参考文章:窝窝科技点击打开链接

                :core_4.1




猜你喜欢

转载自blog.csdn.net/XG_2013/article/details/80629121