BLE入门06

BLE 协议架构总体上分成3块,从下到上分别是:控制器(Controller),主机(Host)和应用端(Apps)。控制器(Controller)是处理射频数据解析,数据接收和发送,主机(Host)是控制不同设备之间如何进行数据交换;应用端(Apps)实现具体应用。
3者可以在同一芯片类实现,也可以分不同芯片内实现。


1.控制器Controller

Controller实现射频相关的模拟和数字部分,完成最基本的数据发送和接收。Controller对外接口是天线,对内接口是主机控制器接口HCI(Hostcontroller interface)。
控制器包含物理层PHY(physicallayer),链路层LL(linker layer),直接测试模式DTM(Direct Test mode)以及主机控制器接口HCI。

  • 物理层PHY
    GFSK信号调制,2402MHz~2480MHz,40个channel,每两个channel间隔2MHz(经典蓝牙协议是1MHz),数据传输速率是1Mbps。
  • 链路层LL
    基于物理层PHY之上,实现数据通道分发,状态切换,数据包校验,加密等。
    链路层LL分2种通道:广播通道(advertising channels)和数据通道(data channels)。

广播通道有3个,37ch(2402MHz),38ch(2426MHz),39ch(2480MHz),每次广播都会往这3个通道同时发送(并不会在这3个通道之间跳频),为防止某个通道被其它设备阻塞,以至于设备无法配对或广播数据,只所以定3个广播通道是一种权衡,少了可能会被阻塞,多了加大功耗。
还有一个有意思的事情是,三个广播通道刚好避开了wifi的1ch,6ch,11ch,所以在BLE广播的时候,不至于被wifi影响(如果要干扰BLE广播数据,一个最最简单的办法,同时阻塞3个广播通道。
当BLE匹配之后,链路层LL由广播通道切换到数据通道,数据通道37个,数据传输的时候会在这37个通道间切换,切换规则在设备间匹配时候约定。
为了增加容量,增大抗干扰能力,连接不会长期使用一个固定的Physical Channel,而是在多个Channel(如37个)之间随机但有规律的切换,这就是BLE的跳频(Hopping)技术,主机和从机建立连接之后,会生成一个channel map,这个channel map就是主从商量好的调频通道。

  • 主机Host/控制器controller接口HCI
    HCI作为一种接口,存在于主机Host和控制器controller当中。控制器Host通过HCI发送数据和事件给主机,主机Host通过HCI发送命令和数据给控制器controller。
    HCI 逻辑 上定义一系列的命令,事件; 物理 上有UART,SDIO,USB,实际可能包含里面的任意1种或几种。
    常见RF测试时,我们常使用UART发送标准的HCI指令控制Controller。

2.主机HOST

主机host是蓝牙协议栈的核心部分:GAP层负责制定设备工作的角色,SS层负责指定安全连接,Logic Link层功能非常强大,官方作用为协议/通道的多路复用,负责上层应用数据(L2CAPService Data Units,SDUs)的分割(和重组),生成协议数据单元(L2CAP Packet Data Units,PDUs),以满足用户数据传输对延时的要求,并便于后续的重传、流控等机制的实现。

  • L2CAP Protocol
    数据经过Link Layer的抽象之后,两个BLE设备之间可存在两条逻辑上的数据通道:一条是无连接的广播通道;另一条是基于连接的数据通道,是一个点对点(Master对Slave)的逻辑通道。

如之前文章讲到,BT 4.2 最大传输的数据包长度为251字节,那么应用层要传输的数据包长度超过了251个字节,这个时候就靠L2CAP层进行分包处理,送到LL层进行数据发送。
Physical Layer负责提供一系列的PhysicalChannel;基于这些Physical Channel,LinkLayer可在两个设备之间建立用于点对点通信的Logical Channel;而L2CAP则将这个Logical Channel换分为一个个的L2CAPChannel,以便提供应用程序级别的通道复用。
到此之后,基本协议栈已经构建完毕,应用程序已经可以基于L2CAP跑起来了。

  • Attribute Protocol
    Attribute Protocol定义了一套数据传输机制,采用client-server的形式,为数据传输提供一个通道。

提供信息(以后都称作Attribute)的一方称作ATTserver(一般是那些传感器节点),访问信息的一方称作ATT client。
一个Attribute由Attribute Type、Attribute Handle和Attribute Value组成。ATT层相当于数据传输通道,所有的数据都会通过该通道上传或者下发。

  • Security Manager(SM)
    Security Manager负责BLE通信中有关安全的内容,包括配对(pairing)、认证(authentication)和加密(encryption)等过程。

  • Generic AttributeProfile
    Attribute Protocol之所以称作“protocol”,是因为它还比较抽象,仅仅定义了一套机制,允许client和server通过Attribute的形式共享信息。而具体共享哪些信息,ATT并不关心,这是GATT(Generic Attribute Profile)的主场。因为GATT是一个profile,下篇文章详细介绍GATT和profile。

  • Generic AccessProfile 通用访问
    定义GAP层的蓝牙设备角色(role):

  1. Broadcaster Role,设备正在发送advertisingevents;
  2. Observer Role,设备正在接收advertising events;
  3. Peripheral Role,设备接受Link Layer连接(对应Link Layer的slave角色);
  4. Central Role,设备发起Link Layer连接(对应Link Layer的master角色)。

GAP层定义了用于实现各种通信的操作模式(Operational Mode)和过程(Procedures),实现单向的,无连接的通信方式,配对,连接操作等;同时GAP层也定义了User Interface相关的蓝牙参数,比如蓝牙地址,名称,类型等。

3.应用层

应用层可以分为两部分,以从机为例,我们可以通过GATT层定义自己的Profile,供主端设备读取放在从机服务器上的数据;另外我们需要做自己的应用层程序,这个和普通MCU并无差别。
需要注意的是:

1 市面上流行的芯片的软件框架都是基于RTOS展开,应用层单独是一个TASK执行,协议栈是另外的TASK在执行。
2 协议栈是通过回调函数和应用层进行交互,协议栈通过消息传递机制让应用层TASK知道有蓝牙相关的操作,应用层通过相应的回调函数发现是GAP层的状态改变还是GATT层有数据进行传递,然后执行我们设计的功能。

参考

https://mp.weixin.qq.com/s/N0TYqFO7hxKgknl7DM6EzQ

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容

  • 蓝牙 蓝牙的波段为2400-2483.5MHz(包括防护频带)。这是全球范围内无需取得执照(但定不是无管制的)的工...
    苏永茂阅读 6,147评论 0 11
  • 背景 蓝牙历史说到蓝牙,就不得不说下蓝牙技术联盟(Bluetooth SIG),它负责蓝牙规范制定和推广的国际组织...
    徐正峰阅读 12,323评论 6 33
  • BLE协议栈主要由如下几部分组成: PHY层(Physical layer物理层) PHY层用来指定BLE所用的无...
    张志中阅读 1,201评论 0 4
  • 一、BLE协议栈架构 BLE 协议栈(简称“协议”)由两部分组成: 和 。控制器与主机分离的形式来自标准的蓝牙 B...
    Leung_ManWah阅读 2,592评论 0 3
  • BLE 概览 第一章 什么是低功耗蓝牙(Bluetooth Low Energy) 低功耗蓝牙是一项新技术,它不但...
    一只爱运动的猪阅读 788评论 0 1