加快物联网应用的蓝牙® 连接的设计

在讨论 ATBTLC1000-XPro 低功耗蓝牙® 扩展板前,我们先快速了解一下该板所用的 ATBTLC1000 无线微控制器。 这款 SoC 器件由一个 ARM Cortex-M0 微控制器、一个 2.4 GHz 无线收发器、128 kB RAM、128 kB ROM 以及 AES-128 和 SHA-256 硬件加速计组成。 此外,该器件提供的是全系列 GPIO 和串行主/从 SPI、I2C 主/从和 UART 接口连接。 该器件同时具有集成 DC/DC 转换器和电源管理单元 (PMU),组合在一起帮助 SoC 实现众多超低功耗规范模式。 同时包括一个单通道 11 位 ADC、四个 PWM 端口以及通用定时器。 另外,还使用 ROM 来存储了合适的智能蓝牙协议堆栈(蓝牙 4.1),具体包括 L2CAP 服务层协议、安全管理器、属性协议 (ATT)、通用属性协议 (GATT) 和通用访问规范 (GAP)。 应用特定规范包括接近、温度计、心率和血压。 图 1 展示了这一 SoC 器件的框图。

该器件能够通过 1.8 至 4.3 VDC 的电池工作,使用 3.6 V 电源时,在保持 RAM 和 RTC 运行的休眠模式消耗的电流低至 1.1 μA,且在接收模式时峰值电流为 4.0 mA。

Atmel ATBTLC1000 框图图片

图 1:ATBTLC1000 框图。

许多物联网应用将要求电池供电型设备使用期间只需很少的电池更换次数。 郊区环境通常不是很方便,不是很远就是可能有危险,当在这些地方使用物联网传感器时,通常会因为电池寿命短而产生高额费用,对传感器制造商的品牌也会造成潜在伤害。 凭借创新的电源架构,ATBTLC1000 消除了外部稳压器和片外元件的需要。 该 PMU 块具有典型值达 83% 的高能效,包括 DC/DC 降压转换器和低压降稳压器 (LDO),可转换电池电压,向 BLE 内核和 RF 收发器供电。

Atmel ATBTLC1000 Xplained Pro 扩展板图片

图 2:Atmel ATBTLC1000 Xplained Pro 扩展板。

如开始一个基于新微控制器的设计,Atmel 的 Xplained Pro 板系列便是一种超快、超便利的方法。 Xplained Pro 板以 Atmel 的集成开发环境平台 Atmel Studio 为支持平台,配备 Atmel Software Framework (ASF)、全套板支持驱动器、代码示例和文档;且 Atmel 的所有基于 AVR 和 ARM 的微控制器产品系列均提供该板。 如图 2 中所示,ATBTLC1000 扩展板使用标准连接器针座,可方便地将各种连接形式合并在一起,包括有线和无线、电容式触摸控制、扩展 IO 和一系列基于 MEMS 的传感器。 设计时考虑到了工程师的需求,不仅让工程师加快了产品上市速度,而且还通过为每块板提供完善的文档材料和应用说明,让工程师设计时更有信心。

ATBTLC1000 Xplained Pro 在一个模块化封装中合并了 FCC 和 ETSI 预认证无线 SoC、数字温度传感器、调试器针座支持(UART、I2C 和电流计量)以及一个 32 kHz 的晶体。 它可以连接到多个主机 MCU Xplained Pro 板。 为简化处理,该扩展板与 Atmel SAML21 Xplained Pro 板是作为一个完整套件提供的,您也可以单独购买 MCU 板。

入门任何 Xplained Pro 平台都极其简单。 开始前您需要从 Atmel 网站免费下载 Atmel Studio(当前为第 7 版)。 下载的包中包含了 Atmel Software Framework,因此您也可以随时使用代码示例。 安装后,启动 Atmel Studio 并将扩展板连接到您的微控制器板即可。 Atmel Studio 会自动检测连接到了哪一种 MCU 和扩展板,并显示该组合的登录页。登录页提供了相关文档和规格书供您选择,以启动 Atmel Software Framework 来访问实例应用。

如前所述,ATBTLC1000 SoC 具有智能蓝牙链路控制器,促使主机微控制器执行所有标准蓝牙服务器和客户端操作,如 GAP 和 GATT。 该 SoC 通过片载固件提供了所有 BLE 4.1 链路层和应用规范功能。 Atmel 提供了一个适配器 API 来实现与链路层固件的通信。

Atmel ATBTLC1000 智能链路控制器主机连接图

图 3:ATBTLC1000 智能链路控制器主机连接图。

