大家好,今天开始给大家介绍一下蓝牙BLE技术,整个蓝牙技术其实从技术上分经典蓝牙和BLE蓝牙,而从技术模式上分三种:单模(only BLE),双模(BLE和经典都有,如手机),经典蓝牙BR/EDR。蓝牙应用领域较广,分布在消费电子、医疗器械、汽车电子等诸多领域,类似于LOL里面的近战英雄如剑圣、德玛等,它的通信距离一般适用于近距离无线电通信,因此广泛应用于通信控制、数据传输、室内定位等领域。

BLE是随着2010年7月7号蓝牙协议4.0发布而公诸于世,目前蓝牙协议发展至5.0+版本(增强了室内定位和物联网功能),BLE技术已经everywhere crowded,如今物联网领域比较火热的蓝牙mesh技术的协议栈基础就是基于BLE做的,因此趁此机会给大家介绍一下BLE技术,无线通信入手通俗来说分软件和硬件,硬件方面主要是天线和BLE芯片,现在主流的很多国内外厂商如TI、beken等将许多型号的芯片与对应的天线都做成一体(俗称板载天线,体积小更低功耗),与MCU通过uart等通讯接口进行通讯。软件方面则主要分为底层驱动、操作系统、协议栈框架、应用层这几部分(有些简单的单片机不一定有操作系统,但是会模仿操作系统设计一些任务事件调度和内存分配),底层驱动主要是跟芯片外设相关的寄存器配置并预留接口给操作系统,协议栈框架则是软件的核心部分,应用层会调用协议栈、操作系统、底层提供的api接口进行逻辑设计,此次不展开说明,单就BLE协议栈进行介绍,后续将娓娓道来。

如下图所示,蓝牙协议栈大的结构划分分成三大层:自底向上依次是Controller层、HCI层(不一定有)、Host层, controller层包括物理层、逻辑链路层,Host层包括L2CAP(逻辑链路控制和适配器)层、SM(安全管理)层、ATT(属性协议)层、GATT(属性协议配置规范)层、GAP(通用访问规范)层,再往上就是应用层部分了。

这里面的层级结构类似于《计算机网络》里面的OSI网络模型,即划分物理层、链路层、网络层、传输层、应用层,这是五层结构,还有七层结构,即从应用层中分离出会话层、表示层、应用层。只是BLE相对传统的TCP/IP网络模型有一些不同,通信方式也要简化一些,下面简单描述一下BLE的不同层级之间的作用。

试想,我们买了一个运动手环,一般的厂商都会把BLE做进去,那么它可以理解成是一个蓝牙设备A,我们自己的买的手机里面一般是设计的双模蓝牙,即也是支持BLE的,把它当做是蓝牙设备B;一开始我们戴手环准备出门之前会把设备B和A进行蓝牙配对连接,之后设备A跟着我们跑步的过程中,运动传感器会把数据送到手环的MCU里面,然后MCU会把数据透传给蓝牙芯片,然后通过天线发送2.4GHz射频无线电,设备B即手机的蓝牙天线会定向接收设备A的天线发出的物理信号,从而把信号传输给设备B的蓝牙芯片解码,然后在设备B的app上显示运动数据,好,我们来简单解析一下上述物理场景背后的物理过程。

设备A开机上电,蓝牙芯片就会让天线发广播,通过读取蓝牙芯片flash里面的软件,将广播数据报文装填好发送出去,这里面有自己的设备名称、Mac地址、广播周期、模式等信息,这时候我们手机设备B通过app去驱动手机的蓝牙天线扫描广播,咦,扫到了设备A的广播,正好是我想要的,然后B就开始发起连接请求(connection request),然后A收到B的请求后会发送回复,然后B也收到回复之后,两者的连接正式建立,这里面关于角色role、模式等就反映了GAP的功劳,配对包括加密等操作就是SM的功劳,发射物理信号反映了物理层的功劳,基础的报文(广播报文和连接后的交互数据报文)结构也反映了链路层的功劳(准确来讲链路层属于一个万金油角色,啥都能干,但是干活也累啊)。

建立蓝牙连接以后,A和B会进行很多数据交互,例如看看双方的MTU、feature,B还得发起SDP服务,即service discovery protocol,服务发现,这个概念源自经典蓝牙,但是这里也能用,GATT是个大的数据库,里面有许多profile的数据,通过ATT层与下层进行交互,B向A发起GATT服务发现,A就会告诉B自己的GATT里面放了多少service\characteristic\properties\descriptor\value,这样A的运动数据包就可以通过蓝牙传输给B,B就知道A传输的包里面是个什么东东了,是速度、心跳还是温度等等,其实这里面也提到了BLE协议栈开发的重点在于GATT,对服务进行增删查是每个蓝牙人的必备技能。

上述过程不得不提的是L2CAP层,这是个桥,真的是个桥,它负责连接上下层之间,负责分包的,controller层的包有很多,只有L2CAP才知道这个包是给GAP、SM还是ATT,这里面的channel-ID可以从报文里面读出来其通道。

