1.简介

本文档的目的是作为嵌入式软件开发人员的参考,提供一个对蓝牙低功耗(BLE)标准的实际和高层次理解的启动。它给出了DA14585/586/531片上系统(SoC)系列集成电路(IC)器件的系统架构和软件架构概述。

1.1.目标受众

本文档适用于基于DA14585/586/531片上系统(SoC)平台的SmartBond™DA14585/586/531设备进行应用开发的嵌入式软件开发人员/嵌入式固件工程师。

对于初次接触DA14585/586/531片上系统(SoC)平台的开发人员,建议浏览整个文档,以便熟悉所涵盖的内容以及在哪里可以找到特定的信息。

有经验的嵌入式固件开发人员在阅读了一些关键章节和技术文档以及提供的示例应用程序后,将能够深入了解SDK。雷竞技安卓下载这将使您更好地了解Dialog的DA14585/586/531蓝牙低功耗器件,以及如何最好地利用Dialog的DA14585/586/531 SoC平台提供的功能。

1.2.设备模式

既支持BLE又支持基本速率(BR) /增强数据速率(EDR)协议的设备称为双模设备。通常,在蓝牙生态系统中,移动电话或笔记本电脑被认为是双模式设备,除非特别说明。只支持BLE的设备称为单模设备。

1.2.1.单模器件

单模(BLE或蓝牙低能耗)设备,只实现BLE,能够与单模和双模设备通信。但是,对于只支持BR/EDR的设备则不是这样。BLE支持是单模设备处理传入消息和发出响应的必备条件。

1.2.2.双模器件

双模式BR/EDR/LE,蓝牙低能耗就绪设备,实现了BR/EDR和BLE,并能够与任何蓝牙设备通信。

1.3.主要构件

在经典的蓝牙标准中,协议栈由两个块组成:控制器和主机。在蓝牙BR/EDR设备中,这两者通常是分开实现的。然而,最新的蓝牙设备包含了越来越多的构建模块。几乎每个蓝牙设备中存在的主要构建模块如下:

  • 使用蓝牙协议栈接口来实现特定用例的应用程序
  • 包含蓝牙协议栈上层的主机
  • 包含蓝牙协议栈低层(包括无线电)的控制器

蓝牙规范还在主机和控制器之间提供了一种称为主控制器接口(HCI)的标准通信协议,当主机和控制器由不同实体开发时,该协议允许主机和控制器之间的互操作性。

1.4.硬件配置

这些主要构件可以在单个集成电路(IC)或片上系统(SoC)设备中实现,也可以在通过适当的通信接口和协议(UART、USB、SPI或其他)连接的多个IC中分离和执行。

1.4.1.集成处理器

大多数传感器应用倾向于使雷竞技安卓下载用集成处理器(SoC)硬件配置,因为它可以降低整体系统的复杂性和相关的印刷电路板(PCB)实现成本。

1.4.2.外部处理器

智能手机和平板电脑等功能强大的计算设备通常会选择带有相应HCI协议的外部处理器,该协议可能是专有的,也可能是标准的。这种方法还允许与专门的微控制器集成额外的BLE连接,而无需修改整体设计。

图1显示了实现蓝牙时两种方法之间的比较:

. . / _images / image1.png

图1集成与外部处理器BLE硬件配置

1.5.网络模式

BLE设备使用两种不同的通信方法,每种方法都有一定的优点和局限性:广播和连接。这两种方法都遵循由通用访问概要(GAP)建立的特定程序。

1.5.1.广播

当使用无连接广播时,BLE设备将数据发送到可接受的监听范围内的任何扫描设备或接收器。从本质上讲,这种机制允许BLE设备将数据单向发送给能够接收传输的任何人或任何东西。

广播定义了两个独立的角色:

  • 广播器:定期向任何愿意接收它们的人发送不可连接的广告包。
  • 观察者:反复扫描预先设定的频率,以接收任何不可连接的广告数据包。

