LLCAP层
- 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。
- 每个连接事件(Connection events)中,都需要由Master发起包,再由Slave回复。
- 上层数据包会在l2cap层拆包组包,分别在一个一个连接事件上传输。
LL层
- 链路层
- 广播:
- 在广播事件中, 每一个广播事件都会在 3 个广播信道中进行数据传输, 而且每一个事件都是以最小的信道编号开始传输;也就是说当广播事件来了,这个 PDU 是依次从广播通道 37、 38、 39 中进行传输。并不是一起同时在三个信道一起广播。设备B不断发送广播信号给手机(Observer),如果手机不开启扫描窗口,手机是收不到设备B的广播的,如下图所示,不仅手机要开启射频接收窗口,而且只有手机的射频接收窗口跟广播发送的发射窗口匹配成功,而且广播射频通道和手机扫描射频通道是同一个通道,手机才能收到设备B的广播信号。也就是说,如果设备B在37通道发送广播包,而手机在扫描38通道,那么即使他们俩的射频窗口匹配,两者也是无法进行通信的。由于这种匹配成功是一个概率事件,因此手机扫到设备B也是一个概率事件,也就是说,手机有时会很快扫到设备B,比如只需要一个广播事件,手机有时又会很慢才能扫到设备B,比如需要10个广播事件甚至更多。
- 广播事件之间有时间间隔,那么广播本身里面有 3 个信道进行数据传输,这 3 个信道之间的时间间隔是多少?在协议中有规定:也就是两个连续的通用广播之间的时间必须小于等于 10ms
- 广播在广播信道轮询发送,扫描也是轮询扫描
- 连接:
- 发起设备接收到可连接广播封包后,如果有意与广播设备建立连接,发起设备将在最新接收广播封包的相同主广播信道上,向广播设备发送连接封包-CONNECT_IND, CONNECT_IND中包含所有与连接相关的数据,包括:信道地图(指明跳频中哪些信道可用那些不可用),跳频算法参数、连接参数、存取地址等。
- 当收到连接请求且校验完上述数据后,将在链路层主动关闭可连接广播(仅限支持一主的设备),同时设定下一个数据信道频率。
- Access Address,接入地址/存取地址,用来表示接收者ID或者空中包身份,根据Access Address的不同,可以将空口包分为:广播包和数据包。
- 广播包的Access Address固定为0x8E89BED6,在37/38/39广播信道上传输。
- 数据包的Access Address为一个32 bits的随机值,由Initiator生成,用于设备一对一通信时使用,即用于连接时的master和slave之间通信的。在剩下的37个数据信道传输。每建立一次连接,重新生成一次Access address。
跳频
- 蓝牙通信的时间分割是时隙,一个时隙625us。正常情况下一个时隙对应一个信道。也就是说每个时隙跳频一次,1600跳每秒。
- 当前时隙当前信道发生丢包,还是会根据跳频算法,跳到下一个信道,在进行重发。上层分包,重发逻辑与链路层跳频信道执行解耦。
-
跳频算法:
- 基于时间同步跳频算法
- 基于伪随机序列调频算法
-
gfsk
- GFSK(Gaussian Frequency Shift Keying)是一种利用高斯滤波器平滑调制信号频率切换过程的调制技术,常用于数字通信中的无线通信系统,尤其是在蓝牙通信中广泛采用。
- gfsk是一种数字调制的方法。
-
多径衰落
- 多径衰落是指蓝牙在由于通信中发生的散射、折射、反射、饶射产生的多条传播路径,最后到达接收端的延时和相位均不相同,在接收端相互叠加、干扰导致信号衰落失真。
-
单径叠加
- 是指蓝牙在由于通信中发生的散射、折射、反射、饶射产生的多条传播路径,在该条传播路径收到次传播路径的信号叠加。
- 多径衰落和单径叠加的关系:单径叠加是多径衰落的一种特例。
- rssi
- rssi是指信号质量,一般是物理层与链路层配合得出的数字
- rssi的计算方式有多种,以下其中一种
- 接收机中信号转换成电平,根据电平进行函数换算,得到rssi。