蓝牙4.0BLE协议栈介绍

本文转载自:http://www.maiziedu.com/wiki/bluetooth/stack/  仅供学习,如有侵权请告知。

 

问题:什么是BLE协议栈?BLE协议栈与BLE协议的关系?

 

顾名思义,人类之间需要一种语言才能沟通,机器之间,电子之间也有一个标准,也就是作为通讯标准,也就是通讯协议。

 

协议:定义了一系列通讯标准,通讯双方都按照这一标准,进行数据通讯。

 

协议栈:协议的具体实现形式,实现的函数库,固件库。

 

把个个协议集合到了一起,以函数库的形式实现,并用这些给用户提供一些应用层的API接口,用户可以进行一些调度。

 

问题:如何使用BLE协议栈进行开发?

 

三个步骤:

 

1.不需要具体了解BLE协议栈的具体复杂的过程,只需要知道它的数据从哪里来,需要到哪里去就行了。

 

2.根据BLE协议栈调用它里面的函数,实现自己的一些功能。

 

3.可以自己编写一些函数,实现自己需要特定的功能。

 


协议结构图

 

stack.png

 

第一层:physicallayer(物理层)

 

信道带宽提供2M,提供三个广播信道1M。

 

第二层:link layer(链路层)

 

执行一些基带协议,底层的数据包管理协议。

 

第三层:host controller interface (主机控制接口层)

 

提供主机与控制层 的通讯方式,以及命令格式,重用蓝牙标准,比如一些串口,USB等等。

 

第四层:L2CAP(逻辑链路于适配器协议层)

 

为它上层提供数据业务,提供端到端的逻辑数据通信。

 

第五层:security manager(SM)安全管理层

 

层与层之间会有通信,它是建立数据交换安全方面的数据知识。

 

第六层:attribute protocol(ATT)通用接入层

 

定义了一些通用接口,供应用层和底层之间的调用,比如你要调底层的硬件模块的东西,就需要这个层的底层的驱动模块去实现它的一些功能,所以它会同时封装一些API的函数设置。

 

第七层:generic attribute profile(GATT)(属性协议层)

 

允许设备以属性的形式向外设备暴露它的一些数据,就像广播者与观察者之间,它一直在广播自己的属性,数据出去。观察者观察到了它以后就可以把它的属性提取出来。

 

第八层:generic access profile(GAP)通用属性剖面

 

具体属性协议的应用框架,应用了属性协议的应用架构,通过这个层,可以在里面开发一些应用的东西,这里做好了一些应用的框架,可以在上面写一些开发。