蓝牙5.1的ble那些事儿

既然要说5.1的那些事儿,那么必须的聊聊蓝牙4.0.本文就不在此长篇大论班门弄斧了,要了解4.0的同学请出门左拐直接去参考蜗窝科技大佬的文章.本人觉得对于想入门全面了解4.0的同学,此文章是不二选择的经典.在此只有膜拜的份了(不是广告哈哈).

这里主要对差异做一点对比和分析.个人水平有限,如有不当,恳请指正.

 本文主要从physical layer来分析,host层和4.0变化不大请自行参阅之前说明.

 在5.1中主要是物理特性增强了.传输距离,传输数据包大小,传输速率都大大增加.这些都是纯硬件特性.

在软件层面,5.1多了一种状态Synchronization State变成5中状态.

蓝牙5.1的ble那些事儿_第1张图片

我习惯把5.1人为分为3中状态,非连接状态,连接状态,同步状态.

此篇就从非链接状态讲述.

非链接状态最主要的就是广播状态.广播的PDU增加了ADV_EXT_IND• AUX_ADV_IND• AUX_SYNC_IND
• AUX_CHAIN_IND四种.这里PDU前面如果有AUX表示辅助PDU,辅助的PDU不在37.38,39信道传输数据.
为什么要如此增加辅助PDU了?主要是为了传输更多的数据,比如同步信息数据,寻向信息等等.

至于广播事件如下• a connectable and scannable undirected event• a connectable undirected event
• a connectable directed event• a non-connectable and non-scannable undirected event• a non-connectable and non-scannable directed event• a scannable undirected event• a scannable directed event.这里广播事件和PDU一定不要混淆起来,它俩像是兄弟,但是没有血缘关系.那到底有啥关系了,看这里.

蓝牙5.1的ble那些事儿_第2张图片

一个event可能包含很多的PDU,一个PDU也可能被很多事件引用.他们之间并没有必然联系.只是SIG在这里定义了这样一种俗语,而且名字都很相似,搞得它俩很亲一样.

 其中除了connectable and scannable undirected event不能包含新加入PDU,其他都可以包含.

 connectable undirected event事件可以包含ADC_EXT_IND和AUX_ADV_IND.

蓝牙5.1的ble那些事儿_第3张图片

这里所有的过程就叫做connectable and scannable undirected event,主信道包含ADC_EXT_IND的PDU,然后辅助信道包含ADC_EXT_IND的PDU.这里ADC_EXT_IND不能携带数据,只能指向辅助信道,然后辅助信道PDU携带数据或者ADC_EXT_IND指向空.

这两个PDU如何知道自己是一伙的了,原来在他们的PDU结构中有ADI这个字段.如果一致表示我们认识.

ADC_EXT_IND和带AUX的PDU(除了AUX_SCAN_REQ和AUX_CONNECT_REQ)都有统一的格式如下:

其中Adc_Mode表示

蓝牙5.1的ble那些事儿_第4张图片

然后ExTended Header如下

蓝牙5.1的ble那些事儿_第5张图片

其中Adc_Mode,ExTended Header和当前的event对应,这样就知道那些字段需要填写.如果要使用ExTended Header就在ExTended Header Flag相应的位域标记即可.

这里CTEINFO的结构如下

蓝牙5.1的ble那些事儿_第6张图片

CTEINFO主要应用寻向功能,如果此字段存在那么CONSTAND TONE EXTENSION也存在,后者的位置在所有数据最后最后追加.

ctetime表示CONSTAND TONE EXTENSION的长度.

ctetype表示寻向的类型.目前有aoa,aod和1us的slot,aod和2us的slot三种.

CONSTAND TONE EXTENSION的结构如下

蓝牙5.1的ble那些事儿_第7张图片

CONSTAND TONE EXTENSION主要用于寻向数据IQ的采样.采样发生在reference period和后面的sample lots.每一微妙采样一次。CONSTAND TONE EXTENSION位16us到160us.

接着AdcDataInfo就是ADI用来同步主信道和辅助信道的标志.

然后AuxPtr如图

此字段主要用来表示指引辅助信道的信息,如果有,告诉peer你应该什么时间在什么地点和我约会.

channel index表示信道索引,告诉peer你应该在哪个辅助信道索引来找我.

CA表示时钟精度.

offset units和Aux Offset表示在主信道发送数据后,第一次,多久后在辅助信道发送信息

AUX PHY表示使用哪一个物理介质传输有1M/S,2M/S, LL CODE.

最后是SyncInfo字段如下:

蓝牙5.1的ble那些事儿_第8张图片

此字段的存在主要用来表示只是同步状态的信息.

其中sync packet offset ,offset units,offset adjust告诉第一次同步的时间

chm表示同步的地点信道

interval表示两次event的辅助同步数据包之间的时间

sca,aa,crcinit和校验纠错有关

 

到这里我们基本上对一个新的广播包有了一个大致的认识.广播完成以后,peer如何回应了,回应什么了,接下来我们再看.

蓝牙5.1的ble那些事儿_第9张图片

上图告诉我们回应什么,至于怎么回应请看下面.我们还是以connectable undirected event事件为例子:

蓝牙5.1的ble那些事儿_第10张图片

这里有几个概念.在很多情况下AUX是可以被覆盖的,广播了37,38,39信道后,才广播AUX数据包在辅助信道.

peer也必须使用aux的数据包在相应的信道进行回应.其他的概念和4.0如出一辙.

其他的广播EVENT和这里如出一辙,没有什么特殊的地方.至于scanner状态和initiator状态和广播状态是一一对应的,两两共存,男女搭配干活不累,孤独的活着没有任何意义.

下一盘文章我们再来讲讲连接建立后的那些事儿.

你可能感兴趣的:(蓝牙ble5.1)