前言:大创项目结题在即却没怎么动手,现在才开始学习,大家不要学我这样拖沓
学习方式是看书加看视频加后期的开发板实验,本博客内容基本照搬书本和视频内容
BLE4.0
特点:低功耗,低延迟(latency),低吞吐量。听说一颗纽扣电池能用一年
1.什么是蓝牙4.0ble协议栈
协议定义的是一些列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发:协议栈是协议的具体实现形式,通俗的理解为代码实现的函数库,以便于开发人员调用。
既然蓝牙4.0ble协议栈已经实现了蓝牙4.0ble协议,那么用户就可以使用协议栈提供的api进行应用程序的开发,在开发过程中不必过的关注蓝牙协议的具体实现细节,只需要关注一个核心的问题:应用程序的数据从哪里来到哪里去
协议栈采用分层思想
app
||
|| 通用访问配置文件(GAP)
主机 通用属性配置文件(GATT)
物理层:1mbps自适应跳频的gfsk射频
链路层:用于控制设备的射频状态,设备将会处于一下五种状态之一:等待、广告、扫描、初始化、连接。广播设备不需要建立连接就可以发送数据;而扫描设备收听广播设备发出的数据;发起连接的设备通过发送连接请求来回应广播设备,如果广播设备接受连接请求,那么广播设备与发起连接的设备将会进入连接状态。发起连接设备成为主机,接受连接设备称为从机
比如:
peripheral(外围设备) =========连接======== central(主控)
可连接设备,扮演从机角色,如心率计 扫描广播(advertisement)并启动 连接,扮演主机角色,比如智能手机
另一种情况:
broadcaster(广播者) ==============不建立连接======== observer(观察者)
在不建立连接情况下广播 搜寻广播但不建立连接
如只发数据的温度计 只收数据的显示器
主机控制接口层(Host Controller Interface)
为主机和控制器之间提供标准的通信接口。这一层可以使软件api、或者硬件接口如(UART、SPI、USB)
逻辑链路控制以及自适应协议层(Logical Link Control and Adaptation Protocol)
为上层提供数据封装服务,允许逻辑上的点对点数据通信。
安全管理层(Security Manager)
定义了配对和密钥的分配方式,并且为协议栈其他层与另一个设备之间的安全连接和数据交换提供服务。
属性协议层(Attibute protocol)
允许设备向另一个设备展示一块特定的数据,称之为属性。在ATT环境中,展示属性的设备称之为服务器,与之配对的设备称之为客户端。链路层状态(主机和从机)与设备的ATT角色是相互独立的。设备既可以是服务器也可以是客户端。
通用属性配置文件层(Generic Attribute profile)
定义了使用ATT的服务框架。GATT规定了配置文件(profile)的结构。在BLE中,所有被profile或者服务用到的数据块都称为特性,-两个建立连接的设备之间所有数据通信都是通过gatt子程序处理,应用程序和profiles直接使用GATT层