低功耗蓝牙开发指南笔记
Neha
虚心的学习者
展开
-
(PHY)物理层
1.模拟调制2.数字调制通断键控(OOK)、幅移键控(ASK)、频移键控(FSK)3.调制低功耗蓝牙采用了高斯频移键控。负频偏代表比特0,正频偏代表比特1。最小的频偏约为180kHz。4.射频信道5.发射功率低功耗蓝牙最大发射功率为+10dBm 为10 mW,最小发射功率为-20dBm 为10 uW。6....原创 2018-06-05 16:09:35 · 2097 阅读 · 0 评论 -
(HCI)主机/控制器接口之发起连接
当连接已经建立并且向主机发送了事件,所有的广播或者其他的发起连接请求将会自动停止。1.与白名单设备发起连接主机先将对端设备添加到白名单中,然后再与白名单中的设备进行连接。通过这种方式,控制器可以同一时间和多个设备发起连接。2.与单一设备发起连接3.取消连接请求...原创 2018-06-06 17:51:10 · 306 阅读 · 0 评论 -
(HCI)主机/控制器接口之连接管理
建立连接后,设备就可以对连接进行管理,包括切换到低功耗模式、增加或减少间隔时间、设置加密或终止连接等。1.更新连接如果当前的连接参数不再适用,主设备可以进行修改。2.更新信道映射图控制器可以在任何时候启动链路层控制规程修改信道映射图。3.交换功能列表主机可以获知当前连接所支持的功能。4.交换版本信息当两端设备在调试链路的时候,主设备或从设备都可能需要获知对端设备的版本信息。5.加密连接只要连接双方...原创 2018-06-06 18:01:36 · 607 阅读 · 0 评论 -
(L2CAP)逻辑链路控制和适配协议
逻辑链路控制和适配协议(L2CAP)是个复用层,可以让低功耗蓝牙复用三条不同的信道。支持数据的分割和重组功能,使得较大的报文可以在底层无线电中传输。1.L2CAP信道信道是指一个数据包序列,连接两个设备上的一对服务。2.L2CAP数据包结构所有低功耗蓝牙设备必须支持在空间传输27字节数据包--4字节为L2CAP报头,23字节为信息载荷。3.低功耗信令信道低功耗信令信道用于主机层级的信令。3.1命令...原创 2018-06-07 09:25:28 · 2100 阅读 · 0 评论 -
(ATT)属性之基础概念
1.服务器与客户端提供数据的设备成为服务器。使用其他设备的数据的设备成为客户端。2.数据与状态数据是一个值,它反映了某种客观性质,比如某种测量的结果、读数。状态反映了某个设备的当前状况或处境:它在做什么、是怎么运作的。BLE中“状态”指的是保存在服务器上的信息。“数据”指的是服务器传给客户端的信息。3.几种状态3.1外部状态:物理测量值可以视为“外部”状态。3.2内部状态:设备当前的工作状态。3....原创 2018-06-07 09:57:16 · 1429 阅读 · 0 评论 -
(ATT)属性之属性说明
属性是一条带有标签的、可以被寻址的数据。1.属性的结构2.属性句柄属性句柄实际上是一个16位的地址。有效的句柄范围从 0x0001~ 0xFFFF。句柄类似于内存地址、端口号、属性值对应的硬件寄存器地址。3.属性类型一串128位的数字被用来标识属性的类型,这个唯一的标识码就叫作通用唯一识别码(UUID)。16位的UUID如下:4.属性值属性值用于表示设备公开的状态信息。4.1服务通用唯一识别码每一...原创 2018-06-07 10:36:00 · 2708 阅读 · 0 评论 -
(ATT)属性之服务
1.服务一种服务只是一组特性和通过它们所公开的行为的集合。2.特性将一个服务的属性归类到一起,可以更好地说明这些属性的组合如何为行为提供一致的接口。特性是一个数值。特性包含三个基本要素:声明、数值、描述符。2.1特性声明2.2特性数值特性数值是一个属性,它的类型必须符合特性声明的特性UUID字段。2.3特性描述符一个特性可以包含任意多的描述符。(也可以没有描述符)...原创 2018-06-07 11:36:55 · 567 阅读 · 0 评论 -
(ATT)属性之属性协议
客户端通过属性协议可以发现并获取属性服务器上的属性。由6种基本操作构成:请求、响应、命令、指示、确认和通知。1.客户端一次只能向服务器发送一条请求。2.客户端也可以向服务器发送命令,但不一定会收到响应。3.服务器向客户端发送指示,让客户端获悉某属性的数值。客户端需要返回一个确认响应。服务器一次只能发送一条指示。4.服务器向客户端发送通知,让客户端获悉某属性的数值。通知不要求响应,因此发送次数不受限...原创 2018-06-07 11:56:01 · 1279 阅读 · 0 评论 -
(GATT)通用属性规范
属性协议定义了客户端与服务器如何相互发送符合标准的消息。GATT规程定义了如何发现与使用服务、特性与描述符的标准方法。GATT规程可以分为三种基本的类型:①发现规程②客户端发起规程③服务器发起规程1.发现规程①客户端发现首先要服务。②客户端为每个首要服务设置句柄范围。③发现被引用的次要服务以及该服务实例所公开的特性及其描述符。④客户端可以“使用”服务,服务器发起规程可以对服务进行读写特性值或描述符...原创 2018-06-07 12:16:02 · 610 阅读 · 0 评论 -
(SM)安全管理之安全概念
安全性包括:认证、授权、完整性、机密性和隐私。1.认证认证是一种证明身份的方式,用来证实所连接的设备真实是其声称的设备,而非第三方攻击者。2.授权授权是指分配权限做某事。3.完整性完整性的定义是指数据的内部一致性和无讹误传。4.机密性机密性是指将事物保持机密的意图。5.隐私隐私是能够防止他人根据你的设备认出你,而且无法在一个空间跟踪你的运动的能力。...原创 2018-06-07 12:29:13 · 3317 阅读 · 0 评论 -
(SM)安全管理之配对和绑定
1.配对起初未提供安全性的两个设备如果希望做一些安全性的工作,首先必须彼此配对。配对有三个不同的阶段:配对信息交换、链路认证和密钥分配。1.1配对信息交换从设备发出配对请求消息、主设备发送配对响应消息。一旦交换了配对请求和配对响应消息,两个设备随后便进入配对过程的第二阶段。1.2认证利用配对请求和配对响应消息所携带的信息,两个设备得以确定适合的配对算法。设备各自生成一个随机数,并利用方程计算一个确...原创 2018-06-07 14:06:12 · 4725 阅读 · 0 评论 -
(HCI)主机/控制器接口之广播和观察
一、广播控制器有两类数据可以通过广播发送:广播数据和扫描响应数据。广播的最小时间间隔和最大时间间隔:20ms~10.24s广播信道与广播功率同样可以配置。二、被动扫描要接受对端设备的广播数据包,可以使用被动扫描。控制器的可配置扫描参数如下:报告事件中包含的参数:①广播者的设备地址②广播数据包中的数据③接受广播包时的信号接受强度(RSSI)三、主动扫描主动扫描,不但可以捕获到对端设备的广播数据包,还...原创 2018-06-06 17:42:24 · 450 阅读 · 0 评论 -
(HCI)主机/控制器接口之控制器的配置
利用控制器与对端设备通信之前,主机可以先对控制器进行下列相关操作:①重置控制器的状态②读取设备地址③设置事件掩码④读取流控缓存⑤读取控制器支持的功能列表⑥生成随机数⑦加密数据⑧设置随机地址⑨配置白名单1.重置控制器的状态主机通过发送Reset命令来重置控制器。重置命令不会重置物理链路。2.读取设备地址3.设置事件掩码设置事件掩码,就主机告诉控制器哪些事件能接收,哪些不能接收。控制器只会发那些能被接...原创 2018-06-06 17:29:28 · 819 阅读 · 0 评论 -
(LL)链路层之状态机
1.链路层状态机1.1就绪态上电后,链路层进入并保持就绪态,直到接到主机的命令。就绪态可以进入广播态、扫描态或者发起态,其他任意状态也可以进入就绪态。1.2广播态处于广播态的链路层可以发送广播报文,也可以发送扫描响应。在收到发起者的连接请求之后,设备可以从广播态切换连接态。1.3扫描态被动扫描仅接受广播报文。主动扫描则发送扫描请求给广播态设备,并获取附加的扫描响应数据。扫描态的设备只能进入就绪态,...原创 2018-06-05 16:51:48 · 658 阅读 · 0 评论 -
(LL)链路层之报文
比特序与字节报文是一比特一比特传输的,但它们同时也是由数据的字节组成的。当数据的各个字节传输时,总是从最低位开始。1.前导让接收者同步比特计时和设置自动增益控制。如果接入地址的第一个比特位是“0”,则使用“01010101”序列;如果是“1”,则使用“10101010”序列。2.接入地址广播接入地址在广播数据,或是广播、扫描、发起连接时使用,广播接入地址是一个固定值0x8E89BED6。数据接入地...原创 2018-06-05 17:50:18 · 653 阅读 · 0 评论 -
低功耗蓝牙的体系结构
控制器通常是一个物理设备,能够发送和接受无线电信号,并懂得如何将这些信息翻译成携带信息的数据包。主机通常是一个软件栈,管理两台或多台设备间如何通信以及如何利用无线电同时提供几种不同的服务。应用程序则使用软件栈,进而是控制器来实现用户实例。一、控制器1.1物理层(PHY)采用2.4GHz无线电、完成艰巨的传输和接收工作的部分。物理层每微秒传输1比特应用数据。1.2直接测试层(PHY),提供测试物理层...原创 2018-06-05 15:24:34 · 1586 阅读 · 0 评论 -
(LL)链路层之信道
3个广播信道和37个数据信道。信道宽度为2MHz。原创 2018-06-05 17:55:41 · 264 阅读 · 0 评论 -
(LL)链路层之设备发现(广播)
低功耗蓝牙设备通过广播信道发现其他设备。广播类型:通用的、定向的、不可连接的以及可发现的。原创 2018-06-06 09:18:29 · 440 阅读 · 0 评论 -
(LL)链路层之设备发现(连接)
一、建立连接连接请求包含的数据信息:①连接中使用的接入地址②CRC初始值③发送窗口大小④发送窗口偏移(默认为6)⑤连接间隔⑥从设备延迟⑦监控超时⑧自适应跳频信道图⑨跳频算法增量⑩休眠时钟精度1.1 接入地址连接使用的接入地址总是由主设备来提供,地址通过随机生成。1.2 CRC初始化由主设备提供的随机数作为从设备设置的CRC初始值。1.3 发送窗口当连接请求数据包发送完毕,存在一个1.25ms的强制...原创 2018-06-06 09:47:43 · 414 阅读 · 0 评论 -
(LL)链路层之设备发现(数据通信)
在一个连接里,设备通过在连接事件中发送数据包来相互通信。广播报文和数据报文的最大差别在于报头的格式和净荷的长度。数据报文的净荷可以为0~31字节不等。但传给控制器的未加密数据包最多只能携带27字节的数据。一、数据报头1.逻辑链路标识符(LLID)用于判断数据报文属于下列哪种类型:①链路层控制报文(11) 用于管理连接②高层报文开始(10) 也用于一个完整报文(即...原创 2018-06-06 15:46:31 · 500 阅读 · 0 评论 -
(LL)链路层之设备发现(连接管理)
两个设备一旦连接,便可以收发数据和连接管理。连接管理设计在链路层发送控制消息,包含下列七个链路层控制规程:①更新连接参数②改变自适应跳频信道图③加密链路④重加密链路⑤交换功能位⑥交换版本信息⑦终止链路1.更新连接参数连接建立时,主设备通过连接请求数据包发送连接参数。主设备向从设备发送连接更新请求,从设备或者接受和使用,或者断开链路。连接更新请求中的参数为:传输窗口大小、传输窗口偏移量、连接间隔、从...原创 2018-06-06 16:13:54 · 543 阅读 · 0 评论 -
(HCI)主机/控制器接口之物理接口
主机控制器接口(HCI)是主机与控制器之间的接口,主要完成两个任务:①发送命令给控制器和接收来自控制器的事件。②发送和接收来自对端设备的数据。一、UART通用异步收发器(UART)提供了最简单的传输方式。3线UART:TXD、RXD和地线。5线UART:TXD、RXD、RTS、CTS和地线。二、USBUSB接口主要为那些拥有USB Host的设备而设计。它定义了主机和设备之间是如何传送命令、事件和...原创 2018-06-06 16:39:55 · 608 阅读 · 0 评论 -
(HCI)主机/控制器接口之逻辑接口
1.HCI信道(channel)一旦控制器与其他设备建立了连接,控制器的底层HCI接口就创建一个HCI信道。我们使用一个连接句柄(connection handle)来标识这个HCI信道。无论何时,只要主机尝试创建一个连接,控制器就为主机提供一个连接句柄,直到结束连接句柄才会失效。2.命令数据包(主机->控制器)主机通过向控制器发送命令数据包来执行命令。这些命令通常用于配置控制器的状态或者请...原创 2018-06-06 17:05:06 · 1219 阅读 · 0 评论 -
(GAP)通用访问规范之基础知识
通用访问规范定义了:①设备如何彼此发现、建立连接以及如何实现绑定。②设备如何成为广播者和观察者,并且实现无需连接的数据传输。③定义了如何用不同类型的地址来实现隐私性和可解析性。1.初次发现为了发现一个设备,必须扫描有哪些正在广播的设备。有限可发现性:设备保持30s的广播后停止广播一般可发现性:未被连接前,设备一直在广播发现性设备可分为:不可发现设备、有限可发现设备和一般可发现设备。2.重连低功耗蓝...原创 2018-06-07 14:33:09 · 701 阅读 · 0 评论