广播是设备同时向多个对等体传输数据的唯一方式。这些广播数据是使用BLE的广告功能发送出去的。

1.5.2.连接

对于BLE中的双向数据传输,需要有一个连接。BLE连接只不过是两个BLE对等体之间在特定时间点(连接事件)建立的周期性数据交换。通常情况下,数据只在两个BLE连接对等体之间交换,不涉及其他设备。连接定义了两个独立的角色:

  • 中央(主):重复扫描预先设置的BLE频率以寻找可连接的广告数据包,并在合适的情况下发起连接。一旦连接建立,中央管理定时并启动定期数据交换。
  • 外围设备(从设备):定期发送可连接的广告包并接受传入连接的设备。一旦进入活动连接,外围设备就会遵循中心的定时,并定期与中心设备交换数据。

对于要发起的连接,中心设备从外围设备接收可连接的广告包,然后向外围设备发送请求,以建立两个设备之间的独占连接。一旦连接建立,外围设备就会停止广告,两个设备就可以开始双向交换数据。虽然中心是管理连接建立的设备,但在每个连接事件期间,数据可以由任何一个设备独立发送,并且角色不限制数据吞吐量或优先级。因此,一个设备可以同时作为中心设备和外围设备,一个中心设备可以连接到多个外围设备,以及一个外围设备可以连接到多个中心设备。

连接提供了通过使用附加协议层(更具体地说,通用属性概要文件(GATT))对每个字段或属性进行更细粒度控制来组织数据的能力。数据是围绕称为服务和特征的单元组织的。此外,连接允许更高的吞吐量,并具有建立安全加密链路的能力,以及协商连接参数以适应数据模型。

一个BLE设备可以有多种服务和特征,组织在一个有意义的结构中。服务可以包含多个特征,每个特征都有自己的访问权限和描述性元数据。

1.6.配置文件

蓝牙规范清楚地分离了协议和配置文件的概念。这种区别是由于每个概念服务于不同的目的。总体规格分为:

  • 协议:是所有符合蓝牙规范的设备所使用的构建块。协议本质上形成了实现不同数据包格式、路由、多路复用、编码和解码的层,这些层允许数据在对等点之间有效地发送。
  • 配置文件:是功能的垂直切片,定义了所有设备所需的基本操作模式(如通用访问配置文件和通用属性配置文件)或特定用例(接近配置文件,葡萄糖配置文件);概要文件本质上指定了应该如何使用协议来实现特定的目标,无论是通用的还是特定的。

1.6.1.通用概要文件

通用概要文件由蓝牙规范定义。两个配置文件是基本的,因为它们确保了来自不同供应商的BLE设备之间的互操作性:

  • GAP (Generic Access Profile):指定低层无线电协议的使用模型,用于定义允许设备广播数据、发现设备、建立连接、管理连接和协商安全级别的角色、过程和模式;GAP本质上是BLE的最上层控制层。该配置文件对于所有BLE设备都是强制性的,并且所有设备都必须符合GAP。
  • GATT (Generic Attribute Profile):处理BLE中的数据交换,指定基本的数据模型和过程,允许设备在它们之间发现、读取、写入和推送数据元素。它基本上是BLE的最顶层数据层。

GAP和GATT是BLE的基础,它们经常被用作提供应用程序编程接口(api)的基础,作为应用程序与协议栈交互的入口点。

1.6.2.具体到用例配置文件

特定于用例的概要文件通常仅限于基于gatt的概要文件。基本上所有这些概要都使用关贸总协定概要的程序和操作模式作为所有进一步扩展的基础构件。但是,规范的4.1版引入了面向逻辑链路控制和适应协议(L2CAP)连接的通道,这表明也可以使用无gatt配置文件。

1.6.2.1.sig定义的基于gatt的概要文件

