蓝牙4.2协议芯片BlueNRG-1的低功耗蓝牙通信设计
2018-05-16,,
,,
(空军预警学院, 武汉 430019)
引 言
蓝牙[1]是一种标准无线通信协议,基于设备低成本的收发器芯片,传输距离近、功耗低,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。无线蓝牙耳机、蓝牙USB软件狗等都是蓝牙产品的典型代表,未来的物联网将是蓝牙技术应用的新蓝海[2]。
蓝牙技术发展迅速,到现在拥有3种类别和4个版本,传输速率从1 Mbps发展到接近54 Mbps。在传输速率上与WiFi类似,然而,蓝牙通信系统最致命的弱点在于功耗大。因为,一旦打开蓝牙设备,它就会持续进行搜索并试图与设备保持连接,这个过程的功耗是很大的,所以,未来的蓝牙技术发展就在于保持高速传输速率的前提下,降低设备功耗。总体来说,低功耗、高传输率、高集成度、高性价比和更长的通信距离的简化蓝牙技术设计是当前一个热点问题[4-5]。
参考文献[3]提出了一种基于蓝牙4.2的无线通信的设计方法。该方法在降低系统功耗上有一定的探索,并取得了较好的效果,但其电路结构复杂,成本昂贵,不易实现。本文针对传统蓝牙通信系统设计中存在的电路设计复杂、功耗大、速率低和性价比低等问题,提出了一种基于蓝牙4.2协议的BlueNRG-1芯片蓝牙通信系统设计方案。试验的结果表明,该方案降低了功耗,简化了电路,具有体小便携、功耗低、性价比高、传输速率高和使用寿命长等优点。
1 BlueNRG-1芯片介绍
BlueNRG-1芯片是ST公司生产的一款蓝牙低功耗(BLE)单模式系统级芯片(SoC),符合蓝牙4.2规范[3]。该芯片继承了Award-winning BlueNRG网络处理器的特点,使用嵌入式Cortex-M0的内核运行应用程序代码,具有多功能定时器、看门狗、ADC、RTC和DMA控制器,此外,ADC与模拟传感器连接,用于读取测量电池电量。该芯片在提供优良的射频性能的同时,也集成了高效率DC/DC转换器,并且能保持超低功耗特性,优化了在睡眠模式电流的消耗,使供电电池的寿命进一步提高。
BlueNRG-1芯片作为一种BLE单芯片,还具有如下特性:
① 符合BLE4.2规范,集成Stack、Profile等,所有应用软件的执行可在一片IC内完成。
② 内含16或32 MHz Cortex-M0内核,160 KB Flash,24 KB RAM。
③ 具有丰富外设:UART、SPI、I2C、GPIO、ADC、Timer、RTC、Watchdog,易于扩展。
④ 供电电压范围较宽:1.7~3.6 V,温度要求较宽:-40~105 ℃,可提供汽车级BLE芯片。
⑤ 低功耗:睡眠模式电流为0.35 μA,高发射功率为8 dBm。
⑥ 提供QFN32及WLCSP34超小封装、STM32的软件架构,便于更宽泛的应用及便捷的开发。
图1是它的内部结构框图。
图1 BlueNRG-1芯片内部框图
2 基于BlueNRG-1的低功耗蓝牙通信设计
2.1 低功耗设计依据
低功耗设计主要针对核心器件的选择和电路的设计。在核心器件的选择上,选用ST公司生产的低功耗蓝牙单芯片BlueNRG-1。BlueNRG-1芯片包括一个完全集成的低功耗的16/32 MHz的晶体振荡器和一个嵌入式幅度调节环,其中,16 MHz晶振为高速晶振,32 MHz晶振为低速晶振,在正常工作时,16 MHz高速晶振运行,在低功耗模式时处于睡眠状态,32 MHz低速晶振运行。通过选择石英晶振来实现低功耗和快速启动。为了实现低功耗运行和良好的晶振频率稳定度,必须对相对于石英的负载电容C及其外围电路进行优化设计。
电路的总功耗由工作状态和睡眠状态两种状态的功耗组成。
P=PR+PS
PR=VDDIR
PS=VDDIS
式中,PR为正常工作时的电路功耗,IR为正常工作时的电路电流;PS为睡眠状态时的电路功耗,IS为睡眠状态时的电路电流。
从上式可以看出,能反映电路功耗的主要参数是电路电流。出于可控性因素考虑,低功耗设计方法的原则主要在降低电路电流上。笔者提出采用的核心器件蓝牙单芯片BlueNRG-1使电路在无外部中断事件发生时,能长期工作在睡眠状态,电路电流极低,并且在有外部中断事件发生时,电路能在很短时间内启动,执行动作;结束后,电路又迅速进入睡眠状态。这样,电路始终保持低功耗状态。
2.2 关键电路设计
2.2.1 结构框图
系统设计包括硬件电路设计和控制软件设计。其硬件电路结构框图如图2所示,核心控制器采用ST公司的BlueNRG-1芯片,通过搭载滤波电容、晶振、蓝牙的滤波网络和板载蓝牙天线即可实现蓝牙通信系统的开发。
2.2.2 电路设计
基于BlueNRG-1芯片的蓝牙通信系统硬件电路设计需要的元器件相对较少,外围器件只需要电源滤波电容、晶振、滤波网络和天线即可以满足要求。
图2 蓝牙通信系统结构框图
硬件电路图如图3所示,硬件电路的设计包括电源滤波、晶振设计、天线滤波网络、天线设计4个部分。图3中,C1、C5、C15、C18组成电源滤波电路;XTAL1、C6、C7、L1以及XTAL2、C16、C17、L2组成系统晶振电路;C8~C13和L1~L3组成的天线滤波网络,此天线滤波网络也可以利用BALF-NRG-01D3芯片(ST公司专门开发的一款滤波器,体积小,抗干扰能力强)实现,能达到更强的抗干扰效果,并且电路设计更简单,但成本会提高。此外,可以直接在板子上做个RF射频连接插座外接天线,这样的好处是发射信号好,缺点是占用体积更大。如果体积受限,可以选择做一个简易的板载天
线,具体的设计如图4所示。
图3 系统硬件电路
图4 系统天线设计
2.3 软件设计
基于BlueNRG-1芯片的蓝牙通信系统软件设计的开发平台有两种:MDK5.0和IAR8.0[6-7]。这两种开发平台都是ST公司发布的,并且提供大量的例程。由于BlueNRG-1芯片面世不久,笔者建议利用MDK5.0平台开发。
图5描述了BlueNRG-1芯片初始化和软件设计的流程图。
图5 系统软件设计流程
① 初始化BlueNRG-1芯片。系统初始化和系统时钟初始化的语句描述为:
SystemInit();Clock_Init();
其中,SystemInit()设置芯片要用到的晶振频率、设备的中断、中断向量表地址等,Clock_Init()是初始化蓝牙和其它设备要用的时钟。
分为如下几步操作:
a. 设置重载寄存器;
b. 为系统时钟中断设置优先级;
c. 加载系统寄存器的数据值;
d. 使能系统时钟中断Enable SysTick IRQ。
② 初始化蓝牙堆栈。语句描述为:
BlueNRG_Stack_Initialization(&BlueNRG_Stack_Init_params);
语句功能是初始化蓝牙堆栈的Flash起始地址(一般默认是2 KB)、安全数据库(大小为1 KB)和服务器数据库大小(1 KB)、堆栈内部存储区参数、GATT堆栈数据库的RAM缓冲区的起始地址、分配给堆栈的总缓冲区大小、属性记录的最大数目、GATT服务的最大数量、属性值存储区域的大小。
③ 初始化蓝牙设备。语句描述为:
CHAT_DeviceInit();
具体操作为:首先,配置公共地址需要用到的语句aci_hal_write_config_data();其次,设置天线的发射功率,通常情况下,功率设置为-2 dBm;再次,进行GATT的初始化,aci_gatt_init()以及GAP的初始化aci_gap_init();然后,server的名称初始化;最后,加载服务程序Add_Chat_Service()。服务程序里面主要是要加载蓝牙的UUIDS,语句为aci_gatt_add_char()。通过以上的操作,即可完成整个蓝牙设备的初始化工作。
④ 编写蓝牙应用层程序。语句描述为:
app_tick;
主要功能就是当蓝牙设备发现有可连接标志位时,就发送心跳,用语句Make_Connection()实现。具体步骤为:首先,设置蓝牙的server物理地址;然后,设置local_name,通常20个字节以内;最后,启动蓝牙发送心跳数据,使用语句aci_gap_set_discoverable()实现。
⑤ 让程序进入大循环。语句描述为:
While(1) /*main loop*/{
/*BLE Stack Tick*/
BTLE_StackTick();
/*Application Tick*/
APP_Tick();
/*Power Save management*/
BlueNRG_Sleep(
SLEEPMODE_RUNNING,0,0);
}
其功能为反复去定时清理处理蓝牙堆栈,执行语句:BTLE_StackTick(),也叫做栈勾。
其中,应用程序描述为:
APP_Tick();
即应用程序标识检查,当蓝牙设备连接正常时,系统发送蓝牙数据,执行该应用。
3 测试结果分析
为验证本文提出的设计方法的可行性和正确性,对整个系统进行了实验。实验电路参数如下:C8=130 nF,C9=22 μF,C10=4.7 μF,C11=220 μF,C12=330 μF,L1=22 μH,L2=1 μH,L3=3.3 μH。实验过程中,系统电路采用日月UNMOON3.6 V锂电池供电,在电路中串接15 Ω电阻,使用示波器测量电阻两端电压,如图6(a)为发送两次广播的电压脉冲,图6(b)为电压脉冲展开图,图6(c)为传统蓝牙通信时广播电压脉冲图。
图6 试验波形图和电路实物图
由实验结果图6(a)可以看出,两次广播的脉冲间隔为2 s,脉冲幅值约为90 mV;由图6(b)可以得出,脉冲宽度约为2.5 ms,其脉冲幅值也约为90 mV,并且,启动时间很短,几乎可以忽略。通过计算,可知系统在2 s内发一次广播的平均电流为7.5 μA,而从图6(c)可以 看出,传统蓝牙通信时,蓝牙芯片发送广播之前有较长时间的启动时间,大约为13ms,并且发送广播后,系统电流不能迅速降低,大约耗时5ms。通过计算可知,传统工作方式下,蓝牙通信发送一次广播的平均电流为30μA左右。通过比较可知,本设计方案将功耗降低了4倍,延长了电池使用寿命。同时可以看出,本产品体积小,易于开发便携式蓝牙通信产品。
结 语
参考文献
[1] 田林青.基于蓝牙技术的推送系统的设计与实现[D].重庆:重庆理工大学,2017.
[2] 薛士然.物联网,蓝牙技术应用的新蓝海[J].单片机与嵌入式系统应用,2016(5):85-86.
[3] 胡志健,张中炜.基于蓝牙4.2的传感器通用接口研究与探索[J].微型机与应用,2016,35(17):97-100.
[4] 华海亮.基于WiFi和蓝牙的室内定位技术研究[D].锦州:辽宁工业大学,2016.
[5] 骆倩,施炯,李君.基于低功耗蓝牙的室内定位系统[J].物联网技术,2017,7(10):15-17.
[6] 黄嘉成,艾苏高,黄曲昆,等.基于stm32的蓝牙智能饮水机设计[J].装备制造技术,2017(9):121-124.
[7] 吴凡.基于脑电波的人机交互应用系统[J].信息与电脑:理论版,2017(20):99-101.