说一说蓝牙core spec

目前看spec是没有中文版的,都是英文

 

经典蓝牙和BLE你可以把它们区分成为两个不同的设备,但是使用同一条天线,物理地址也不同,手机扫描的话也是两个设备

 

看spec可以看两部分charts,就是连接的图表,这个两部分charts,可以代表core spec了

 

主要分成两部分,其一是经典蓝牙,其二是BLE

第一是经典蓝牙的

Vol2  part F  Message Sequence charts

可以很清楚看到经典蓝牙的连接过程,通过这些过程在去看其他部分,经典蓝牙主要是LMP控制比较多,连起来就看L2CAP数据格式了。

 

经典蓝牙概要流程:

主端发paging req(发送ID packet  ID上放对端的物理地址LAP)->对端发paging rsp(回ID packet)->主端发FHS(主要是同步CLK)->对端回ID->然后主端各种LMP控制req->对端发LMP控制rsp(也可以做role switch)->主端发L2CAP参数req->对端发L2CAP参数rsp->主端发L2CAP连接(带上CID编号包括avdtp rfcomm avctp hfp 各种协议) req->对端发L2CAP连接rsp->然后是各种上层协议数据交互,这个就比较容易看了

 

 

 

第二部分是低功耗蓝牙的就是BLE

 

Vol6 part D  Message sequence charts 

也可以看到BLE的链接方式,然后再对着看其他部分,主要是LinkLayer层控制比较多,连起来也是L2CAP,不过基本上都是ATT的数据。

 

BLE的场景可以使用nrf connect app或者ios  light blue app玩一下,

我们一般的开发的传感器设备,会做一个advertister  salve 服务器, app对应的手机蓝牙会做一个scanner master client

 

 

BLE的概要流程

 

advertister广播(广播自己的蓝牙地址和UUID)->scanner 收到之后发一个scan req(同时带上自己的蓝牙地址)->

advertister 发一个scan rsp(带上自己的蓝牙名称)->【然后你手动点一下app上面的要连接的设备】scanner 就会发一个

connection indication packet(这个时候会带上transmit window的参数还有offset   interval 表示多久之后会给你发包来连接advertister) ->scanner 发送L2CAP  参数update的req(主要是internal 和 Timeout) ->advertister回包是否接受->advertister 发LLCP connection update indication(这个东西非常重要,就是我们经常在设备上面调试的连接间隔或者丢包次数之类的参数,

影响BLE功耗,每次update都由我们设备发出)->接下来就是scanner(Master)exchange MTU(询问一次传输多少个字节,一般蓝牙4.2之前是一次只能传输27个字节的,4.2之后是255) ->scanner(Master)ATT read by group type(主要是找到attribute的标签组)->scanner(Master)ATT read by type(直接读对应的标签)->scanner(Master)ATT write(写对应标签的disable indication and  enable notificition 打开notificition) ->最后就是手机的app每隔一个interval发空包给我们设备,然后我们设备给对应标签的数据。

 

 

 

说到标签为就有一种灵感,包括经典蓝牙的L2CAP的CID标签, ATT的标签,还有WIFI  MQTT的TOPIC 标签,还有WIFI HTTP的域

 

我的感觉就是,标签其实就是IOT中,就是一个标志性的和C语言底层HANDLE一样存在的一个核心

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值