Atmel 的 API 采用一个直接编程模型,该模型通常包含三个操作组,即平台/链路控制器初始化、设备配置以及事件处理与监视。 图 4 所示为一个简单的应用流程图。 at_ble-init() 函数调用启动了链路控制器。 接着需要设备配置来设置设备地址并命名任何相关广告数据。 该 API 采用请求、响应工作机制。 一个 API 调用可触发一个或多个事件消息,返回到调用应用。 在 Atmel 的《低功耗蓝牙 API:软件开发用户指南》1 和 Atmel 软件框架2 中可找到完整的可用 API 清单。

API 编程模型 – 应用流程图

图 4:API 编程模型 – 应用流程。

利用一个计划图可完美地展示该 API 的工作原理:见图 5。 在此示例中,设置 GAP 广告的过程意味着外设将以无线方式发送一个单向广播数据,以便让另一蓝牙设备发现。 除了这个必需的广告数据,如设备名称和 ID,可通信的其它信息可帮助建立连接。

GAP 广告过程计划图

图 5:GAP 广告过程计划图。

这一其它数据就是调用响应数据。 函数 at_ble-init() 初始化后,在对广告函数作出调用前,需要在 at_ble_adv_data_set 函数中设置广告数据。 如果目的是广告,然后建立连接,则要调用 at_ble_adv_start(可连接) 图 6 中的代码实例只展示了启动此过程的应用的第一部分,从定义和设置设备名称、初始化设备、设置广告响应数据,到开始广告。 这只是一个通过在设计应用时使用 Atmel 蓝牙 API 实现的简洁性实例。 在所注明的参考来源中可找到更多信息。

#include "at_ble_api.h"

#define CHECK_ERROR(VAR,LABEL) if(AT_BLE_SUCCESS != VAR) \

{ \

goto LABEL; \

}

#define DEVICE_NAME "Atmel BLE Device"

uint8_t adv_data[] = { 0x11, 0x07, 0x1b, 0xc5, 0xd5, 0xa5, 0x02, 0x00, 0x37,

0xaa, 0xe3, 0x11, 0x2a, 0xdc, 0x00, 0xcd, 0x30, 0x57};

at_ble_status_t init_peripheral_role(void)

{

at_ble_status_t status;

at_ble_init_config_t pf_cfg;

platform_config busConfig;

at_ble_addr_t addr = {AT_BLE_ADDRESS_PUBLIC,

{0x25, 0x75, 0x11, 0x6a, 0x7f, 0x7f}

};

//Set device name

status = at_ble_device_name_set((uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));

CHECK_ERROR(status, __EXIT);

<e>

/*Memory allocation required by GATT Server DB*/

pf_cfg.memPool.memSize = 0;

pf_cfg.memPool.memStartAdd = NULL;

<e>

/*Bus configuration*/

busConfig.bus_type = UART;

pf_cfg.plf_config = &busConfig;

//Initializations of device

status = at_ble_init(&pf_cfg);

CHECK_ERROR(status, __EXIT);

//Set device address

status = at_ble_addr_set(&addr);

CHECK_ERROR(status, __EXIT);

<e>

//Set advertising data, instead of NULL set scan response data if needed

status = at_ble_adv_data_set(adv_data, sizeof(adv_data), NULL, 0))

CHECK_ERROR(status, __EXIT);

<e>

//Start advertising

status = at_ble_adv_start(AT_BLE_ADV_TYPE_UNDIRECTED, AT_BLE_ADV_GEN_DISCOVERABLE,

NULL, AT_BLE_ADV_FP_ANY, 100, 0, false))

__EXIT:

return status;

}

图 6:展示某个应用第一部分的示例代码。

对于即将开始开发电池供电型物联网应用(如温度传感器)的设计人员,提供超低功耗通信是基本要求。 因此进行此类设计面临着必须学习和理解蓝牙协议的问题,这可能是一个巨大挑战,并可能彻底地占用设计的主要部分。 Atmel 利用 ATBTLC1000 Xplained Pro 扩展板让这一任务变得极其简单。 嵌入式开发人员可以将 Atmel 的蓝牙 API 函数调用合并到物联网应用中,使得这个任务快速、简单。 ATBTLC1000 带有 FCC 和 ETSI 无线电法规认可并符合蓝牙 SIG 标准,无论用到哪个地方,均非常适合运用到您的设计中。

附注与参考

  1. ATBTLC1000 BluSDK 低功耗蓝牙 API 用户指南
  2. http://asf.atmel.com/docs/latest/search.html?device=samd21
  3. ATBTLC1000 Xplained Pro 用户指南
  4. ATBTLC1000 硬件超低功耗 BLE 4.1 SoC 用户指南
  • 加快物联网应用的蓝牙® 连接的设计已关闭评论
    A+
发布日期:2019年07月13日  所属分类:参考设计