3.6 络
BLE设备使用两种不同的通信方法,每种方法都有某些优点和限制:广播和连接。
两种方法均遵循通用访问配置文件(GAP)建立的某些过程,如3.7节所述。
3.6.1 广播
翻译的不好,可以找其它资料来看广播。
使用无连接广播时,BLE设备会将数据发送到可接受的听觉范围内的任何扫描设备或接收器。 本质上,此机制允许BLE设备执行以下操作:
将数据单向发送给任何能够进行传输的人或任何事物。
广播定义了两个单独的角色:
●广播者:周期性地将不可连接的广告包发送给愿意接收它们的任何人。
●观察者:重复扫描预设频率以接收任何不可连接的广告数据包。
广播是设备一次向多个对等方传输数据的唯一方法。 这些广播的数据通过使用BLE的广告功能发送出去。
3.6.2连接
翻译的不好,可以找其它资料来看连接。
对于BLE中的双向数据传输,需要存在一个连接。 BLE中的连接无非是涉及的两个BLE设备之间在特定的特定时间点(连接事件)之间已建立的周期性间隔的数据交换。
通常,仅在两个BLE连接对等方之间交换数据,并且不涉及其他设备。 连接定义了两个单独的角色:
●中央(主机):重复扫描预设的BLE频率以查找可连接的广告数据包,并在适当时启动连接。 建立连接后,中央管理定时并启动定期数据交换。
●外围设备(从属设备):一种设备,该设备定期发送可连接的广告包并接受传入的连接。 一旦建立活动连接,外围设备就会按照中心的时间进行定时并与之定期交换数据。
为了启动连接,中央设备从外围设备接收可连接的广告包,然后向外围设备发送请求以在两个设备之间建立排他连接。 建立连接后,外围设备将停止通告,并且两个设备可以开始在两个方向上交换数据。
尽管中央设备是管理连接建立的设备,但是在每个连接事件期间,任何一个设备都可以独立发送数据,并且这些角色不会对数据吞吐量或优先级施加任何限制。
因此,一个设备可以同时充当中心设备和外围设备,一个中心设备连接到多个外围设备,以及一个外围设备连接到多个中心设备。
这一段可能有点绕,意思是master和slave只是建立蓝牙周期性传输时候的角色,这里周期性交换数据的时候,是双工的,都可以互相发送接受数据,所以站在数据传输方向的角度,是都可以做发送方(master)和接收方(slave)。
如果还是难以理解,找其它资料参考吧。
再强行解释一下,BLE主机设备,BLE从机设备,都可以某个数据传输的发起者或者接收者。
解释:
邮递员(BLE主机设备)周期性去邮箱(BLE从机设备)取信。
信可以是服务A寄给服务B的,所以服务A是发起者,那认为它是主。
信也可以是服务B寄给服务A的,所以服务B是发起者,那认为它是主。
建立这个通信,只需要保证:邮递员(BLE主机设备)周期性去邮箱(BLE从机设备)取信。
邮递员只是个干活的,跑腿的,它不是数据/服务的发起者。
另一个理解,就是BLE主机设备,BLE从机设备,这是BLE的底层去实现物理通信的“现实规矩”,就像邮递员要周期性去邮箱取信。而对于BLE主/从机设备的上层应用,都可以把自己作为数据传输的发起者。原因就在于,每一次的周期性的通信,都是双向数据传输。
对吧,邮递员取信的时候,也放了信进去,就是双工嘛。
通过使用附加协议层,更具体地说是通用属性配置文件(GATT),连接提供了对数据进行组织的能力,并且可以对每个字段或属性进行更细粒度的控制。
数据围绕称为服务和特征的单位进行组织。services and characteristics
此外,连接允许更高的吞吐量,并具有建立安全加密链接的能力,以及协商连接参数以适合数据模型的能力。
BLE设备可以具有有意义的结构,并具有多种服务和特性。
服务可以包含多个特征,每个特征都有其自己的访问权限和描述性元数据。
3.7 Profiles 配置
蓝牙规范明确区分了协议和配置文件的概念。 进行这种区分是由于每个概念服务的目的不同,并且总体规范分为:
●协议:它们是所有符合Bluetooth规范的设备所使用的构件。 协议实质上构成了实现不同数据包格式,路由,多路复用,编码和解码的层,从而允许在对等点之间有效地发送数据。
●配置文件:是垂直功能的切片,定义了所有设备所需的基本操作模式(例如通用访问配置文件和通用属性配置文件)或特定用例(邻近配置文件,葡萄糖配置文件); 配置文件实质上指定了应如何使用协议来实现特定目标,无论是通用的还是特定的。
3.9 Controller
3.9.1 PHY
3.9.2 LL
它是协议栈的硬实时约束层,因为它必须符合规范中定义的所有时序要求。
鉴于LL执行的许多计算在计算上都是消耗时间资源的,因此通常在硬件中自动实现功能,以避免使运行堆栈中所有软件层的中央处理器(CPU)过载,因此LL的实现需要结合使用自定义 硬件和软件 。
LL提供的功能通常包括:前同步码,访问地址和空中协议成帧,CRC生成和验证,数据白化,随机数生成以及AES加密。
通常通过隐藏这种复杂性及其实时要求的接口将其与协议栈的高层隔离。
设备只能处于以下五个状态之一:待机,通告,扫描,启动或连接,如下图所示:

