BLE中的蓝牙连接

本文详细阐述了蓝牙BLE的连接过程,包括连接参数如Access Address、CRCInit、WinSize、WinOffset、connInterval、connSlaveLatency、connSupervisionTimeout等的含义与作用。介绍了连接建立、跳频算法以及连接成功后的角色转换。同时,提到了HCI和GAP在蓝牙连接中的功能,如GAP定义的不同模式和过程。
摘要由CSDN通过智能技术生成


博主刚刚接触蓝牙,通过参考网上一些深度好文,做了一些整理,有理解错误的地方欢迎大佬指正!!
参考文档:
https://www.cnblogs.com/dirt2/p/6250410.html
https://blog.csdn.net/T_haiya/article/details/84579480
https://www.cnblogs.com/iini/p/8972635.html

建立连接过程

  1. 处于connectable状态设备(Advertiser),按照一定的周期广播ADV_IND或者ADV_DIRECT_IND包

  2. 主动连接的设备(Initiator),收到广播包,回应一个CONNECT_REQ请求,该数据包带有连接参数

  3. Initiator在发出CONNECT_REQ数据包之后,直接转化为Connection状态,成为Master角色(注意:这是“自动”的,不需要等待另一方的回应)。同样,Advertiser在收到CONNECT_REQ请求之后,也自动转变为Connection状态,成为Slave角色。

Initiator发出CONNECT_REQ,变为Connection态,但是收到Advertiser发回的ack,才算连接成功。
在这里有时会出现bug,即程序中收到了连接成功的回调函数,但实际上并没有收到ack,没有连接成功

  1. 此后,双方按照CONNECT_REQ参数所给出的约定,定时到切换到某一个Physical Channel上,按照Master->Slave然后Slave->Master的顺序,收发数据,直至连接断开。

连接参数

CONNECT_REQ PDU的payload中,定义和连接有关的参数。格式如下

InitA (6 octets)蓝牙地址 AdvA (6 octets)Slave蓝牙地址 LL Data (22 octets)

LL data则包含了所有的连接参数,包括:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值