BLE中的概念

这篇整理下ble中的一些概念。
  • BLE结构,如下图包含三部分
    1.控制器 controller
    2.主机 Host
    3.应用 Application
    在这里插入图片描述
    - 链路层状态机
    链路层定义了设备的5种状态

    1.就绪态 Standby
    上电后,链路层进入并保持就绪态,此状态下链路层不会收发任何数据。直到接收到Host的命令,就绪态可以进入其他4种状态,其他4种状态也可以进入就绪态,是链路层的中间状态。

    2.广播态 Advertising
    链路层在此状态下会发生广播数据包,也可以发生扫描响应,用来回应主动扫描设备,广播态设备停止广播后可进入就绪态。在收到发起者的连接请求后也可以进入连接态。

    3.扫描态 Scanning
    扫描态就是监听那些设备正在广播。扫描态有2个子状态
    a 被动扫描
    b 主动扫描
    被动扫描进行接收广播报文,主动扫描则发送扫描请求给广播态设备,并获取广播态设备发送的扫描响应数据。扫描态设备只能进入就绪态,转换条件是停止扫描。

    4发起态 Initiating
    为了发起连接,链路层要处于发起态,处于发起态的发起者,侦听自己想要连接设备,如果收到了要连接设备的广播报文,链路层就会向其发起连接请求并进入连接态,并假设广播者也进入连接态。

    5.连接态 Connection
    从广播态或者发起态都可以进入连接态,分别对应从或主。也就是从机只能从广播态进入连接态,主机只能从发起态进入连接态。从设备不断广播,主设备则发起连接,这样双方都进入了连接态,进入连接态后,主设备必须定期向从设备发送报文,从设备只能通过回复这些报文才能发送字节的报文。当发生监督超时(SupervisionTimeout)后就会进入就绪态

    在这里插入图片描述
    5个状态同一时刻只有一个处于激活状态,这是对于单链路情况,如果有多个链路就可能链路1处于connection状态,链路2处于advertising状态。



ble中众多的角色 Role

master/slave
是主机/从机意思,是相对于链路层来说的,master一般在协商过程中起决定作用

server/client
是服务端/客户端意思,是相对于GATT层来说的,server是提供数据的一方,client是使用数据的一方,数据访问者。

central/peripheral
是中央设备/外围设备,是GAP定义的角色。

Observer/Broadcast
是观察者/广播者意思,是针对Scanner/Advertiser来说的

下面把这些角色传起来
peripheral作为Advertiser开起广播就是Broadcast—>
central作为Scanner扫描广播就是Observer并发送扫描请求—>
peripheral收到扫描请求,向central发送扫描响应数据—>
central向peripheral发起连接作为master—>
peripheral进入连接态作为slave
peripheral提供数据作为server,central访问数据作为client


- 广播事件
有4类,分别为:
1.通用广播(也叫非定向可连接广播)ADV_IND
最常用广播方式,可以被扫描,收到连接请求后作为从设备进入连接态

2.定向广播(也叫定向可连接广播) ADV_DIRECT_IND
针对快速建立连接需求,广播数据会占满整个广播信道,数据净荷只包含广播者地址和发起者地址,发起者收到给字节的定向广播后,会立即发送连接请求

3.不可连接广播(也叫非定向不可连接广播)ADV_NONCONN_IND
广播数据,但是不能进入连接态

4.可发现广播(非定向扫描时间)ADV_SCAN_IND/ADV_DISCOVER_IND
不可连接,但是可以响应扫描

- 广播间隔
指2次广播事件之间最小时间间隔,单位是0.625ms,范围20ms~10.24s,链路层会在每次广播时间产生随机广播延时时间(0-10ms)
下面是nrf52832设置广播间隔sdk
在这里插入图片描述


- 扫描事件
只有Scanner才有扫描时间,2个概念:扫描窗口(scanwindow)是链路层侦听广播通道持续的时间。扫描间隔(scaninterval)是2个连续的扫描窗口开始之间的时间。
且规定:
1.扫描窗口和扫描间隔不能大于10.24s
2.扫描窗口不能大于扫描间隔时间


- 连接事件
每隔一定时间,主机从数据通道发送一个数据包,从机在接收到数据包后,如果从机有数据发送,需要在150±2us做应答。从机也可以不应答。
这就衍生出三个参数,叫连接参数conn_params
1.连接间隔 connection interval
必须是1.25ms倍数范围值6(7.5ms)到3200(4s),前者为最小连接间隔,后者为最大连接间隔

2.从机延迟 slave latency
就是从机可以连续不做主机应答的次数

3.监督超时 supervision timeout
是2个成功连接事件之间间隔的最大值,值是10ms倍数,且必须大于(1+slave latency)*connection interval
下面是nrf52832设置连接参数的sdk
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值