發布成功
贊賞金額:
支付金額:5元
支付方式:
贊賞成功!
你的贊賞是對作者最大的肯定~?
近年來,藍牙憑借自身低功率、易部署、低成本及高度靈活的優勢從傳統設備市場延伸到非傳統設備市場,大舉進軍智能穿戴、智能樓宇、智慧工業等新興領域。隨著藍牙應用市場的蓬勃發展,技術和應用得到源源不斷的創新,因此也更趨向于多樣性。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)