BLE Link Layer学习笔记

来源:互联网 发布:万里独行知马力 编辑:程序博客网 时间:2024/05/01 04:04

一.Link Layer学习笔记

1.      广播间隔(Adv Interval)

                        

                                                                              图1 使用AdvDelay的广播时间

 

如图1所示,为使用AdvDelay的广播事件的时间图。由图中可知,

T_AdvEvent = AdvInteval + AdvDelay.其中AdvInteval的时间是固定的,必须为0.625ms的整数倍,范围在20ms-10.24s之间。

 

(1)   Advertisingevent type为scannable undirected event或者non-connectable undirected event 时Adv Interval最好在100ms以上。

(2)对于connectable undirected 或connectable directed event而言使用low duty cycle时,AdvInterval的范围至少在20ms,AdvDelay则在0-10ms之间。

 

 

2.      数据发送(Flow control)

(1)    每个Connection event的Header都包含四个基本的元素:LLID、SN、NESN、MD。

LLID:逻辑链路标识符。

SN:序列号

NESN:下一个期望序列号

MD:更多数据。

 

(2)    SN、NESN在连接过程中的应用。

当连接建立之后,SN和NESN的初始值为0.以后SN的由Host(Master)端维护,NESN由Client(slave)维护。具体control flow如下:

                                                              

    

图2 Transmit and Receive SN and NESN flow diagram

如图2所示,Host主要维护SN这个元素,Client维护NESN这个元素,在connectionevent内收到数据包,都要将SN与NESN进行比较。如图3所示,为一些正常的连接时间SN和NESN的状态。

                                                                   

图3 connectionevents

在Host端,SN不等于NESN,则认为收到了来自Client发来的正确的ack包,然后(SN + 1)&1,下一个connect event发新的data,否则则认为收到错误的ack包,下一个event继续发之前的数据。Host拿到NESN后,在新的data中会继续使用。

在Clent端,SN等于NESN,则认为收到了来自Host发来的正确的包,然后(NESN + 1)&1,收到Host的包,否则则认为是前一个包而被忽略。Client拿到SN中,在发ack包的时候会继续使用。

 

 

 

原创粉丝点击