計(jì)實(shí)戰(zhàn):從硬件選型到產(chǎn)線測(cè)試的完整指南)
先聊個(gè)實(shí)際場(chǎng)景很多人第一次接觸“Low-Power Micromodule”這個(gè)概念都是在做電池供電的物聯(lián)網(wǎng)終端、可穿戴設(shè)備、或者某個(gè)需要塞進(jìn)狹小空間里的數(shù)據(jù)采集節(jié)點(diǎn)。通常的困境是這樣主控選了低功耗MCU無(wú)線芯片也標(biāo)稱“超低功耗”但整機(jī)一測(cè)待機(jī)電流還是幾百微安電池?fù)尾贿^(guò)兩個(gè)月。問(wèn)題往往不在某一顆芯片而在“模塊”這個(gè)層面——你把MCU、傳感器、射頻前端、電源管理、天線匹配全堆在一起時(shí)系統(tǒng)級(jí)的功耗設(shè)計(jì)才真正開始。這篇就圍繞我實(shí)際做過(guò)的低功耗Micromodule項(xiàng)目把從需求拆解、芯片選型、電路設(shè)計(jì)、軟件策略到產(chǎn)線測(cè)試的完整鏈路講清楚。適合硬件工程師、嵌入式軟件工程師、以及所有準(zhǔn)備做電池供電小體積設(shè)備的團(tuán)隊(duì)做參考內(nèi)容偏實(shí)操不會(huì)有那種“配個(gè)開發(fā)板點(diǎn)個(gè)燈”的敷衍感。1. 一開始就想清楚這個(gè)模塊到底要解決什么問(wèn)題1.1 低功耗不是省電而是“省對(duì)地方”做低功耗Micromodule之前最忌諱的就是一上來(lái)就翻芯片數(shù)據(jù)手冊(cè)比誰(shuí)家的Sleep Current更低。低功耗真正要算的是一筆“能量賬”系統(tǒng)在工作、休眠、通信、傳感采集這幾個(gè)狀態(tài)里分別待多久、吃多少電流最終平均電流決定了電池能用多久。所以第一步不是選芯片而是把應(yīng)用場(chǎng)景里設(shè)備的“行為時(shí)間線”列出來(lái)。舉個(gè)例子一個(gè)環(huán)境監(jiān)測(cè)節(jié)點(diǎn)如果每10分鐘喚醒一次每次喚醒采集傳感器數(shù)據(jù)并發(fā)送一次無(wú)線報(bào)文整個(gè)過(guò)程耗時(shí)50毫秒其余時(shí)間都在休眠那么決定電池壽命的其實(shí)不是工作電流而是那個(gè)“看似微不足道”的休眠電流。很多工程師把注意力放在Wake Up時(shí)間上忽略了深度睡眠電流結(jié)果系統(tǒng)休眠時(shí)漏電整機(jī)功耗直接被拉垮。我在定義模塊需求時(shí)習(xí)慣先把這些參數(shù)定下來(lái)供電方式紐扣電池、兩節(jié)AAA、還是鋰亞電池工作周期每小時(shí)喚醒幾次、每次喚醒多長(zhǎng)時(shí)間通信方式BLE、LoRa、Sub-1G、還是Wi-Fi傳感器數(shù)量與采樣時(shí)間目標(biāo)續(xù)航3個(gè)月、半年、還是一年起步一張表把這些參數(shù)列清楚后面所有設(shè)計(jì)決策都會(huì)變得非常直接選型、電源樹設(shè)計(jì)、軟件狀態(tài)機(jī)劃分甚至PCB布局的取舍都圍繞這張表展開。1.2 功耗目標(biāo)如何推算電池壽命反推電流預(yù)算這里用一個(gè)實(shí)際計(jì)算例子來(lái)展示怎么反推功耗需求省得大家只會(huì)看芯片標(biāo)稱值。假設(shè)我們做的是一個(gè)溫濕度采集Micromodule電池CR2032紐扣電池容量約220mAh自放電每年約1%2%工作周期每10分鐘喚醒一次每次喚醒后采集溫濕度并發(fā)送一次BLE廣播喚醒時(shí)長(zhǎng)為30ms電流峰值約6mA深度睡眠電流目標(biāo)做到2μA以下那么一天內(nèi)的工作時(shí)間24小時(shí) ÷ 10分鐘 144次喚醒/天每次30ms合計(jì)約4.32秒/天。工作狀態(tài)下消耗的電量6mA × 4.32s ÷ 86400s ≈ 0.0003mAh/天。休眠狀態(tài)下消耗的電量0.002mA × 24小時(shí) 0.048mAh/天。再加上傳感器如果保持常供電可能還有額外漏電假設(shè)傳感器在休眠時(shí)也被斷電那么理論上一天消耗約0.048mAh左右。用220mAh ÷ 0.048mAh每天理論上可以得到約4583天約12年。但實(shí)際要考慮電池自放電、溫度影響、電容漏電、PCB表面漏電通常要打個(gè)對(duì)折甚至三折。即便如此只要把休眠電流控制在2μA一顆CR2032撐兩年以上是可行的。這個(gè)“從目標(biāo)年限反推平均電流”的方法適用于所有低功耗模塊設(shè)計(jì)。每次硬件改版、軟件調(diào)優(yōu)都拿著最終目標(biāo)平均電流去對(duì)比就能知道當(dāng)前方案離目標(biāo)還有多遠(yuǎn)。1.3 模塊邊界與形態(tài)選擇“Micromodule”這個(gè)名字里最關(guān)鍵的是“Micro”意味著尺寸和集成度是核心指標(biāo)。但小尺寸和低功耗之間有時(shí)會(huì)有沖突因?yàn)樾◇w積意味著PCB層數(shù)受限、天線凈空區(qū)難保證、電源去耦電容位置難擺。我在項(xiàng)目中把模塊邊界定義為“包括MCU無(wú)線收發(fā)器匹配電路電源管理必要傳感器接口”不集成電池和天線本體電池通過(guò)彈片或連接器外接天線通過(guò)匹配網(wǎng)絡(luò)預(yù)留ipex或PCB天線接口。這樣做的好處有兩個(gè)一是模塊可以適應(yīng)不同外殼和電池形態(tài)二是天線可以按最終產(chǎn)品結(jié)構(gòu)單獨(dú)調(diào)避免模塊天線被金屬外殼壓死導(dǎo)致性能崩掉。模塊的物理尺寸定在12mm × 12mm左右雙面板板厚0.8mm。這個(gè)尺寸既能放下一顆QFN封裝的MCU無(wú)線SoC也能為天線匹配區(qū)域留出足夠空間。再小當(dāng)然可以但制造成本和調(diào)試難度會(huì)急劇上升對(duì)于第一批樣品來(lái)說(shuō)沒(méi)必要。2. 硬件層面低功耗不是一顆芯片的事是系統(tǒng)設(shè)計(jì)的事2.1 核心器件的選型邏輯低功耗Micromodule的核心器件通常是SoC也就是把MCU和射頻收發(fā)器集成在一顆芯片里。選型的核心三項(xiàng)分別是休眠電流、喚醒時(shí)間、射頻發(fā)射/接收電流。實(shí)測(cè)中同樣標(biāo)稱“低功耗”的SoC不同廠商的深度睡眠電流可能差出好幾倍有些能做到1μA以下有些標(biāo)稱值很低但實(shí)際需要額外外部電路配合才能進(jìn)入最低功耗狀態(tài)。我在選型時(shí)除了數(shù)據(jù)手冊(cè)還會(huì)去翻勘誤表和應(yīng)用筆記重點(diǎn)看芯片的最低功耗模式是否要求某個(gè)引腳保持特定電平、是否需要關(guān)閉內(nèi)部LDO、是否要額外切斷傳感器供電等。這里有幾個(gè)具體建議盡量選帶DC-DC模式的SoC射頻發(fā)射時(shí)用DC-DC供電比LDO模式能省30%50%的電流。注意MCU的GPIO漏電尤其不要忽略未使用引腳的配置懸空輸入引腳在休眠時(shí)可能通過(guò)內(nèi)部保護(hù)二極管漏電。無(wú)線部分優(yōu)先選支持Coded PHY或者長(zhǎng)距離模式的SoC雖然速率低但在信號(hào)覆蓋范圍和功耗之間能獲得更好平衡。2.2 電源樹設(shè)計(jì)靜態(tài)電流是惡魔低功耗模塊最容易翻車的地方在電源樹。很多人把USB或者穩(wěn)壓源的輸出直接掛到SoC的電源引腳上然后發(fā)現(xiàn)休眠電流怎么都降不下來(lái)檢查半天才發(fā)現(xiàn)是LDO的靜態(tài)電流在作祟。LDO的靜態(tài)電流Quiescent Current是“輸入電源到地”的固定消耗跟負(fù)載大小無(wú)關(guān)。普通LDO的靜態(tài)電流可能在幾十微安甚至更高這對(duì)低功耗設(shè)備是致命打擊。所以我在電源樹設(shè)計(jì)時(shí)定了一個(gè)規(guī)矩系統(tǒng)待機(jī)時(shí)所有線性穩(wěn)壓器必須能夠關(guān)斷或者靜態(tài)電流控制在1μA以下。實(shí)際方案是電池輸入端放一顆超低靜態(tài)電流的LDO靜態(tài)電流約300nA1μA輸出給SoC的VDD。外圍傳感器、LED、外部接口的電源全部由SoC的GPIO控制MOS管或負(fù)載開關(guān)單獨(dú)管理。在深度睡眠時(shí)SoC自己進(jìn)低功耗模式同時(shí)把所有外部負(fù)載的供電全部切斷這樣整機(jī)待機(jī)電流基本上就等于SoC的深度睡眠電流加上LDO的靜態(tài)電流。這里要專門提一下電平轉(zhuǎn)換和上拉電阻。很多工程師忽略GPIO上拉電阻在休眠時(shí)同樣會(huì)耗電一個(gè)10kΩ上拉電阻在3.3V電壓下就是330μA的電流這比很多SoC的深度睡眠電流大兩個(gè)數(shù)量級(jí)。所以凡是外部接口能不加上拉就不加必須加的也要通過(guò)MOS管或三極管在休眠時(shí)斷開。2.3 時(shí)鐘、去耦與其他容易被忽略的細(xì)節(jié)低功耗系統(tǒng)對(duì)時(shí)鐘的選擇非常敏感。SoC內(nèi)部RC振蕩器喚醒快但精度低外部32.768kHz晶振精度高但會(huì)多消耗幾百納安到幾微安的電流。在深睡眠要保持RTC走時(shí)的場(chǎng)景下外部晶振幾乎是必須的。我選擇的方案是SoC深度睡眠時(shí)關(guān)閉內(nèi)部高速RC和RF部分僅保留外部32.768kHz晶振驅(qū)動(dòng)的RTC。這樣待機(jī)電流能控制在2μA以內(nèi)而RTC的精度也能保證在20ppm以內(nèi)不會(huì)出現(xiàn)一天誤差好幾秒的情況。去耦電容的設(shè)計(jì)也有講究。傳統(tǒng)慣性思維是每個(gè)電源引腳放0.1μF再加1μF或10μF的體電容但低功耗設(shè)備要權(quán)衡電容漏電。陶瓷電容的漏電通常可以忽略但電解電容、鉭電容的漏電在休眠時(shí)可能是微安級(jí)別的。所以低功耗設(shè)計(jì)盡量全部使用陶瓷電容并且不要盲目增大電容值尤其是直接掛在電池端的電容因?yàn)槿萘吭酱舐╇婏L(fēng)險(xiǎn)越高。PCB的清洗和表面處理也會(huì)影響休眠電流這個(gè)很多人不知道。如果PCB使用了助焊劑沒(méi)有清洗干凈在潮濕環(huán)境下板面可能形成微弱的導(dǎo)電通道導(dǎo)致休眠電流從幾微安漂到幾十微安。低功耗產(chǎn)品在量產(chǎn)時(shí)最好要求PCBA工廠做離子清洗尤其是模塊上用了QFN封裝、底部散熱焊盤容易藏助焊劑殘留的。3. 軟件層面把每一微安的預(yù)算都變成可管理的行為3.1 工作狀態(tài)機(jī)的設(shè)計(jì)與功耗模式劃分硬件做得再好軟件狀態(tài)機(jī)設(shè)計(jì)不合理功耗一樣會(huì)崩。低功耗系統(tǒng)的軟件架構(gòu)應(yīng)該圍繞“狀態(tài)-事件”模型來(lái)組織明確每個(gè)狀態(tài)下的外設(shè)狀態(tài)和時(shí)鐘狀態(tài)。我常用的狀態(tài)劃分方式深度睡眠態(tài)SoC進(jìn)入最低功耗模式僅RTC運(yùn)行所有外部傳感器電源關(guān)閉GPIO全部配置成高阻或固定電平等待RTC喚醒或外部中斷喚醒。喚醒處理態(tài)RTC喚醒后啟動(dòng)高速時(shí)鐘初始化必要的GPIO和外設(shè)但還不打開傳感器電源。采集態(tài)打開傳感器電源等待傳感器穩(wěn)定時(shí)間通常幾十毫秒讀取數(shù)據(jù)然后立刻關(guān)閉傳感器電源。發(fā)送態(tài)打開射頻部分?jǐn)?shù)據(jù)打包、發(fā)送、等待確認(rèn)完成后立刻關(guān)閉射頻部分。回退態(tài)把GPIO恢復(fù)到休眠前狀態(tài)關(guān)閉外設(shè)時(shí)鐘進(jìn)入深度睡眠。這套狀態(tài)機(jī)的核心原則是“能不上電就不上電能不多跑一條指令絕不多跑一條”。我常看到的問(wèn)題是在喚醒處理態(tài)里順手把I2C、SPI、UART全部初始化一遍但此刻根本用不到白白增加了喚醒期間的工作電流。3.2 外設(shè)管理策略不用的模塊必須斷電低功耗系統(tǒng)里有個(gè)經(jīng)典錯(cuò)誤——傳感器在休眠時(shí)不關(guān)電源只依靠傳感器自身的sleep模式。有些傳感器的sleep模式確實(shí)能做到很低功耗比如幾微安但有些傳感器的sleep模式標(biāo)稱“低功耗”實(shí)際上還有幾百微安。更關(guān)鍵的是每個(gè)傳感器漏一點(diǎn)三四個(gè)傳感器加起來(lái)整機(jī)休眠電流就失控了。我的做法是傳感器電源統(tǒng)一由SoC的GPIO控制一個(gè)P-MOS管或者負(fù)載開關(guān)軟件在每次采集完成后主動(dòng)關(guān)斷電源而不是依賴傳感器內(nèi)部的睡眠命令。這樣有三個(gè)好處一是徹底切斷傳感器自身漏電二是傳感器在重新上電后強(qiáng)制進(jìn)入已知狀態(tài)避免狀態(tài)寄存器的歷史值導(dǎo)致誤動(dòng)作三是排查問(wèn)題時(shí)更簡(jiǎn)單每個(gè)外設(shè)都能獨(dú)立斷電快速定位漏電源頭。還有一類容易被忽略的外設(shè)是電源指示燈和調(diào)試串口。調(diào)試串口在正式版本里必須默認(rèn)關(guān)閉或者至少不能在休眠時(shí)給UART外設(shè)和電平轉(zhuǎn)換芯片供電。LED指示燈如果在狀態(tài)機(jī)里被點(diǎn)亮后沒(méi)有及時(shí)關(guān)閉一樣會(huì)多耗幾百微安甚至毫安級(jí)電流。我在代碼里專門做了一個(gè)“功耗審計(jì)”函數(shù)在進(jìn)入深度睡眠之前檢查所有GPIO狀態(tài)列出所有被設(shè)置為輸出高電平的引腳方便快速發(fā)現(xiàn)漏電點(diǎn)。3.3 數(shù)據(jù)發(fā)送策略與功耗權(quán)衡無(wú)線發(fā)送是整機(jī)功耗的大頭但“發(fā)送”本身的時(shí)間和策略是可以優(yōu)化的。以BLE為例一次廣播包的發(fā)送時(shí)間通常在1ms10ms之間但為了等接收窗口、重傳、確認(rèn)可能需要打開接收機(jī)更長(zhǎng)時(shí)間。接收電流通常比發(fā)射電流低一些但接收時(shí)間往往比發(fā)射時(shí)間長(zhǎng)累計(jì)下來(lái)可能在功耗中占比很大。有三種實(shí)測(cè)有效的降功耗發(fā)送策略合并發(fā)送采集的數(shù)據(jù)先緩存在本地?cái)€到一定數(shù)量再一次性發(fā)送。這樣能減少射頻啟動(dòng)次數(shù)因?yàn)樯漕l從關(guān)閉到穩(wěn)定發(fā)射需要時(shí)間減少啟動(dòng)次數(shù)比減少單個(gè)包發(fā)送時(shí)間更有效。動(dòng)態(tài)調(diào)整發(fā)送功率根據(jù)接收端的RSSI反饋動(dòng)態(tài)調(diào)整發(fā)射功率。在近距離場(chǎng)景把發(fā)射功率從8dBm降到0dBm電流能省30%以上覆蓋范圍影響不大。選擇合適的數(shù)據(jù)速率并非速率越高越省電。高速率能減少發(fā)射時(shí)間但接收機(jī)的靈敏度會(huì)下降可能需要更長(zhǎng)的前導(dǎo)碼或更復(fù)雜的均衡器綜合下來(lái)不一定省。需要根據(jù)鏈路預(yù)算做實(shí)測(cè)對(duì)比。4. 射頻與天線信號(hào)鏈路里的低功耗玄學(xué)4.1 射頻功耗與鏈路預(yù)算低功耗模塊的信號(hào)鏈路直接決定射頻功耗能不能降下來(lái)。很多工程師以為降低發(fā)射功率就能省電但如果接收端收不到信號(hào)而反復(fù)重傳總功耗反而會(huì)升高。功耗優(yōu)化目標(biāo)應(yīng)該是“以最低的發(fā)射功率達(dá)到要求的通信成功率”而不是單純把發(fā)射功率調(diào)低。鏈路預(yù)算的基礎(chǔ)計(jì)算方式是發(fā)射功率 發(fā)射天線增益 - 路徑損耗 接收天線增益 ≥ 接收靈敏度。路徑損耗用自由空間傳播模型估算頻率越高損耗越大。以2.4GHz為例10米距離的自由空間路徑損耗約60dB如果接收靈敏度是-96dBm那么發(fā)射端的等效全向輻射功率EIRP需要至少-36dBm。考慮到實(shí)際環(huán)境下穿墻、多徑衰落通常還要留1020dB的余量所以設(shè)計(jì)上0dBm發(fā)射功率是2.4GHz短距通信的常見(jiàn)默認(rèn)值。在實(shí)際項(xiàng)目中我發(fā)現(xiàn)很多模塊的問(wèn)題不在發(fā)射功率而在天線匹配網(wǎng)絡(luò)。如果天線匹配沒(méi)調(diào)好駐波比可能高達(dá)3:1甚至更高意味著30%以上的功率被反射回來(lái)模塊實(shí)際輻射出去的功率只有標(biāo)稱值的一半。這種情況下發(fā)射功率再高也無(wú)濟(jì)于事。4.2 天線設(shè)計(jì)與阻抗匹配的實(shí)踐建議Micromodule體積小天線凈空區(qū)往往受限所以我在模塊上預(yù)留了兩套天線方案PCB板載天線和外部天線座。PCB板載天線的設(shè)計(jì)有幾個(gè)心法天線區(qū)域在PCB設(shè)計(jì)階段就要單獨(dú)預(yù)留凈空區(qū)底層和頂層都不能鋪銅。凈空區(qū)的尺寸要根據(jù)天線波長(zhǎng)計(jì)算2.4GHz頻段的λ/4大約30mm實(shí)際PCB天線設(shè)計(jì)可以縮短但至少保證10mm以上的長(zhǎng)度。天線到地平面的間距要足夠避免天線近場(chǎng)耦合到地平面。這個(gè)間距在2.4GHz下至少45mm。天線匹配電路要預(yù)留π型或者T型網(wǎng)絡(luò)的位置方便樣機(jī)調(diào)試時(shí)用網(wǎng)絡(luò)分析儀調(diào)駐波比。外部天線座比如ipex的好處是天線可以遠(yuǎn)離模塊不受外殼結(jié)構(gòu)限制。但要注意的是ipex座子和同軸線本身會(huì)有損耗2.4GHz下同軸線每10cm大約損耗0.51dB如果天線增益本來(lái)就不高這個(gè)損耗會(huì)讓鏈路預(yù)算更加緊張。在空間允許的情況下優(yōu)先選PCB板載天線既省成本又少一個(gè)損耗環(huán)節(jié)。4.3 靈敏度、速率與功耗的三角關(guān)系射頻部分的最終功耗是由通信距離、數(shù)據(jù)速率、誤碼率三方博弈的結(jié)果。速率越高單位時(shí)間內(nèi)能傳的數(shù)據(jù)越多發(fā)射時(shí)間越短但靈敏度會(huì)變差速率越低靈敏度越好但發(fā)射時(shí)間變長(zhǎng)抗干擾能力也可能受影響。在實(shí)際調(diào)優(yōu)中我通常先根據(jù)目標(biāo)通信距離確定靈敏度需求再反推可以接受的最大數(shù)據(jù)速率。舉個(gè)例子在室外空曠場(chǎng)景下如果需要100米通信距離2.4GHz下靈敏度需求大約在-100dBm左右這時(shí)BLE的1Mbps模式可能勉強(qiáng)夠用但如果要穿墻就要考慮降到125kbps的Coded PHY模式雖然速率低了但靈敏度能提升接近10dB鏈路余量會(huì)更充足。功耗方面有一個(gè)很容易踩的坑不要為了數(shù)據(jù)速率去修改射頻參數(shù)破壞了協(xié)議棧默認(rèn)的調(diào)制方式。不同無(wú)線協(xié)議對(duì)頻率偏差、調(diào)制指數(shù)的容忍度不一樣手工調(diào)參數(shù)很容易讓接收端誤碼率暴漲反而增加重傳次數(shù)功耗不降反升。大部分場(chǎng)景保持協(xié)議棧默認(rèn)射頻參數(shù)只調(diào)整發(fā)射功率和發(fā)送策略就能達(dá)到預(yù)期功耗目標(biāo)。5. 測(cè)試與量產(chǎn)的坑紙上算得省實(shí)際跑得省才算數(shù)5.1 功耗測(cè)試的儀器與測(cè)量方法低功耗模塊的測(cè)試方法和技術(shù)文檔里寫的“測(cè)一下電流”完全是兩碼事。傳統(tǒng)萬(wàn)用表測(cè)電流的精度和采樣率都不夠因?yàn)榈凸南到y(tǒng)的電流變化范圍很大深度睡眠時(shí)微安級(jí)射頻發(fā)射時(shí)毫安甚至幾十毫安級(jí)萬(wàn)用表的積分測(cè)量會(huì)把瞬時(shí)峰值給平均掉無(wú)法反映真實(shí)的功耗分布。我用的是兩種測(cè)量方式配合長(zhǎng)時(shí)間平均電流測(cè)量用高精度電流表或者萬(wàn)用表的μA檔串在電池和模塊之間記錄穩(wěn)定工作狀態(tài)下的平均電流。這種方式適合驗(yàn)證“整機(jī)待機(jī)電流是否在預(yù)算范圍內(nèi)”。實(shí)時(shí)波形測(cè)量用示波器加電流探頭或者用專用的功耗分析儀觀察每個(gè)工作狀態(tài)轉(zhuǎn)換瞬間的電流波形。這種方式能精確看到喚醒瞬間的電流尖峰、射頻發(fā)送時(shí)長(zhǎng)、每個(gè)外設(shè)開關(guān)時(shí)段的電流變化是定位功耗異常的關(guān)鍵工具。對(duì)于沒(méi)有高端設(shè)備的團(tuán)隊(duì)也可以用“電阻采樣示波器”的土辦法在電池回路串聯(lián)一個(gè)10Ω精密采樣電阻用示波器測(cè)電阻兩端電壓通過(guò)歐姆定律換算電流。這個(gè)方法雖然精度不如專用儀器但能捕捉到毫秒級(jí)的電流波形足夠排查大多數(shù)問(wèn)題。5.2 量產(chǎn)一致性與校準(zhǔn)點(diǎn)實(shí)驗(yàn)室樣機(jī)功耗達(dá)標(biāo)不等于量產(chǎn)模塊功耗都達(dá)標(biāo)。低功耗模塊的量產(chǎn)一致性考驗(yàn)的是元器件的離散性和生產(chǎn)過(guò)程的穩(wěn)定性。最容易出現(xiàn)離散的環(huán)節(jié)是晶振、LDO靜態(tài)電流、傳感器個(gè)體差異。晶振的起振電流和精度是主要變量不同批次的32.768kHz晶振在低溫下起振電流可能有明顯差異。量產(chǎn)測(cè)試時(shí)不能只測(cè)功能還要測(cè)每一顆模塊在深度睡眠狀態(tài)下的待機(jī)電流設(shè)定一個(gè)上下限區(qū)間比如1μA5μA不在區(qū)間內(nèi)的直接判退。LDO靜態(tài)電流的離散性同樣值得關(guān)注。同一型號(hào)的LDO靜態(tài)電流在規(guī)格書里可能標(biāo)稱0.7μA典型值但實(shí)際在0.3μA3μA之間分布。如果量產(chǎn)目標(biāo)整機(jī)休眠電流是5μA而LDO和SoC的電流離散一疊加就會(huì)有相當(dāng)比例的模塊超出設(shè)計(jì)上限。所以在BOM選型階段就要選擇靜態(tài)電流規(guī)格離散范圍小的LDO或者在產(chǎn)線測(cè)試中篩選。射頻參數(shù)的校準(zhǔn)也是量產(chǎn)的關(guān)鍵。每一顆SoC的射頻輸出功率和頻率偏移會(huì)有差異需要在產(chǎn)線做發(fā)射功率校準(zhǔn)和頻率校準(zhǔn)通過(guò)寫入校準(zhǔn)值到芯片內(nèi)部的OTP或者Flash。我還遇到過(guò)一種情況某批次模塊發(fā)射功率正常但接收靈敏度普遍比樣機(jī)差23dB排查發(fā)現(xiàn)是天線的焊盤在回流焊時(shí)錫膏量不一致導(dǎo)致天線饋電點(diǎn)阻抗變化。這個(gè)問(wèn)題最終通過(guò)調(diào)整鋼網(wǎng)開孔和貼片工藝參數(shù)解決屬于典型的產(chǎn)線工藝問(wèn)題。5.3 一些真實(shí)的坑踩過(guò)的坑寫出來(lái)能幫大家省下至少兩次改板的時(shí)間。第一個(gè)坑SoC的深度睡眠模式文檔寫得不清晰。某款SoC數(shù)據(jù)手冊(cè)上寫Deep Sleep 0.8μA實(shí)測(cè)發(fā)現(xiàn)只有把某個(gè)GPIO配置為模擬輸入、并斷開內(nèi)部上拉才能達(dá)到。如果不仔細(xì)看參考手冊(cè)的老老實(shí)實(shí)按默認(rèn)配置整機(jī)待機(jī)電流會(huì)多出3μA。這個(gè)問(wèn)題的排查過(guò)程很折磨人后來(lái)是在每個(gè)GPIO上做二分法配置試驗(yàn)才定位到。第二個(gè)坑大電容在低功耗電路里的“隱性漏電”。項(xiàng)目早期為了降低射頻發(fā)射時(shí)的電壓跌落在電池輸入端放了一顆100μF的鉭電容結(jié)果休眠電流怎么都?jí)翰坏?0μA以下。換了陶瓷電容后問(wèn)題立刻消失。這是很多人都忽略的鉭電容在低壓差下漏電可能在微安到幾十微安級(jí)別而且溫度越高漏電越大。低功耗系統(tǒng)里優(yōu)先選X5R/X7R陶瓷電容除非有明確的高容量需求。第三個(gè)坑PCB設(shè)計(jì)時(shí)給天線留的凈空區(qū)被量產(chǎn)外殼擋住。樣機(jī)測(cè)試時(shí)用的是開放式測(cè)試臺(tái)天線性能很好但裝進(jìn)量產(chǎn)外殼后實(shí)際通信距離直接砍半。后來(lái)發(fā)現(xiàn)外殼內(nèi)部有一圈金屬卡扣正好壓在天線凈空區(qū)上方。這種情況很難通過(guò)模塊本身規(guī)避只能提前跟結(jié)構(gòu)工程師溝通讓外殼在天線區(qū)域留出開窗或者改用非金屬卡扣。6. 調(diào)試工具與環(huán)境準(zhǔn)備硬件和軟件的設(shè)計(jì)都完成之后調(diào)試工具的選擇會(huì)直接影響你排查問(wèn)題的效率。低功耗系統(tǒng)的調(diào)試環(huán)境跟普通MCU項(xiàng)目不太一樣有幾個(gè)工具我認(rèn)為是必備的功耗分析儀或高精度電流表支持電流波形記錄的示波器電流探頭射頻測(cè)試用的頻譜儀或至少帶RSSI顯示的抓包工具可以監(jiān)控串口日志的低功耗藍(lán)牙/USB調(diào)試工具一個(gè)能設(shè)置不同電壓值的可編程直流電源串口日志在低功耗調(diào)試中是個(gè)陷阱很多人習(xí)慣了在嵌入式開發(fā)中隨時(shí)打日志但串口打印本身功耗很高如果一個(gè)低功耗Demo代碼里充滿了調(diào)試打印實(shí)測(cè)電流會(huì)非常難看。建議在用日志調(diào)試時(shí)給串口模塊單獨(dú)供電或者直接通過(guò)藍(lán)牙空中日志的方式輸出避免調(diào)試工具本身影響功耗測(cè)量。另一個(gè)調(diào)試技巧是使用外部中斷喚醒做手動(dòng)觸發(fā)測(cè)試。有些場(chǎng)景下需要反復(fù)測(cè)試采集發(fā)送的流程用RTC喚醒的話會(huì)因?yàn)榈却龝r(shí)間太長(zhǎng)而拖慢調(diào)試。我通常預(yù)留一個(gè)測(cè)試點(diǎn)用一根杜邦線接地來(lái)觸發(fā)外部中斷這樣每次按一下就能快速進(jìn)入完整的工作周期配合波形分析儀可以非常高效地驗(yàn)證每個(gè)狀態(tài)切換點(diǎn)。7. 擴(kuò)展思路從模塊到產(chǎn)品還要補(bǔ)齊什么一個(gè)低功耗Micromodule做出來(lái)距離一個(gè)可量產(chǎn)的產(chǎn)品還有一段路要走。模塊解決了核心的低功耗無(wú)線通信問(wèn)題但產(chǎn)品層面還缺電池管理、充電電路、結(jié)構(gòu)設(shè)計(jì)、固件升級(jí)通道、生產(chǎn)測(cè)試夾具、合規(guī)認(rèn)證等。在低功耗產(chǎn)品里電池管理尤其重要。如果用的是可充電電池充電管理芯片自身的靜態(tài)電流又是一個(gè)新的功耗來(lái)源。很多充電芯片在充電完成之后如果不切斷輸入會(huì)持續(xù)消耗幾十微安。低功耗產(chǎn)品需要選擇支持運(yùn)輸模式或待機(jī)模式的充電管理方案。固件升級(jí)也是容易忽略的點(diǎn)。BLE設(shè)備一般通過(guò)Over-The-Air升級(jí)但OTA升級(jí)需要引導(dǎo)程序在啟動(dòng)時(shí)監(jiān)聽(tīng)廣播這會(huì)提高模塊在正常使用時(shí)的功耗。常見(jiàn)做法是設(shè)備默認(rèn)進(jìn)入深度睡眠只有通過(guò)特定按鍵組合進(jìn)入升級(jí)模式才開啟廣播監(jiān)聽(tīng)這樣既能保留OTA能力又不犧牲日常功耗。合規(guī)認(rèn)證方面不同目標(biāo)市場(chǎng)對(duì)無(wú)線設(shè)備的射頻指標(biāo)和電磁兼容要求不一樣。小體積模塊在EMC測(cè)試時(shí)容易出現(xiàn)輻射超標(biāo)特別是在天線附近有高速數(shù)字信號(hào)線走線的情況下。建議在模塊設(shè)計(jì)階段就留出屏蔽罩的焊盤位置即使第一版不焊接屏蔽罩也能在測(cè)試不合格時(shí)快速補(bǔ)上硬件方案。根據(jù)自己的項(xiàng)目經(jīng)驗(yàn)最后補(bǔ)一句做低功耗Micromodule最難的不是單點(diǎn)技術(shù)而是把功耗目標(biāo)貫穿到每一個(gè)設(shè)計(jì)決策里。芯片選型、電源樹、軟件狀態(tài)機(jī)、天線匹配、產(chǎn)線測(cè)試每一步都在給最終的平均電流添磚加瓦或者減分。如果你也是第一次做這個(gè)方向的模塊建議從最簡(jiǎn)單的需求開始先用評(píng)估板驗(yàn)證最低功耗模式到底能做到多少再開始畫原理圖。這個(gè)步驟雖然慢但能幫你建立對(duì)“微安級(jí)電流”的直覺(jué)后面調(diào)試會(huì)順利很多。