发布时间:2019-05-31 阅读量:4584 来源: Lucien 发布人: Jude
近年来,蓝牙凭借自身低功率、易部署、低成本及高度灵活的优势从传统设备市场延伸到非传统设备市场,大举进军智能穿戴、智能楼宇、智慧工业等新兴领域。随着蓝牙应用市场的蓬勃发展,技术和应用得到源源不断的创新,因此也更趋向于多样性。Dialog 、ST、Nordic等知名供应商都基于蓝牙核心技术为行业提供局域物联网解决方案,帮助解决物联网“最后几十米”的连接问题。
不过,在研发 BLE 产品时,很多产品经理和市场人员经常会遇到这些问题:主流 BLE 芯片的功耗到底哪家好?好在哪个具体的点?
我从上文提及的三家供应商中各挑出一款主流的BLE芯片产品来进行实际测试以及对比,详细分析在其各个方面的功耗情况。 这三款主流BLE芯片分别是:Dialog DA14585, ST BlueNRG-2 , Nordic 52832。
测试硬件和测试工具
被测硬件:
Dialog:DA145850ATDEVKTP + DA14585-01ATDB
修改测试的工程:
DA14585_SDK_6.0.10.511_0\DA14585_SDK\6.0.10.511\projects\target_apps\ble_examples\prox_reporter\
备注: Dialog 的测试只包含 Daughter(即小板)的功耗,不包含片外 Flash 的功耗,片外Flash 不加三极管处理大概会消耗 0.4uA。
被测硬件:
ST:STEVAL-IDB008V2
修改的测试工程:
STMicroelectronics\BlueNRG-1_2 DK 3.1.0\Firmware\BLE_Examples\BLE_Beacon\BlueNRG-2
STMicroelectronics\BlueNRG-1_2 DK 3.1.0\Firmware\BlueNRG1_Periph_Examples\Micro\Sleep_Test\BlueNRG-2
被测硬件:
Nordic: 52832 official EVB
修改的测试工程:
nRF5_SDK_15.0.0_a53641a\examples\ble_peripheral\ble_app_template\pca10040\s132\arm5_no_packs
测试电流工具:
KEITHLEY DMM7510
测试手机: Hornor 8 Light + Android APP Lightblue
3. 影响总体功耗的各项指标,各家资料标称参数:
Dialog DA14585 资料标称参数:
Supply current at VBAT3V
TX: 3.4 mA, RX: 3.7 mA (with ideal DCDC, 0dB)
ST BlueNRG 资料标称参数:
Average advertisement current consumption 15.34 μA (advertisement interval 1000 ms)
Average connection current consumption 7.059 μA (connection interval 1000ms)
TX: 8.3 mA, RX: 7.7 mA (with ideal DC-DC, -2dB) (除了 RF 外,还加上 CPU, retention RAM, Flash 激活等)
Nordic nRF 52832 资料标称参数:
在 DC-DC 3V 情况下:
0.3 μA – No RAM retention
1.2 uA – All peripherals in IDLE mode
1.6 uA – All peripherals IDLE mode (32 kHz + RTC)
20 nA per 4 KB - RAM retention
5.3 mA – TX at 0 dBm output power(备注:这部分只包含 Radio 的电流消耗)
5.4 mA – RX at 1 Mbps(备注:这部分只是 Radio 的电流消耗)
CPU efficiency 58 μA/MHz(主频可以到 64MHz)
从各家资料宣称看 Da14585 的 Radio(TX: 3.4 mA, RX: 3.7 mA)遥遥领先另外的两家。需要注意的一点是 BlueNRG-2 的 Radio 标称的是整机部分的,除去 CPU 等的 1.9mA 大概就是单单Radio 部分的(TX: 6.4 mA, RX: 5.8 mA)。nRF52832(TX :5.3 mA, RX:5.4mA)的在 RF 参数上这点上略胜一点 BlueNRG-2。
4. 实际测量对比分析:
各家由于本身硬件条件不一样,标称也不一样。为了对比,这里选用了一些工程项目实际常用的比较条件进行对比。
对比条件:0dB(ST 的 BlueNRG-2 由于没有 0dB 这个点的发射功率,选取一个接近的-2dB进行对比测试), +3.0V 电池供电,DC-DC 模式,统一使用带 32K 外部晶振,以带协议栈正常跑起来为准。
下面选择三个方面进行功耗比对。
1. 一直广播
2. 保持连接(payload=0)
3. 睡眠模式下
为什么选取这三个方面作为比较呢? 因为一直广播的测试可以分析 RF 开始发射时的功耗; 保持连接主要分析接收和部分发送数据的 RF 作用时系统的综合功耗; 睡眠模式下可以测试分析系统的待机能力。
广播模式下,各类芯片功耗比对:
测试条件:供电+3.3V,广播 31 个字节数据,不带响应的非可连接广播
各芯片广播时实时电流图
(x 轴:时间,单位为 1mS; Y 轴:电流,单位 1mA △X:广播一次芯片的唤醒时长; △Y: 开 RF 时整机的峰值电流; 左一 Da14585 中间:BlueNRG -2 右一: nRF52832)
在广播模式下,BlueNRG-2 和 nRF52832 的平均功耗相当。在 0.7S 和 1S 这两个广播间隔保持比较低的功耗。在市场上很多人会认为 Da14585 的功耗会比较低,因为 Da14585 是M0 内核+比较低的发射功耗。从表格数据,可以很明确的看出各家芯片在功耗这块的优缺点,以及后续可以改善的地方。Dialog 的 Da14585 的 Radio 这块确实做得不错,发射电流远远低其他两者。但是在从睡眠到唤醒到发广播,这里消耗了太多的时间。ST 的 BlueNRG-232发射电流虽然比较高,但是在从睡眠到到高速晶振稳定这点上,比其他两家要快很多,加上它的底电流也远小于另外两种芯片,所以能在这么高的发射电流中保持较好的功耗。这点是大多数人在评估功耗容易单纯看射频参数下结论,忽略了底电流和高速晶振启动稳定时间。Nordic 的 nRF 52832 在高速晶振起振稳定时间上发射功耗上都有优化的空间。
保持连接模式下,各家功耗对比:
测试条件与结果:Connection payload=0 TX/RX
Test Conditions | Da14585(uA) | BlueNRG-232(uA) | nRF52832(uA) |
30ms connection interval | 131.66
| 168.65
| 120.40
|
160ms connection interval (Typically for messages) | 30.554 | 33.042 | 25.179 |
1000ms connection interval | 11.385 | 7.0838 | 7.1806 |
从测试结果看,在 30ms 短连接间隔时,nRF52832 功耗最低,比较优秀。BlueNRG-232由于发射功率比较高,在很 30ms 这种很频繁发送数据时会低于另外两家。预估在 120 多毫秒左右连接间隔会和 Da14585 功耗相当。在预计差不多到 1S 的连接间隔时,功耗会和nRF52832 功耗想相当。当连接间隔越大,BlueNRG-232 的底电流作用越明显。
睡眠模式下, 各家功耗对比:
从测试结果分析,ST 的 BlueNRG-2 在这块上表现优秀。两三个 uA 其实差距比较大,因为休眠在大部分应用来说是占大部分的时间,这部分的功耗差别一点点,乘上待机时间,都会放大很多倍。Dialog 的 Da14585 在这块上可能会让很多人意外,为什么参数会是 3.9089uA的待机电流这么大的一个值。详细分析还是有理有迹可循的,Da14585 采用的是从片外Flash 中的加载 code 到 RAM 运行的机制,片外的 FLASH 和代码区占的内存也需要消耗了部分待机电流。
(备注:Da14585 典型应用代码是从片外 Flash 加载到 RAM 里面的,使用时保持了 2 个32K 的 RAM,故这里如果在保持时 RAM 占的功耗理论值是 2.8uA)。
DA14585 内存使用分配如下:
Da14585 最简单蓝牙的 Demo 工程也得使用两块 32K 的 SvsRAM.测试和理论值差别不大。BlueNRG-232(标称 0.9uA) 和 nRF52832(标称 2.0uA)的待机电流和规格标称的差别不大。顺便补充一个小点,测试到这三个芯片复位电流数据:BlueNRG-232 也是nA 级别的,nRF52832 有 470uA 电流,Da14585 有 3.2mA. 在有些应用场合,这个参数也
会比较关键。
综述实际应用场合,各家功耗对比:
前面分析了那么多,那功耗综合在实际应用到底怎么估算呢?为了简化,罗列了一个公式来评估综合功耗(weighting==权重 所处状态所占时间比例)。
Power Consumption = ADV current * weighting1 + CON current *weighting2 + Standby* weighting3.
100% = weighting1 + weighting2 + weighting3。
其中大部分应用 weighting3 往往占高达 99%以上的时间。如果是待机一直广播的应用,三家差别不大(其实连接比广播更省设备的点,一直广播有时未必会比一直保持连接好)。
举个小例子算一下大概量化一下数据。
P(DA14585) = ADV*W1 + CON(快)* W21 + CON(慢)*W22+ Sleep*W3
P(BlueNRG-232) = ADV*W1 + CON(快)* W21 + CON(慢)*W22+ Sleep*W3
P(nRF52832) = ADV*W1 + CON(快)* W21 + CON(慢)*W22+ Sleep*W3
100% = W1 + W21+ W22 + W3
使用典型值功耗估算公式:
P(DA14585) = 13.646*W1 + 30.554* W21 + 11.385*W22+ 3.9089*W3
P(BlueNRG-232) = 11.703*W1 + 33.042* W21 + 7.0838*W22+ 0.8524*W3
P(nRF52832) = 11.759*W1 + 25.179* W21 + 7.1806*W22+ 2.0729*W3
100% = W1 + W2 + W3
如果不同的应用,W1,W2,W3 这部分比例的时间会不同。
综述:Da14585 的 RF 性能比较好;BlueNRG-232 的高速晶振启动稳定时间快,睡眠待机电流低;nRF52832 各项性能比较综合。我个人认为对来说对于大多数的应用 W1 和 W22占的比例会比较大, BlueNRG-232 的综合功耗占优势,nRF52832 次之,DA14585 最后。
各家同类型产品功耗:
同一厂家,相近的芯片功耗很相似。Dialog 的 DA14585 是 DA14580 的升级版本,DA14580 的功耗可以参考 DA14585 的,实际上会比 DA14585 的功耗更差一点点,DA14580这款芯片在当时刚出来时功耗属于业界标杆,现在来说已经被很多同行新产品赶超了。ST 的BlueNRG-1 和 BlueNRG-2 的体系结构几乎没啥改动,功耗也一样。Nordic 的 nRF52810 属
于 nRF52832 的 cost down 版本,功耗也差别不大。
【编者按】传统点读笔具有待机时间不长;在互动性上只能简单的语音互动,难以给小朋友带来生动印象等特点。为了解决这个问题,在传统点读笔上改进,结合书本和大屏幕电视动画播放,采用目前流行的低功耗蓝牙技术。改良的点读笔可以让孩子通过参与各种针对性的游戏和活动,不断刺激触觉、视觉、听觉等感官来丰富他们的体验,增长他们的兴趣,开发他们的脑神经。点读笔小巧方便,非常便携,可随时、随处使用,它将声音和视频加于枯燥的文字之上,使图书内容更丰富,使阅读和学习更有趣,可充分实现寓教于乐。
如下图所示,整个系统运行设计这几个整体部分:带传感器的点读笔,扑了二维码的书本,智能电视。使用点读笔可以通过它的传感器识别到二维码的数据中的二维码信息,然后通过点读笔的蓝牙BLE芯片发送传感器读取到的数据到智能Android电视端,电视端可以和云端结合,播放云端或者本地的动画视频。
硬件上采用的主控芯片是Dialog公司的DA14580芯片。这是一款经典的BLE芯片,小米手环的第一代就是用这款芯片设计的。
DA14580特性如下:
(1) 蓝牙4.2协议
(2) 支持达到8个BLE连接
(3) 支持AES-128 bit 加密处理器
(4) 32 kB OTP ;50 kB Data/Retention SRAM; 84 kB ROM
(5) 集成在芯片内部的Buck/Boost DCDC 转换
(6) Fully integrated 2.4 GHz CMOS transceiver;0 dBm 发射输出功率
(7) 支持2 x UART 、SPI+、10-bit ADC
(8) 芯片最低待机功耗低于2uA
DA14580框图
点读笔原理图
如上图所示,点读笔硬件上主要有这几部分,主控DA14580,MPR7612读头传感器,充电部分和锂电池,以及片外的Flash(主要用于存放代码)。细心的读者可能注意到这里使用了两颗晶振,一颗是32K频率的,一颗是12MHz的。对于无线控制低功耗系统,其实一般会使用两路时钟,高速和低速的。低速用户睡眠时运行的时钟,高速用于倍频到2.4G信号,调制与解调需要发送的无线数据。为啥在睡眠时不直接使用高速呢?其实是因为采用高速时钟运行的话,功耗一般都很高。其实DA14580内部也有32K的低速晶振,如果使用芯片内部的32K低速晶振,功耗会略微高一点点,这里原理图上保留兼容使用内部32K或者外部32K晶振的设计。
识读头成品成像效果不仅与识读光头模组本身参数有关,还会受到识读塑胶头内部结构参数的影响。塑胶头影响成像的参数主要:塑胶材质是否透明.塑胶头出光孔的直径大小. 塑胶头内部弧度.
1. 塑胶材质:不能使用透明和半透明材质,如POM,透明ABS,PC,透明和半透明材质因为漏光,会让识读头光的强度下降,即使在外表面喷涂其他颜色油 漆,也难以掩盖,所以用白色ABS等为原材料, 观面可以喷涂其他颜色,内壁颜色必须为白色
2. 塑胶头内壁不能是光滑面,光滑面会产生镜面反射, 应在模具上晒细纹,让光产生漫反射
3. 塑胶头出光孔的直径和1026D一样,直径3.6MM, 且出口不能做直身位,应做成图A中的出光孔,以免成像时出现阴影
4. 焦距: 焦距是识读模组的出光口到塑胶顶面的距离,该距离必须保证为7.15MM,如图A
本软件主要架构图如下图,紫色区域为SDK本身自带模块,其他为需要实现的模块。主要实现了电量检测功能,电源控制,三色LED显示指示,以及传感器采集点读笔数据通过打包后发送到FIFO后,通过自定义服务发送到Android电视APP端等。
由于应用数据比较简单,这里协议就简单设计。协议采用不定长统一的数据格式。从Android电视APP到点读笔和从点读笔到Android电视采用此数据格式。
包头 | 长度 | 类型 | 数据 | 校验和 |
Header | Length | Type | Data | CheckSum |
[2] | [2] | [1] | [N] | [1] |
数据包基本数据格式
包头:此协议定义为0xaa 0xaa
长度(Length):描述为DATA区选项加命令加校验和的字节数。
类型(Type):标识不同的数据类型。
数据区(Data):对应不同的类型不一样,不固定长度。
校验和(CheckSum):校验长度+命令+数据字段
BLE通信相关涉及两个主要的服务,一个是OTA服务,一个是透传服务。OTA服务Dialog官方本身已经提供,剩下的应用需要透传数据的服务需要自定义。
Handle | UUID | Permission | Value | size |
1 | Server declare | R | Generic Attribute | |
2 | Char declare | R | char UUID + handle + permission | 2+2+1 |
3 | char value | I | Service changed | 4 |
4 | CCC | W/R | Client characteristic Configuration | 2 |
// 11 | ||||
5 | server declare | R | CHAT server | |
6 | char declare | R | char UUID + handle + permission | 16+2+1 |
7 | char value | N | TX | 20 |
8 | CCC | W/R | Client characteristic Configuration | 2 |
9 | char declare | R | char UUID + handle + permission | 16+2+1 |
a | char value | W/R | RX | 20 |
// 41+39 |
GATT属性表
传感器厂家并没有提供驱动代码,所以需要自己写相关的驱动代码,这里主要是使用SPI方式进行数据通信。
读寄存器:
读取寄存器值前需要将寄存器页设置,写入0xfd = 当前页号。例如:将当前寄存器页设置在第二页,需操作寄存器接口写入 0xfd = 0x02;向SPI写3字节序列(0x02,addr,dummy_data),其中0x02为读寄存器命令字,addr为读取的目标寄存器地址,dummy_data为任意数值,然后从SPI读取一个字节,获得的数值即为目标寄存器的值,持续输入时钟并且SPI_CS保持低电平读地址会自动加1,连着读取下一个寄存器的数值。
SPI读寄存器时序
写寄存器:
写寄存器值前需要将寄存器页设置,写入0xfd = 当前页号。例如:将当前寄存器页设置在第二页,需操作寄存器接口写入 0xfd = 0x02;直接向SPI写3字节序列(0x01,addr,value),其中0x01为写命令字,addr为写入的目标寄存器地址,value为要写入的寄存器值;
SPI写寄存器时序
下图为各种状态下蓝牙、LED指示灯、传感器等的工作状态。
工作状态逻辑图
模块工作时平均功耗:
传感器:1.4mA LED: 1.5mA
蓝牙: 广播状态:14uA 连接状态20uA 关闭状态3uA
电池电量: 1000mAh
Xxxxxxx 待增加如何优化和功耗估算公式
功耗主要消耗在传感器和LED,蓝牙部分其实使用占比较少部分。待机时,功耗可以低至3uA,理论待机可以待机好几个月。也可以持续使用几周。
作者:LucienKUANG, 多年BLE 和Mesh相关开发和支持经验,先后开发过,空气波压力治疗仪系统,共享单车锁,自拍杆,点读笔电子价签系统等等嵌入式软件产品的嵌入式软件开发。支持过ST,Dialog等大厂BLE相关产品的开发。在我爱方案网的个人店铺为“路恩”,有类似的项目开发需求者欢迎联系。
欢迎更多工程师或FAE来投稿,凡是未经发布的首发原创稿必有重金酬谢!投稿请联系快包微信管理员包工头(微信ID:kuaibao52)
在工业生产过程中,温度是需要测量和控制的重要参数之一。在温度测量中,热电偶的应用极为广泛,它具有结构简单、制造方便、测量范围广、精度高、惯性小和输出信号便于远传等许多优点。另外,由于热电偶是一种无源传感器,测量时不需外加电源,使用十分方便,所以常被用作测量炉子、管道内的气体或液体的温度及固体的表面温度。
日前,拓尔微推出一颗适用于按摩椅、扫地机、吸尘器等大电流智能市场应用的直流有刷马达驱动,这可马达驱动峰值电流高达10A,功耗小,满足大部分电机驱动的所有要求。除此之外,拓尔微还有全桥驱动、栅极驱动、低边驱动、DC/DC、音频功放、充电协议、霍尔开关等系列产品可供选型,应用在按摩椅多个关键部件,为客户提供更全面的产品选型支持和一站式服务。
桥式电路基于基尔霍夫定律和欧姆定律的原理,通过电流和电压的比较来确定未知元件的值
氮化镓功率半导体器件的先锋企业 Transphorm说明了如何利用其Normally-Off D-Mode平台设计充分发挥氮化镓晶体管的优势,而E-Mode设计却必须在性能上做出妥协
本书通俗易懂,化繁为简,排版科学,用高效的学习方法让你快速入门Python,适合编程小白。