蓝牙SIG为BLE网络中涉及的设备的控制和数据层提供了一个可靠的参考框架。它还提供了一组基于GATT的预定义用例概要,完全涵盖实现广泛特定用例所需的所有程序和数据格式,例如:

  • “查找我配置文件”:允许设备对其他设备进行物理定位。例如,通过使用智能手机来找到启用BLE的密匙环,反之亦然。
  • 近距离配置:检测附近设备是否存在。如果某件物品被遗忘在某个地方,比如房间里,就会发出哔哔声。
  • HID over GATT Profile:通过BLE传输HID (Human Interface Device)数据。例如,用于键盘、鼠标、遥控器。
  • 葡萄糖档案:安全地转移葡萄糖水平的BLE。
  • 健康温度计配置文件:通过BLE传输体温读数。

蓝牙SIG规范在其采用的文档页面中提供了SIG批准的配置文件的完整列表(更多信息见https://www.bluetooth.com/specifications/adopted-specifications).开发人员还可以在蓝牙开发人员门户网站上直接浏览当前采用的所有蓝牙服务和特性的列表。

1.6.2.2.特定于供应商的资料

蓝牙规范允许供应商为sig定义的配置文件未涵盖的用例定义他们的配置文件。这些概要文件可以对特定用例(例如,一个新的传感器附件和一个智能手机应用程序)中涉及的两个对等点保持私有,或者也可以由供应商发布,以便其他各方可以根据供应商提供的规范提供概要文件的实现。发布特定于供应商的配置文件的一个例子是苹果的iBeacon。

1.6.3.通用访问配置文件层

通用访问概要(GAP)层负责整个连接功能。GAP处理设备的访问模式和过程,包括设备发现,直接与应用程序和/或配置文件连接,并处理设备发现和设备连接相关的服务。此外,GAP负责安全特性的初始化。

从本质上讲,GAP可以被认为是BLE的顶层控制层,因为GAP指定了设备如何执行设备发现和建立安全连接等控制程序。这样做是为了确保互操作性,从而允许来自不同供应商的设备之间交换数据。

GAP指定了设备在BLE网络中可以采用的四种角色:

  • 广播器:设备用特定的数据做广告,让任何发起的设备知道,例如,它是一个可以连接的设备。此通告包含设备地址和可选的附加数据,如设备名称。
  • 观察者:扫描设备在收到广告后,向广告主发送“扫描请求”。广告商用“扫描响应”来回应。这是设备发现的过程,在此之后,扫描设备意识到广告设备的存在,并知道与广告设备的连接是可能的。
  • Central:发起连接时,必须指定连接的对端设备地址。如果接收到与对端设备地址匹配的广告,中心设备将发出与广告设备建立连接(链接)的请求。在建立连接的过程中会考虑特定的连接参数。
  • 外围设备:一旦建立连接,如果设备是发布者,它将作为从设备;如果设备是发起者,它将作为主设备。

从根本上说,GAP建立了不同的规则和概念集,以规范和标准化设备的低级操作。特别是:

  • 它们之间的角色和交互。
  • 这些设备之间的操作模式和转换。
  • 实现一致和互操作通信的操作程序。
  • 所有安全方面,包括安全模式和程序。
  • 用于非协议数据的附加数据格式。

1.6.4.通用属性概要层

通用属性概要(GATT)层是一个服务框架,它定义了使用属性协议(ATT)的所有子过程。GATT详细描述了如何通过BLE连接交换配置文件和用户数据。GAP定义了与设备的低级交互,与之相反,GATT只处理实际的数据传输过程和格式。

GATT还为SIG定义的所有基于GATT的配置文件提供了参考框架,通过有效地覆盖这些配置文件的精确用例,GATT确保了来自不同供应商的设备之间的互操作性。因此,所有标准BLE配置文件都基于GATT,必须符合GATT才能正确运行。这使得GATT成为BLE规范的关键部分,因为与应用程序和用户相关的每个数据集合都必须根据其规则进行格式化、打包和传输。雷竞技安卓下载

GATT为相互作用的BLE设备定义了两个角色:

  • 客户端:向服务器发送请求,接收响应和潜在的服务器发起的更新。GATT客户端事先不知道服务器的属性,因此它必须首先通过服务发现查询这些属性的存在和性质。在服务发现完成之后,它开始读取和写入在服务器上找到的属性,并接收服务器发起的更新。对应ATT客户端。
  • 服务器:接收来自客户端的请求并发出响应。它还在配置时发送服务器发起的更新,并且是负责存储用户数据并使用户数据可用于客户端(按属性组织)的角色。每台出售的BLE设备都必须至少包括一个基本的GATT服务器,可以响应客户端请求,即使只是返回一个错误响应。对应ATT服务器。

要知道GATT和GAP的角色是完全独立的,但同时彼此兼容。例如,GAP中心和GAP外围设备可以同时充当GATT客户端或服务器,甚至可以同时充当两者。

GATT使用ATT作为设备间数据交换的传输协议。这些数据按层次结构组织在称为服务的部分中,这些部分在概念上对称为特征的用户数据进行分组。

1.7.协议栈

从架构的角度来看,与所有蓝牙设备类似,单模BLE设备分为三个模块:控制器、主机和应用程序。这些基本构建块中的每一个都由几个层组成,这些层使设备可操作,并紧密地集成在所谓的协议栈中。看到图2

. . / _images / image2.png

图2BLE协议栈层

下面几节将介绍前面提到的构建块以及每个构建块所对应的层。

1.8.控制器

控制器包括BLE设备通信所需的所有低级功能。控制器由物理层(PHY)、链路层(LL)和主控制器接口(HCI)的控制器端组成。

1.8.1.物理层(PHY)

在物理层(PHY)中,一个关键块是1 Mbps自适应跳频高斯频移键控(GFSK)无线电,该无线电在未经许可的2.4 GHz工业、科学和医疗(ISM)频段运行。

1.8.3.主机控制器接口-控制器侧

主机控制器接口(HCI)在控制器端,提供了一种通过标准化接口与主机通信的方式。蓝牙规范将HCI定义为主机和控制器相互交互的一组命令和事件,以及数据包格式和一组用于流控制和其他过程的规则。此外,该规范还定义了几种传输,每种传输都为特定的物理传输(UART、USB、SDIO等)增强了HCI协议。

1.9.宿主

Host块由一组层组成,每个层都具有特定的角色和功能,它们之间的合作使整个块可操作。如图2这些层是逻辑链路控制和适应协议(L2CAP)、属性协议(ATT)、安全管理器(SM)和通用属性概要文件(GATT)和通用访问概要文件(GAP)。

1.9.1.主机控制器接口-主机端

主机端的HCI接口提供了一种通过标准化接口与控制器通信的方式。与控制器端HCI类似,该层的实现可以通过软件API建立,也可以通过硬件接口(如UART或SPI)建立。

1.9.3.属性的协议

ATT层使BLE设备能够向另一个BLE设备提供某些被称为属性的数据。在ATT上下文中,公开属性的设备被称为服务器,感兴趣并使用这些属性的对等设备被称为客户机。设备的链路层状态(master或slave)独立于设备的ATT角色。例如,主设备可以是ATT服务器或ATT客户端,从设备也可以是ATT服务器或ATT客户端。一个设备同时是ATT服务器和ATT客户端也是可能的。

本质上,ATT是一种基于设备属性的简单的客户端/服务器无状态协议。客户端向服务器请求数据,服务器向客户端发送数据。该协议是严格的,这意味着在未决请求的情况下(即对于已经发出的请求尚未收到响应),在收到并处理响应之前不能提交进一步的请求。在两个对等体同时充当客户端和服务器的情况下,这独立地适用于两个方向。

每个ATT服务器包含以属性形式组织的数据,每个属性被分配一个称为universal Unique Identifier (UUID)的16位属性句柄,一组权限,最后是一个值。实际上,属性句柄只是一个用于访问属性值的标识符。UUID指定值中包含的数据的类型和性质。当客户端想要从服务器读取或写入属性值时,它使用属性句柄向服务器发出读或写请求。服务器将用属性值或确认响应。在读取操作的情况下,由客户机根据属性的UUID解析值并理解数据类型。另一方面,在写操作期间,期望客户端提供与属性类型一致的数据,如果情况并非如此,服务器可以自由地拒绝该操作。

1.9.4.安全管理器

安全管理器(Security Manager, SM)层定义了配对和密钥分发的方法,并为协议栈的其他层提供了与另一个BLE设备安全地连接和交换数据的功能。安全管理器包括一个协议和一系列安全算法,旨在赋予BLE协议栈生成和交换安全密钥的能力,以允许对等端通过加密链路安全通信,信任远程设备的身份,并在需要时隐藏公共蓝牙地址。SM定义了两个角色:

  • 发起者:始终是中心
  • Responder:总是外围设备

此外,SM还支持以下三个过程:

  • 配对:生成和操作安全加密密钥以使设备能够切换到安全加密链路的过程。此键是临时的,不能存储,也不能用于后续连接。
  • 绑定:在生成和交换永久安全密钥之后进行的一系列配对,通常存储在非易失性存储器中。因此,可以在两台设备之间建立永久的连接,从而可以在后续连接中快速建立安全链路,而无需再次进行绑定操作。
  • 加密重新建立:在绑定过程完成后,密钥可能已经存储在连接的两端。如果已经存储了加密密钥,则此过程定义如何在后续连接中使用这些密钥来重新建立安全的加密连接,而不必再次执行配对(或绑定)过程。

因此,配对可以创建一个仅在连接生命周期内有效的安全链接。另一方面,绑定实际上以共享安全密钥的形式创建了一个永久的关联(也称为bond),该关联将在以后的连接中使用,直到任何一方决定删除它们。某些文档和api有时使用带有绑定的术语“配对”,而不是简单地使用“绑定”,因为绑定过程总是在前面包含配对阶段。

尽管总是由发起者来触发特定安全过程的开始,但响应器可以异步请求启动上面列出的任何过程。但是,对于响应器来说,并不能保证发起者会实际遵守请求,因此这更像是一个可选请求,而不是一个绑定请求。这个安全请求在逻辑上只能由连接的从端或外围端发出。

1.9.5.应用程序

与所有其他类型的系统一样,应用程序位于最高层,负责包含与应用程序实现的实际用例相关的所有内容的逻辑、用户界面和数据处理。应用程序的体系结构高度依赖于每个特定的实现,在BLE中,它通常使用BLE概要文件提供的功能。

1.10.系统片上平台

1.10.1.概述

DA14585/586平台包括如下所示的多个块图4

. . / _images / image4.png

图4片上系统平台主块

在接下来的部分中,将简要介绍该平台的主要构建模块。详细信息请参见具体设备数据表。

1.10.2.主要特性

  • 符合蓝牙V5.0, ETSI EN 300 328和EN 300 440 Class 2(欧洲),FCC CFR47 Part 15(美国)和ARIB STD-T66(日本)
  • 支持最多8个蓝牙LE连接
  • 50毫秒内快速冷启动
  • 处理能力
    • 16 MHz 32位Arm®Cortex®M0与SWD接口
    • 专用链路层处理器
    • AES-128位加密处理器
  • 记忆
    • 64kb OTP (One-Time-Programmable)内存
    • 96 kB数据/保留SRAM
    • 128 kB ROM
  • 电源管理
    • 集成Buck/Boost DCDC转换器
    • P0、P1、P2接口公差3.3 V
    • 只需4个电源引脚即可轻松解耦
    • 支持硬币(typ。3.0 V)和碱性(typ。1.5 V)电池单元
    • 1.8 V冷启动支持
    • 用于电池电压测量的10位ADC
  • 数字控制振荡器
    • 16mhz晶体(±20ppm最大)和RC振荡器
    • 32 kHz晶体(±50 ppm,±500 ppm最大)和RCX振荡器
  • 柔性复位电路
    • 系统和电源复位在一个引脚
  • 通用,捕获和睡眠定时器
  • 数字接口
    • 通用I/ o: 14 (WLCSP34), 25 (QFN40), 32 (QFN48)
    • 2 x UARTs与硬件流量控制高达1mbps
    • SPI接口+™
    • I2C总线在100千赫,400千赫
    • 3轴能力正交解码器
  • 模拟接口
    • 4通道10位ADC
  • 无线电收发机
    • 完全集成2.4 GHz CMOS收发器
    • 单线天线:无需射频匹配或RX/TX切换
    • VBAT3V时电源电流:
    • TX: 3.4 mA, RX: 3.7 mA(理想DCDC)
    • 0 dBm发射输出功率
    • - 20dbm输出功率在“近场模式”
    • -93 dBm接收器灵敏度
  • 包:
    • WLCSP 34引脚,2.40 mm x 2.66 mm
    • QFN 40引脚,5mm x 5mm
    • QFN 48引脚,6毫米x 6毫米

SPI™是摩托罗拉公司的商标。

1.11.DA14531系统芯片平台

1.11.1.概述

DA14531平台包括许多块,如图所示图5

. . / _images / image5.png

图5DA14531系统片上平台主块

在下一节中,将简要介绍该平台的主要构建模块。详细信息请参见具体设备数据表。

1.11.2.主要特性

  • 兼容蓝牙V5.1, ETSI EN 300 328和EN 300 440 Class 2(欧洲),FCC CFR47 Part 15(美国)和ARIB STD-T66(日本)
  • 最多支持3个BLE连接
  • 典型的冷启动到无线电激活35毫秒
  • 处理能力
    • 16 MHz 32位Arm®Cortex®M0+与SWD接口
    • 专用链路层处理器
    • AES-128加密处理器
    • 基于软件的认证真随机数发生器(TRNG)
  • 记忆
    • 32kb一次可编程(OTP)
    • 48kb可维护的系统RAM
    • 144kb ROM
  • 电源管理
    • 集成Buck/Boost DCDC转换器
    • Buck:需要读OTP时,1.8 V≤VBAT_HIGH≤3.3 V
    • Buck:保留RAM时,1.1 V≤VBAT_HIGH≤3.3 V
    • Boost: 1.1 V≤VBAT_LOW≤1.65 V
    • 无时钟休眠模式:Buck 270na, Boost 240na
    • 用于电池电压监测的10位ADC
    • 内置温度传感器,用于模具温度监测
  • 数字控制振荡器
    • 32 MHz晶体和32 MHz RC振荡器
    • 32 kHz晶体和32/512 kHz RC振荡器
  • 15 kHz RCX作为32 kHz晶体替代品
  • 可编程复位电路
  • 2×具有捕获和PWM功能的通用定时器
  • 数字接口
    • GPIOs: 6 (WLCSP17), 12 (FCGQFN24)
    • 2× UARTs(带流量控制)
    • SPI主/从最高32 MHz(主)
    • I2C总线在100千赫和400千赫
    • 3轴能力正交解码器
    • 键盘控制器
  • 模拟接口
    • 4通道10位ADC
  • 无线电收发机
    • 完全集成2.4 GHz CMOS收发器
    • 单线天线
    • TX: 3.5 mA, RX: 2.2 mA(系统电流为DC-DC, VBAT_HIGH = 3v, 0 dBm)
  • 可编程传输输出功率从-19.5 dBm到+2.5 dBm
  • -94 dBm接收机灵敏度
  • 包:
    • WLCSP 17球,1.7 × 2.05,距0.5 mm
    • FCGQFN 24引脚,2.2 × 3,间距0.4 mm

SPI™是摩托罗拉公司的商标。