上述是拿平时的日常生活来讲讲BLE协议栈的理解,不足之处,请大家批评指正!后续接着更新......

ble mac地址 协议_BLE(bluetooth low energy)协议栈介绍相关推荐

  1. ble mac地址 协议_BLE获取iphone mac地址的方法--【sky原创】

    标签: 本人用的BLE是TIcc2541,1.3.2协议栈 1.首先要说明的是,iphone手机将信息保护了,BLE设备读到的iphone地址是随机的,每次连接都会不同 2.下面我就具体说明如何查看手 ...

  2. ble mac地址 协议_让BLE设备的名称包含MAC地址

    对于研发和测试BLE来说,经常看到同名的设备,是极为不方便的,一大堆设备同时上电会让同事不知道哪一个设备才是自己真正想操作的目标.再说一下小米手环,家中有三支小米手环,打开设备搜索全是"MI ...

  3. Android开发之Ble(Bluetooth low energy)初识

    看见标题小伙伴们大概能看出我今天要说的是什么了!由于近来公司项目中有关于Ble方面的需求,对于Bluetooth方面的相关知识,因为这种需求工作中不多(你如果从事于智能硬件相关的岗位那另说),所以之前 ...

  4. Android:BLE(Bluetooth Low Energy)开发

    Demo下载 demo下载 BLE介绍 最近穿戴设备发展得很火,其大多数所用的技术是BLE(Bluetooth Low Energy).BLE是蓝牙4.0的核心Profile,BLE前身是NOKIA开 ...

  5. 基于蓝牙4.0的蓝牙打印机 低耗电蓝牙 BLE (Bluetooth Low Energy)

    作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf 基于蓝牙4.0的蓝牙打印机 低耗电蓝牙 BLE (Blue ...

  6. Bluetooth Low Energy 嗅探

    路人甲 · 2015/10/16 10:52 0x00 前言 如果你打开这篇文章时期望看到一些新的东西,那么很抱歉这篇文章不是你在找的那篇文章.因为严格的来说这只是一篇整理文.里面没有任何我的发现,也 ...

  7. 安卓在4.3的系统中提供了低功耗蓝牙Bluetooth Low Energy

     1.简介 BLE(Bluetooth Low Energy,低功耗蓝牙)是对传统蓝牙BR/EDR技术的补充.尽管BLE和传统蓝牙都称之为蓝牙标准,且共享射频,但是,BLE是一个完全不一样的技术. ...

  8. Bluetooth Low Energy 介绍

    1.简介 BLE(Bluetooth Low Energy,低功耗蓝牙)是对传统蓝牙BR/EDR技术的补充.尽管BLE和传统蓝牙都称之为蓝牙标准,且共享射频,但是,BLE是一个完全不一样的技术.BLE ...

  9. Bluetooth Low Energy 介绍 低功耗蓝牙介绍

    1.简介 BLE(Bluetooth Low Energy,低功耗蓝牙)是对传统蓝牙BR/EDR技术的补充.尽管BLE和传统蓝牙都称之为蓝牙标准,且共享射频,但是,BLE是一个完全不一样的技术.BLE ...

最新文章

  1. 开源点云实时压缩方案测试
  2. 入行时间序列预测必读的4篇论文(附代码)
  3. Android 模拟多线程下载
  4. codevs 1507 酒厂选址
  5. zipkin brave mysql_Zipkin和Brave实现http服务调用的跟踪
  6. ssis sql_如何在SSIS中使用SQL随机数
  7. 中upload依赖包_upload-labs writeup
  8. linux 跑java程序_Linux下独立执行Java程序
  9. Mac OS安装mysql教程
  10. 日本铁路“猫站长”走红
  11. CP2102 USB转串口驱动下载
  12. Halcon实现Otsu最大类间方差法
  13. vs2012窗体嵌入表格_2012年电子表格日
  14. oracle监听时区,对Oracle中时区及时间的认识
  15. Shell 获取服务器IP地址
  16. 在线人民币大写转换器工具-把数字金额转换成中文大写
  17. mybatis_mysql使用 学习笔记
  18. Cytoskeleton——SiR-肌动蛋白相关工具推荐
  19. html流星雨页面,HTML5炫酷流星雨特效
  20. 2.液晶显示屏结构简介

热门文章

  1. 吉林大学数据库系统原理期末复习笔记
  2. 数字统计-c语言-求特殊自然数
  3. python面向对象编程指南([美stevenflott_Python面向对象编程指南 ([美]StevenFLott洛特) 中文_IT教程网...
  4. vue的v-for循环中图片加载路径问题
  5. vertica MySQL_MySQL数据库之Vertica数据库的用法
  6. “为了交项目干杯”对“那周余嘉熊掌将得队”、“男上加男,强人所男”的Beta产品测试报告...
  7. 机器学习 任务管理器中显示cpu占用很高,gpu很低,但是设置了Gpu运算
  8. 网易AI携手新东方布局“AI+教育”
  9. 关于常用颜色小聚:有据说是令人舒服的颜色值,有R G B 常用颜色列表
  10. OpenCV检测手指个数