blemac地址协议_BLE(bluetoothlowenergy)协议栈介绍

blemac地址协议_BLE(bluetoothlowenergy)协议栈介绍

2023年6月29日发(作者:)

blemac地址协议_BLE(bluetoothlowenergy)协议栈介绍⼤家好,今天开始给⼤家介绍⼀下蓝⽛BLE技术,整个蓝⽛技术其实从技术上分经典蓝⽛和BLE蓝⽛,⽽从技术模式上分三种:单模(onlyBLE),双模(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⾥⾯放了多少servicecharacteristicpropertiesdescriptorvalue,这样A的运动数据包就可以通过蓝⽛传输给B,B就知道A传输的包⾥⾯是个什么东东了,是速度、⼼跳还是温度等等,其实这⾥⾯也提到了BLE协议栈开发的重点在于GATT,对服务进⾏增删查是每个蓝⽛⼈的必备技能。上述过程不得不提的是L2CAP层,这是个桥,真的是个桥,它负责连接上下层之间,负责分包的,controller层的包有很多,只有L2CAP才知道这个包是给GAP、SM还是ATT,这⾥⾯的channel-ID可以从报⽂⾥⾯读出来其通道。上述是拿平时的⽇常⽣活来讲讲BLE协议栈的理解,不⾜之处,请⼤家批评指正!后续接着更新......

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688026072a67929.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信