低功耗蓝牙开发学习 0523

7.3.4 报头

报头的内容取决于该报文是广播报文还是数据报文。

广播报文类型共有7种,
ADV_IND----通用广播指示
ADV_DIRECT_IND----定向连接指示
ADV_NONCONN_IND---不可连接指示
ADV_SCAN_IND------可扫描指示
SCAN_REQ----主动扫描请求
SCAN_RSP----主动扫描响应
CONNECT_REQ-----连接请求

7.3.5 长度


7.3.6 净荷

 

7.4 信道

低功耗蓝牙的信道宽度为2MHz ,而不是经典蓝牙的1MHz

7.4.1 跳频

调频算法用于数据连接中

7.4.2 自适应跳频

7.5 设备发现

共有4种不同类型的广播:通用的、定向的、不可连接的以及可发现的。

7.5.1 通用广播

通用广播可以在没有连接的情况下发出,换句话说,没有主从设备之分。

7.5.2 定向广播

定向广播事件就是为了尽可能快的建立连接。 这种报文包含两个地址:广播者
的地址和发起者的地址。

7.5.3 不可连接广播

不想被连接的设备使用不可连接广播事件。

7.5.3 可发现广播

即可广播数据,又可以相应扫描,但不能建立连接。


7.6 广播


7.7 建立连接

7.7.1 接入地址

连接使用的接入地址总是由主设备来提供。地址通过随机生成,随机生成增强了隐私性
,扫描者无法得知是哪两个设备正在通信。

7.7.2 CRC初始化


7.7.3 发送窗口

7.7.4 连接事件

一个连接事件是指主设备和从设备之间相互发送数据包的过程。连接事件的进行
始终位于一个频率,每个数据包会在上个数据包发完之后等待150us再发送。

连接间隔决定了主设备与从设备的交互间隔:可以是7.5ms-4s内的任意值,但
必须为1.25ms的整数倍。

7.7.5 信道图

自适应跳频信道图示数据信道的位掩码,用来标记信道的好坏。

7.7.6 睡眠时钟精度


7.8 发送数据

传给控制器的未加密数据包最多只能携带27个字节的数据。

7.8.1 数据报头


7.8.2 逻辑链路标识符

逻辑链路标识符(LLID)用于判断数据报文属于下列哪种类型:

链路层控制报文(11)------用于管理连接
高层报文开始(10) -------也可用于一个完整报文
高层报恩延续(01)

主机能够发送大于27字节的数据,但由于无法放入单个链路层的数据包,因此必须
支持分段。具体做法是把数据包贴上“高层报文开始”或“高层报文继续”的标签。

7.8.3 序列号

在数据包中,用一个比特来表示序列号;在发送的第一个数据包中将该位设为0,
接下来每当设备发送新的数据包时,该值在1和0之间交替。

7.8.4 确认

如果设备成功接收序列号为0的报文,在其确认报文中,应将下一个预期序列号
设为1,否则序列号为0的数据包将被重传。

7.8.5 更多数据

数据信道报文的报头里还有最后一位----更多数据位,用来通知对端设备自己还有
其他的数据准备发送。


7.9 加密


7.10 管理连接

连接管理涉及在链路层发送控制消息,包含下列七个链路层控制规程:

更新连接参数
改变自适应跳频信道图
加密链路
重加密链路
交换功能位
交换版本信息
终止链路

7.10.1 连接参数更新

连接建立时,主设备通过连接数据包发送连接参数。

瞬时实际上是一个连接事件的计数器,相应的连接事件到来时就使用新的参数。


7.10.2 自适应跳频

新的信道图
瞬时

这里的瞬时和连接更新中的提到的瞬时概念完全不一样。
它确定了一个时间点,在该时间点之后的连接事件将使用心得信道图。

要重发信道更新请求,必须等待瞬时经过以后。
链路层控制规程不允许从设备改变信道图,甚至不能向主设备告知自身的信道条件。

7.10.3 启动加密

只有尚未加密的链路才能启动加密。链路在加密时,需要创建一个随机数(nonce)和一个
会话密钥(SK)。

7.10.4 重启加密


7.10.5 版本交换


7.10.6 功能交换
对端设备利用功能信息来判断本端设备到底能做什么。


7.10.7 终止连接

最后一个链路层控制规程为终止规程。

要终止链路,设备首先发送一个终止指示报文(LL_TERMINATB_IND),等待链路层
对该报文进行确认,然后断开连接。

 

7.11 鲁棒性

7.11.1 自适应跳频

7.11.2 强CRC

7.12 为低功耗优化

主要方法如下:
使用短报文
物理层使用高比特率
提供低开销
优化相应机制
单信道连接事件
亚速率连接事件
使用离线加密

7.12.1 短报文

7.12.2 高比特率

当发送数据时,无线电需要大量的电流。大部分电流用于运行一个2.4GHz的振荡器,
以便调制无线信号。

7.12.3 低开销

7.12.4 确认机制

链路层的确认机制有一个有趣的性质,它不要求立即执行数据包的确认。这是经典蓝牙
和低功耗蓝牙的一个根本区别。

7.12.5 单信道连接事件


7.12.6 亚速率连接事件

 

第8章 主机/控制器接口

8.1 介绍