广告商无需连接就可以传输数据,而扫描仪则在监听广告商。启动器是使用连接请求响应广告商的设备。如果广告商接受,则广告商和发起者都将进入连接状态。当设备处于连接状态时,它将以以下两种角色之一进行连接:主设备或从设备。通常,发起连接的设备将是主设备,发布其可用性并接受连接的设备将是从设备。因此,链路层定义了以下角色:
●Advertiser:发送广告包的设备。
●扫描器:一种扫描广告数据包的设备。
●主设备:启动连接(发起方)并在以后进行管理的设备。
●从设备:一种接受连接请求并遵循主机时间的设备。
从逻辑上讲,这些角色可以分为两对:广告客户和扫描程序(不在活动连接中时)和主角色和从属角色(在连接中时)。
###3.9.2.1 Bluetooth Device Address
蓝牙设备地址是蓝牙设备的主要标识符,类似于以太 媒体访问控制(MAC)地址用于 络设备的地址。 它是一个48位(6字节)数字,可唯一标识对等设备中的设备。 设备地址有两种,一种设备可以获取一种或两种:
公用设备地址
这也等同于BR / EDR设备中使用的固定的,工厂编程的设备地址。 它必须在电气和电子工程师协会(IEEE)注册机构中注册,并且在设备的整个使用期限内都不得更改。
随机设备地址
该地址可以预先编程,也可以在设备运行时动态生成。 在许多用例中,此类地址在BLE中很有用。
###3.9.2.2 Advertising and Scanning
BLE规范仅允许一种数据包格式和两种类型的数据包,即广告数据包和数据数据包。广告数据包用于两个目的,特别是为了:
○广播不需要完全连接建立开销的应用程序的数据
○发现奴隶并与他们联系
数据包以双向方式用于主设备和从设备之间的用户数据传输。最后,链路层充当可靠的数据载体,因为所有接收到的数据包均根据24位循环冗余校验(CRC),并且当错误检查机制检测到传输失败时,将安排重传。 由于没有预定义的重传上限,因此链路层将不断重发数据包,直到最终被接收方确认为止。
###3.9.3 HCI– Controller side
3.10Host
###3.10.1 HCI– Host Side
###3.10.2 L2CAP
逻辑链路控制和适配协议(L2CAP)层为上层提供数据封装服务,从而允许使用数据传输进行逻辑端到端通信。从本质上讲,它用作协议多路复用器,从上层获取多个协议并将其封装为标准BLE数据包格式,反之亦然。 L2CAP还负责包装的分段和重新组装。在此过程中,源自发送方上层的大数据包将装入BLE数据包的最大27字节有效负载大小。反向过程发生在接收端,在这里,分段的较大的上层数据包由多个较小的BLE数据包重新组合,并向上游发送到适当的较高层实体。
L2CAP层负责路由两个主要协议:属性协议(ATT)和安全管理器协议(SMP)。此外,L2CAP可以创建自己的用户定义通道来进行高通量数据传输,这一功能称为“基于LE信用的流量控制模式”。
个人理解这层就是数据封装,大小包的拆包组包,但是并不解析数据。
###3.10.3 ATT
ATT层使BLE设备可以将某些数据(称为属性)提供给另一个BLE设备。 在ATT的上下文中,公开属性的设备称为服务器,而对这些属性感兴趣并使用它们的对等设备称为客户端(the device exposing attributes is referred to as the server, and the peer device interested and working with these attributes is referred to as the client.)。 设备的链路层状态(主设备或从设备)独立于设备的ATT角色。 例如,主设备可以是ATT服务器或ATT客户端,而从设备也可以是ATT服务器或ATT客户端。 设备也可能同时是ATT服务器和ATT客户端。
本质上,ATT是基于设备提供的属性的简单客户端/服务器无状态协议。 客户端从服务器请求数据,服务器将数据发送到客户端。 该协议是严格的,意味着在请求挂起的情况下(即,对于已发出的请求尚未收到响应),在接收到响应并进行处理之前,无法提交其他请求。 在两个对等方同时充当客户端和服务器的情况下,这独立地适用于两个方向。
每个ATT服务器都包含以属性形式组织的数据,每个属性都分配有一个16位的属性句柄,称为通用唯一标识符(UUID),一组权限以及最后一个值。实际上,属性句柄仅仅是用于访问属性值的标识符。 UUID指定值中包含的数据的类型和性质。 当客户端想要从服务器读取属性值或向服务器写入属性值时,它会使用属性句柄向服务器发出读取或写入请求。服务器将使用属性值或确认进行响应。 对于读取操作,由客户端根据属性的UUID解析值并了解数据类型。 另一方面,在写操作期间,期望客户端提供与属性类型一致的数据,如果不是这种情况,则服务器可以自由拒绝该操作。
which is assigned a 16-bit attribute handle, called Universally Unique Identifier (UUID), a set of permissions, and finally a value.
理解,这个ATT就是查看一个属性提到a value,也就是单个value。所以传输数据量不行r> in case of a pending request, (i.e. no response yet received for an already issued request), no further requests can be submitted until the response is received and processed.
另,这个ATT的请求会被pending挂起,会阻塞新进来的请求,这样好像不适应我想做的事情。
###3.10.4 SM
安全管理器(SM)层定义了配对和密钥分发的手段,并为协议栈的其他层提供了功能,以安全地连接和交换与另一个BLE设备的数据。它同时包含一个协议和一系列安全算法,旨在为BLE协议栈提供生成和交换安全密钥的能力,以允许对等方通过加密的链路安全地进行通信,以信任远程设备的身份。 ,如果需要,可以隐藏公共蓝牙地址。它定义了两个角色:
●发起方:始终对应于链路层master
●响应者:始终对应于链路层slave
此外,它为以下三个过程提供支持:
●配对:生成和操作安全加密密钥的过程,以使设备能够切换到安全的加密链接。该密钥是临时密钥,不存储或不可用于后续连接。
●绑定:配对的顺序,接着是生成和交换永久性安全密钥,通常将其存储在非易失性存储器中,因此允许在两个设备之间创建永久性绑定,这将使它们能够快速在其中建立安全链接。后续连接,而无需再次执行绑定过程。
●加密重建:绑定过程完成后,密钥可能已存储在连接的两侧。如果已存储加密密钥,则此过程定义如何在后续连接中使用那些密钥来重新建立安全的加密连接,而无需再次执行配对(或绑定)过程。
###3.10.5 Application应用
与所有其他类型的系统一样,该应用程序位于最高层,并且负责包含与该应用程序实现的实际用例相关的所有内容的逻辑,用户界面和数据处理。 应用程序的体系结构高度依赖于每个特定的实现,并且在BLE中,它通常使用BLE配置文件提供的功能。
3.11 DA1458X片上系统资源介绍
略。
3.11.2 ARM Cortex-M0 CPU
它使用了一个称为Thumb的指令集,该指令集是在ARM7TDMI处理器中首次引入并受其支持的。 但是,还包括一些来自ARMv6架构的较新指令以及一些Thumb-2技术的指令。
Thumb-2中设置的指令包括16位和32位指令。 C编译器生成的大多数指令都使用16位指令,而当16位版本无法执行所需的操作时,将使用32位指令。
从学术上讲,Cortex-M0处理器被归类为load-store架构,因为它具有用于读取和写入存储器的独立指令以及用于使用寄存器的算术或逻辑运算的指令。
Interrupts can have four different programmable priority levels.
3.11.3.1 ROM
This is an 84 kB ROM containing the Bluetooth Low Energy protocol stack as well as the boot code
sequence.
ROM已经放的就是蓝牙协议栈了,还有就是启动顺序。
所以用户代码就别打ROM这里主意了,老老实实放在OTP。
3.11.6.2 Wake-Up Timer
它具有监视GPIO状态变化的功能,同时实现从0 ms到63 ms的去抖动时间。
这个timer不仅仅是定时,还监测IO状态,后续仔细看看怎么用。
It accumulates external events and compares their number to a programmed value, and generates an interrupt to the CPU.
这个类似针对外部IO翻转的计数,满足计数后触发timer,所以猜测这个timer是个计数器模式p>
3.11.7 Clock and Reset
高定平复位。
3.11.9.3 DA14583
This offers you to the developer the flexibility of Software Upgrades Over The Air (SUOTA), enabling devices that are upto-date in the field.
带片内flash,方便做OTA升级。
当然,14580+外部flash方案也可以做OTA。
本小节完,继续看下一节。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!