主机控制器接口(HCI)是主要与控制器之间的接口,主要完成两个任务:
一个是发送命令你给控制器和接受来自控制器的事件,
另一个是发送和接收来自对端设备(peer device)的数据。

 

8.3.2 命令数据包

主机通过向控制器发送命令数据包来执行命令。

每一个HCI数据包都带有下列三种报文类型编码中的一种:
命令(command)= 0x01
数据(data) = 0x02
事件(event) = 0x04

8.2.2 3线UART

0xF用于链路建立  0x0用于确认

3线UART主要有3种模式:
链路建立
活动状态
低电压状态

链路建立信道是用来确认对端设备运行模式、配置参数和自动探测波特率。


8.3 逻辑接口

信道(channel)
数据包格式(packet format)
流控(flow control)


8.3.1 HCI信道

一旦控制器与其他设备建立了连接,控制器的底层HCI接口就创建一个HCI信道,使用
一个连接句柄(connection handle)来标识这个HCI信道。


8.3.2 命令数据包

主机通过向控制器发送命令数据包来执行命令。

在低功耗蓝牙中一共三种基本命令类型
配置控制器的状态
请求执行特定的操作
管理连接

1、配置控制器状态
我们可以将控制器视为一个大状态机,有一系列的参数可以进行配置。

2、请求指定操作
一些命令可以请求控制器执行指定操作,但不会改变设备状态或者连接状态。

3、管理连接


8.3.3 事件数据包

HCI事件数据包由事件类型编码、参数的长度字段和事件参数组成。
低功耗蓝牙主要有下列三种基本事件类型:
通用命令完成事件
通用命令状态事件
特定命令完成事件

1、通用命令完成事件

当主机发送给控制器的命令执行完毕时,控制器立即返回一个通用命令完成事件。

2、通用命令状态事件


3、特定命令完成事件

8.3.4 数据包


8.3.5 命令流控


8.4 控制器的配置

利用控制器与对端设备通信之前,主机可以先对控制器进行下列相关操作:
重置控制器的状态、读取设备地址、设置事件掩码、读取流控缓存、读取控制器支持的
功能列表、生成随机数、加密数据、设置随机地址以及配置白名单等

8.4.1 重置控制器为已知状态


8.4.2 读取设备地址

很多低功耗蓝牙设备有预先设置的设备地址,可供主机读取。
如果设备的地址返回全0。此时,主机需要为控制器生成一个随机地址,否则无法进行
数据传输。

8.4.3 设置事件掩码

如果主机不能理解控制器的事件,将会导致操作性问题。解决问题的一个办法
是设置事件掩码,让主机告诉控制器那些事件能接受,那些不能接受。这样控制器
只会发那些被接受的事件。

8.4.4 读取缓冲区大小

8.4.5 读取控制器支持的功能

确保主机和控制器兼容的另一个办法是,主机向控制器发送命令之前首先确认
控制器支持的功能。

8.4.6 读取控制器支持的状态


8.4.7 随机数


8.4.8 加密数据

8.4.9 设置随机地址

如果控制器没有固定地址,那么就用随机地址来替代。

8.4.10 白名单


8.5 广播和观察

两个低功耗蓝牙设备之间的最基本的通信模型就是广播(broadcasting)和
观察模型。两者采用广播和扫描来传输数据。

8.5.1 广播

配置参数包括广播的最小间隔时间和最大间隔时间,范围从20ms-10.24s。

8.5.2 被动扫描

 

8.6 发起连接

8.6.1 与白名单设备发起连接


8.7 连接管理

8.7.1 更新连接


8.7.2 更新信道映射图


8.7.3 交换功能列表

 

第三部分
主机

第9章
逻辑链路控制和适配协议

逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol,L2CAP)
是个复用层,可以让低功耗蓝牙复用三条不同的信道。他也支持数据的分割和
重组功能,使得较大的报文可以在底层无线电中传输。

9.1 背景


9.2 L2CAP信道

信道是指一个数据包序列,连接两个设备上的一对服务。在两个设备间允许同时启用多条信道。

低功耗蓝牙只支持固定信道。固定信道指的是两个设备一建立连接就已经存在的、没有任何配置
参数的信道。

在蓝牙中,每个信道标识符为一个17位的数字。

低功耗蓝牙一共使用了3条信道:
信道标识符0x0004用于属性协议
信道0x0005用于低功耗蓝牙信令信道
信道0x0006用于安全管理


9.3 L2CAP数据包结构

所有低功耗蓝牙设备必须支持在空间传输27字节数据包 ----4字节为L2CAP,23字节为信息载荷。

9.4 低功耗信令信道

低功耗信令用于主机层级的信令。

低功耗信令信道支持的命令操作码如下:
命令拒绝
连接参数更新请求
连接参数更新响应


9.4.1 命令拒绝

 

第10章  属性

10.1 背景

低功耗蓝牙最后使用了三种协议:逻辑链路控制和适配协议(L2CAP),安全管理
协议(SM)和属性协议(AP).


10.1.1 精简协议


10.1.2 无所不在的数据

10.1.3 数据与状态


10.1.4 几种常见的状态

外部状态、内部状态与抽象状态。


10.1.6  服务和规范

 

10.2 属性

属性是一条带有标签的、可以被寻址的数据。

10.2.1 属性概述

属性由三种数值组成:属性句柄、属性类型和属性值。

10.2.2 属性句柄

P156

 

 

 


 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值