戰(zhàn):從電壓軌到動(dòng)態(tài)調(diào)壓)
搞嵌入式這些年我發(fā)現(xiàn)一個(gè)很硬的規(guī)律凡是死在實(shí)驗(yàn)室里的板子十之八九不是程序問題而是電源問題。最近調(diào)一套需要長(zhǎng)時(shí)間離線運(yùn)行的數(shù)據(jù)采集板主控用了 PIC32MZ1024EFK144電源管理芯片選了 PCA9422。從裸板回來第一次上電的亂跳一直調(diào)到休眠電流能壓到微安級(jí)、動(dòng)態(tài)調(diào)壓跑完整個(gè)工作循環(huán)中間踩了不少坑。這篇文章就把整個(gè)電源管理方案的思路、硬件設(shè)計(jì)、固件配置和調(diào)試過程完整梳理一遍給正在折騰同類型主控和 PMIC 組合的朋友做個(gè)參考。這套組合適合誰如果你在做電池供電的工業(yè)采集器、便攜儀表或者任何對(duì)“運(yùn)行功耗、休眠功耗、動(dòng)態(tài)調(diào)壓”都有硬性要求的系統(tǒng)PCA9422 加上 PIC32MZ1024EFK144 這套組合能把電源從一堆離散的 LDO 和 MOS 管開關(guān)變成一組可配置、可讀取、可動(dòng)態(tài)調(diào)整的寄存器資源。整篇文章不吹玄乎的框架只講實(shí)際怎么設(shè)計(jì)、怎么寫代碼、怎么把板子調(diào)穩(wěn)。1. 方案價(jià)值與設(shè)計(jì)目標(biāo)為什么選這兩顆芯片先把方案為什么成立講清楚。PIC32MZ1024EFK144 這顆主控很多人把它當(dāng)普通單片機(jī)用接個(gè)傳感器、跑個(gè)串口就完事了。但真把它往 200MHz 滿頻上推再掛 USB、以太網(wǎng)、LCD 這類外設(shè)供電復(fù)雜度和普通 8 位單片機(jī)完全不是一個(gè)量級(jí)。PCA9422 的價(jià)值就是把這些復(fù)雜的電源需求抽象成幾個(gè)可控的電壓軌讓主控自己決定什么時(shí)候把哪一路拉高、哪一路關(guān)掉。1.1 完整電源管理到底要管哪些事我在項(xiàng)目里常跟人解釋一個(gè)完整的電源管理方案往上要適配系統(tǒng)需求往下要管住每一個(gè)電壓軌中間還要能跟主控對(duì)話。先看系統(tǒng)需求。以我手里這套采集板為例四個(gè)典型工作狀態(tài)正常運(yùn)行主控滿頻跑采集和通信都工作空閑主控降頻等中斷休眠大部分外設(shè)斷電只保留 RTC 和喚醒邏輯深度關(guān)機(jī)整個(gè)系統(tǒng)接近零功耗。這四個(gè)狀態(tài)里電壓軌的數(shù)量和電壓值不是一成不變的。正常運(yùn)行需要模擬供電、數(shù)字核心供電、傳感器和通信供電休眠狀態(tài)希望傳感器電源被徹底切斷主控核心電壓降到維持值甚至關(guān)斷只保留一路備份供電給實(shí)時(shí)時(shí)鐘和喚醒引腳。如果只用 LDO 加MOS管做倒是能做但問題在于狀態(tài)切換要寫一堆 GPIO 邏輯電壓狀態(tài)沒法回讀故障診斷全靠示波器人肉排查。換成帶 I2C 的 PMIC 之后狀態(tài)切換就是寫寄存器電壓值、電流限制、溫度狀態(tài)全都能讀回來調(diào)試效率提高一大截。PCA9422 正是這樣一顆偏重低功耗場(chǎng)景的可編程電源管理芯片內(nèi)部包含多路 DC-DC 和 LDO 通道關(guān)鍵參數(shù)都支持通過 I2C 配置非常適合和 MCU 組成閉環(huán)的電源管理系統(tǒng)。1.2 為什么是 PCA9422為什么是 PIC32MZ1024EFK144從主控往下看PIC32MZ1024EFK144 是一個(gè)工作頻率能到 200MHz、帶浮點(diǎn)單元的 MIPS 架構(gòu) MCU1MB 閃存加 512KB RAM跑復(fù)雜的采集算法、通信協(xié)議棧、圖形界面都?jí)蛴?。它的電源引腳不是簡(jiǎn)單的一路 VDD而是分了數(shù)字核心、模擬部分、USB 接口等多組對(duì)電源噪聲和上電時(shí)序有明確要求。這種復(fù)雜度決定了它需要一路按順序、可控的電源管理而不是三四個(gè)隨便接一起的線性穩(wěn)壓器。群里經(jīng)常有人問“PIC32MZ 能不能直接用 3.3V 一節(jié)電池帶”答案是不能穩(wěn)定帶。ADC 要用 AVDD核心要用低噪聲的 DVDD外設(shè)還需要獨(dú)立電壓域。只要有一個(gè)軌順序不對(duì)板子就起不來。從電源往上看PCA9422 的優(yōu)勢(shì)在于靈活性。多路輸出可以獨(dú)立設(shè)電壓、獨(dú)立使能、獨(dú)立調(diào)序電池供電場(chǎng)景下還能實(shí)時(shí)讀取電壓和電流狀態(tài)。我自己選它的幾個(gè)硬指標(biāo)待機(jī)功耗足夠低能在休眠時(shí)關(guān)斷大部分負(fù)載I2C 配置響應(yīng)快切換電壓域不用等幾十毫秒輸入電壓范圍能覆蓋單節(jié)鋰電池或者兩節(jié)堿性電池的供電場(chǎng)景。再加上它和 PIC32MZ 這類低功耗主控配合時(shí)硬件連接非常簡(jiǎn)單省掉的 PCB 面積和物料成本都很可觀。2. 電源架構(gòu)設(shè)計(jì)先把電壓軌和電流預(yù)算算清楚拿到一顆 PMIC 和一顆主控第一件該做的事不是焊板子而是把電壓軌規(guī)劃表畫出來。沒有這張表后面所有配置都是拍腦袋。我在實(shí)際項(xiàng)目中吃過虧第一版原理圖里直接把 3.3V 供給所有模擬電路結(jié)果傳感器上電瞬間的浪涌電流把 LDO 拉垮主控周期性復(fù)位。后來重新按電壓軌一個(gè)一個(gè)核算電流才把問題定位到“某一路過流保護(hù)被觸發(fā)”。2.1 電壓軌劃分與去向電壓軌劃分核心原則是噪聲敏感的和噪聲大的分開常供電的和可斷電的分開大電流和小電流分開。拿我的采集板舉例大致劃分如下電壓軌電壓值主要負(fù)載持續(xù)電流開關(guān)策略數(shù)字核心1.8VPIC32MZ DVDD、VCAP 周邊80-150mA常供電休眠可降模擬電源3.3V運(yùn)放、ADC 參考、傳感器信號(hào)20-40mA采集時(shí)開啟通信接口3.3VRS485 收發(fā)器、無線模塊50-120mA通信時(shí)開啟備份電源3.0V/1.8VRTC、喚醒邏輯5mA 以內(nèi)始終保留這個(gè)表看起來簡(jiǎn)單但把它細(xì)化到每個(gè)引腳的電流來源就會(huì)發(fā)現(xiàn)很多坑。比如 PIC32MZ1024EFK144 的 AVDD 雖然是模擬電源但內(nèi)部還有不少數(shù)字邏輯如果直接從數(shù)字 3.3V 上分出來ADC 噪聲會(huì)明顯惡化。所以我在設(shè)計(jì)里把模擬電源軌做了二次濾波先由 PCA9422 輸出一個(gè)干凈的主電壓軌再經(jīng)過磁珠和電容濾波后供給 AVDD。這么做犧牲了零點(diǎn)幾伏壓降換來的是 ADC 采樣值的穩(wěn)定。2.2 電流預(yù)算與通道分配電流預(yù)算表做好之后下一步是把這些電壓軌分配到 PCA9422 的各個(gè)輸出通道上。記住一個(gè)鐵律Buck 電路效率高、能出大電流但紋波相對(duì)大、啟動(dòng)慢LDO 電路噪聲低、響應(yīng)快但效率上限擺在那不適合出大電流。大電流數(shù)字負(fù)載放 DC-DC 通道小電流模擬負(fù)載放 LDO 通道這是最不容易出問題的分法。我實(shí)際使用的分配策略是PCA9422 的 DC-DC 通道輸出 1.8V 給數(shù)字核心另一路 DC-DC 通道輸出 3.3V 給通信接口和傳感器總電源LDO 通道輸出經(jīng)過濾波的 3.3V 給模擬電路。數(shù)字和模擬在 PMIC 內(nèi)部就是兩個(gè)獨(dú)立通道互不干擾PCB 上也能更干凈地做分區(qū)。電流預(yù)算有一個(gè)容易被低估的項(xiàng)目動(dòng)態(tài)負(fù)載的瞬態(tài)電流。無線模塊發(fā)射瞬間可能從 50mA 跳到 200mA如果只按平均電流選電感輸出電壓會(huì)瞬間跌落。我給通信軌預(yù)留了 1.5 倍設(shè)計(jì)余量實(shí)際測(cè)量下來模塊發(fā)包瞬間電壓只掉了不到 50mV這個(gè)余量是有必要的。2.3 上電時(shí)序設(shè)計(jì)電壓軌規(guī)劃里最容易被忽略、但翻車率最高的就是上電時(shí)序。PIC32MZ1024EFK144 這種大芯片內(nèi)部有多種電路如果數(shù)字核心電壓沒起來、IO 電源先起來了內(nèi)部邏輯可能出現(xiàn)不可預(yù)知的鎖存狀態(tài)。最典型的表現(xiàn)就是程序偶爾能跑、偶爾死機(jī)復(fù)位多次才能正常。PCA9422 的優(yōu)勢(shì)在于支持可編程的上電時(shí)序。我在配置里把核心電壓設(shè)為首個(gè)輸出模擬電源其次通信接口電源最后每一路之間延遲大約 5ms。這里用到了 PMIC 內(nèi)部的電源時(shí)序控制寄存器不同廠家寄存器定義不同設(shè)計(jì)時(shí)一定把數(shù)據(jù)手冊(cè)對(duì)應(yīng)章節(jié)打印出來照著配置。主控側(cè)也要注意PIC32MZ 的復(fù)位引腳要保持低電平直到所有電源軌穩(wěn)定。我的做法是用 PCA9422 的電源正常輸出信號(hào)接一個(gè) RC 延時(shí)網(wǎng)絡(luò)再接到主控的復(fù)位腳保證上電完成后再釋放復(fù)位。這套組合跑下來板子從來沒有再出現(xiàn)上電隨機(jī)死機(jī)的問題。3. 硬件電路實(shí)現(xiàn)從原理圖到 PCB 的關(guān)鍵細(xì)節(jié)方案講得再好落到 PCB 上才是真考驗(yàn)。很多朋友在調(diào)板時(shí)發(fā)現(xiàn) PMIC 輸出電壓不對(duì)、紋波大得離譜、I2C 讀寫時(shí)好時(shí)壞基本都能在硬件連接和布局上找到原因。這一節(jié)把原理圖連接、電感電容選型、布局布線的關(guān)鍵點(diǎn)拆開講。3.1 最小連接關(guān)系誰管誰先理清 PCA9422 和 PIC32MZ1024EFK144 之間的最小連接關(guān)系。PCA9422 這邊需要接電池或電源輸入多個(gè)電壓軌輸出分別接到主控對(duì)應(yīng)的電源引腳組。I2C 接口的兩根線 SCL、SDA 接到主控的對(duì)應(yīng)引腳別忘了接上拉電阻阻值根據(jù)總線速率選。很多 PMIC 還帶中斷輸出腳我把這個(gè)腳接到主控制器的一個(gè)外部中斷引腳上這樣 PMIC 檢測(cè)到過流、過壓、欠壓或者溫度異常時(shí)主控可以第一時(shí)間響應(yīng)。主控側(cè)要重點(diǎn)檢查 PIC32MZ1024EFK144 的每個(gè)電源引腳。數(shù)據(jù)手冊(cè)上標(biāo)了多組 VDD、AVDD、VBUS 等設(shè)計(jì)時(shí)最好給每組電源引腳就近放一組去耦電容10uF 和 100nF 搭配著來。我見過不少抄官方 demo 的原理圖把好幾個(gè)引腳串一塊共用一個(gè)電容結(jié)果在高頻負(fù)載變化時(shí)電源出現(xiàn)振鈴最后只能靠加電容補(bǔ)救。電源引腳不能偷懶該獨(dú)立濾波就獨(dú)立濾波。3.2 電感、電容選型與布局PCA9422 的 DC-DC 通道需要外部電感電感選型直接影響輸出紋波和瞬態(tài)響應(yīng)。選型三要素感值、飽和電流、直流電阻。感值太小紋波電流大輸出紋波高感值太大瞬態(tài)響應(yīng)慢。最佳方法不是憑經(jīng)驗(yàn)硬猜而是先查手冊(cè)里的推薦感值范圍再結(jié)合負(fù)載電流計(jì)算飽和電流。我用的 2.2uH 電感飽和電流選在 2A 以上直流電阻控制在 100mΩ 以內(nèi)。雖然實(shí)際負(fù)載只有 150mA但飽和電流余量給大可以避免電感飽和引起的電壓突降。布局上DC-DC 的開關(guān)節(jié)點(diǎn)是 PCB 上噪聲最強(qiáng)的地方。開關(guān)節(jié)點(diǎn)銅皮面積越小越好電感靠近 PMIC 的 SW 引腳輸出電容緊跟著電感地腳直接過孔打到地層。輸出反饋線要走遠(yuǎn)離電感的路徑避免把開關(guān)噪聲引入反饋端。還有一個(gè)很多人不知道的細(xì)節(jié)PMIC 下方的地平面最好別為了散熱開一堆亂七八糟的孔要開就開規(guī)則排列的過孔陣列否則回流路徑混亂EMI 測(cè)試會(huì)讓你懷疑人生。3.3 使能、復(fù)位與狀態(tài)信號(hào)的串聯(lián)使能引腳是另一個(gè)頻繁踩坑的地方。PCA9422 的各個(gè)通道一般都有 EN 引腳有些通道默認(rèn)是使能的有些默認(rèn)是關(guān)斷的具體要看芯片手冊(cè)的默認(rèn)狀態(tài)。我遇到過一次尷尬板子回來主控還沒固件PMIC 某個(gè)通道默認(rèn)把 3.3V 輸出了導(dǎo)致后級(jí)還沒初始化的通信芯片上了一半電狀態(tài)怪異。后來我把關(guān)鍵通道的 EN 引腳全部改為由主控 GPIO 控制固件跑起來之后再拉高使能徹底避免了這類問題。狀態(tài)信號(hào)串聯(lián)也要考慮。如果 PMIC 的電源正常指示信號(hào)要送到主控或者送到后級(jí)電路的復(fù)位端要注意電平匹配。有的 PMIC 輸出的是開漏結(jié)構(gòu)需要外接上拉有的是推挽輸出電壓可能與主控 IO 電壓域不匹配。我在設(shè)計(jì)時(shí)加了電平轉(zhuǎn)換保護(hù)即使 PMIC 輸出的電壓域和主控不一致也不會(huì)燒毀引腳。4. 固件實(shí)現(xiàn)I2C 配置與動(dòng)態(tài)電源管理硬件只是骨架真正讓電源管理“活”起來的是固件。這一節(jié)是整篇文章里信息密度最高的部分我會(huì)把 I2C 初始化、寄存器配置、模式切換和故障診斷完整串一遍。代碼以偽代碼和示例代碼為主具體寄存器地址和位定義請(qǐng)嚴(yán)格對(duì)照你手上那顆芯片的數(shù)據(jù)手冊(cè)。4.1 先搞清 I2C 地址與寄存器讀寫寫固件之前第一件事是確認(rèn) PCA9422 的 I2C 地址。這類 PMIC 一般有多個(gè)地址引腳可以硬件配置地址的低位。我的板子上 PMIC 設(shè)備地址是 0x60 左右具體值以手冊(cè)為準(zhǔn)。初始化 I2C 外設(shè)時(shí)注意總線速率不要太激進(jìn)我用的 400kHz穩(wěn)定可靠。如果總線過長(zhǎng)或者上拉電阻偏大可以降到 100kHz 試一下。接下來寫一個(gè)基礎(chǔ)的讀寫函數(shù)void pmic_write_reg(uint8_t reg, uint8_t val) { uint8_t buf[2] { reg, val }; i2c_write(I2C_BUS, PMIC_ADDR, buf, 2); } uint8_t pmic_read_reg(uint8_t reg) { i2c_write(I2C_BUS, PMIC_ADDR, reg, 1); uint8_t val; i2c_read(I2C_BUS, PMIC_ADDR, val, 1); return val; }這個(gè)函數(shù)是后面所有功能的基礎(chǔ)。我建議在固件里增加一個(gè)讀回校驗(yàn)操作寫完寄存器之后馬上讀回來比較不一致就重寫連續(xù)三次失敗上報(bào)錯(cuò)誤。因?yàn)?PMIC 在電源不穩(wěn)的瞬間I2C 寫操作有可能被跳過如果沒有校驗(yàn)后面所有配置都會(huì)白費(fèi)。4.2 初始化配置流程初始化配置流程要按順序來不能亂。我總結(jié)了一套步驟先配置通道電壓值再配置通道使能最后配置時(shí)序和中斷。順序倒過來會(huì)導(dǎo)致上電瞬間的電壓和時(shí)序不對(duì)可能損壞負(fù)載設(shè)備。以我的項(xiàng)目為例偽代碼如下void pmic_init(void) { // 1. 配置各通道電壓 pmic_write_reg(REG_VOUT_SEL_0, 0x32); // 通道0: 1.8V pmic_write_reg(REG_VOUT_SEL_1, 0x50); // 通道1: 3.3V pmic_write_reg(REG_LDO_VOUT, 0x50); // LDO: 3.3V // 2. 配置電流限制和保護(hù)閾值 pmic_write_reg(REG_ILIM, 0x0F); // 3. 配置上電時(shí)序 pmic_write_reg(REG_PWR_SEQ, 0x12); // 4. 使能輸出 pmic_write_reg(REG_ENABLE, 0x07); // 5. 讀回校驗(yàn) uint8_t chk pmic_read_reg(REG_ENABLE); if (chk ! 0x07) { error_handler(); } }這里每個(gè)寄存器的數(shù)值都需要對(duì)照手冊(cè)核對(duì)不要直接抄我的值。我寫這段主要是想強(qiáng)調(diào)流程電壓先定使能后開時(shí)序由固化寄存器控制最后必須回讀。曾經(jīng)有一版固件漏了回讀某次電源彈跳把配置丟了系統(tǒng)在沒配置好的狀態(tài)下運(yùn)行了一個(gè)多小時(shí)直到通信異常才被發(fā)現(xiàn)。加回讀后這類問題在啟動(dòng)階段就直接被攔截。4.3 運(yùn)行模式切換與動(dòng)態(tài)電壓調(diào)整動(dòng)態(tài)電源管理的核心是把系統(tǒng)的運(yùn)行狀態(tài)映射到 PMIC 的通道開關(guān)和電壓值上。我的系統(tǒng)有三個(gè)主要狀態(tài)切換void system_enter_sleep(void) { pmic_write_reg(REG_ENABLE, 0x01); // 只保留核心供電 // 關(guān)閉傳感器電源軌、通信電源軌 pmic_write_reg(REG_VOUT_SEL_0, 0x18); // 核心電壓降到 1.2V sys_sleep_mode(); } void system_enter_active(void) { pmic_write_reg(REG_VOUT_SEL_0, 0x32); // 核心電壓恢復(fù)到 1.8V pmic_write_reg(REG_ENABLE, 0x07); // 打開全部通道 }休眠降電壓、運(yùn)行升電壓這個(gè)動(dòng)態(tài)調(diào)整是降低整體功耗最有效的手段。PIC32MZ1024EFK144 工作在 1.2V 時(shí)動(dòng)態(tài)功耗比 1.8V 時(shí)下降明顯而穩(wěn)壓的靜態(tài)損耗也降低了不少。有一點(diǎn)要注意提高電壓前先讓軟件準(zhǔn)備新的外設(shè)狀態(tài)降低電壓前確保外設(shè)已經(jīng)關(guān)閉。順序反了負(fù)載會(huì)在欠壓狀態(tài)下工作輕則數(shù)據(jù)錯(cuò)亂重則鎖死。4.4 電池監(jiān)控與故障診斷閉環(huán)完整電源管理還包含狀態(tài)感知。PCA9422 一般提供電壓、電流和溫度狀態(tài)寄存器主控可以周期性讀取。我的做法是每秒鐘讀一次電池電壓和核心電壓并存到環(huán)形緩沖區(qū)。一旦電源出現(xiàn)異常波動(dòng)可以通過歷史數(shù)據(jù)快速定位是瞬間電流沖擊還是持續(xù)的供電不足。故障診斷閉環(huán)是這樣做的void pmic_monitor_task(void) { uint16_t vbat pmic_read_reg(REG_VBAT_ADC_H) 8 | pmic_read_reg(REG_VBAT_ADC_L); if (vbat LOW_THRESHOLD) { // 通知應(yīng)用層保存重要數(shù)據(jù)進(jìn)入低功耗模式 system_enter_brownout(); } // 檢查過溫標(biāo)志 if (pmic_read_reg(REG_STATUS) TEMP_ALERT) { pmic_write_reg(REG_ENABLE, 0x01); } }有了這個(gè)閉環(huán)系統(tǒng)能自己處理很多電源異常不用每次都等人工介入。我還把 PMIC 的中斷輸出接到了主控的喚醒引腳這樣電源異常時(shí)主控可以立刻從休眠中醒來處理。5. 實(shí)測(cè)數(shù)據(jù)與常見問題排查配置寫完總要上電實(shí)測(cè)。這一章分享我的實(shí)測(cè)記錄和排查經(jīng)驗(yàn)很多問題不是芯片不行而是調(diào)試方法不對(duì)導(dǎo)致誤判。5.1 上電時(shí)序?qū)崪y(cè)記錄實(shí)測(cè)上電時(shí)我用示波器同時(shí)抓了核心電壓、模擬電壓和復(fù)位引腳。理想時(shí)序是核心電壓先到目標(biāo)值然后模擬電壓跟上最后復(fù)位釋放。因?yàn)槭?PMIC 內(nèi)部時(shí)序控制的過程非常穩(wěn)定三路波形間隔約 5ms與配置完全一致。這里要提醒一下觀察時(shí)鐘的觸發(fā)電平用 1V 左右別用 50% 的默認(rèn)觸發(fā)電平因?yàn)?1.8V 電壓軌的 50% 是 0.9V容易誤觸發(fā)。另一個(gè)實(shí)測(cè)項(xiàng)目是動(dòng)態(tài)調(diào)壓的響應(yīng)時(shí)間。從發(fā)出 I2C 寫寄存器命令到輸出穩(wěn)定到新電壓值大約需要 3 到 5ms。這個(gè)時(shí)間對(duì)系統(tǒng)狀態(tài)切換是足夠的。如果發(fā)現(xiàn)響應(yīng)時(shí)間特別長(zhǎng)檢查一下 I2C 總線上有沒有其他設(shè)備長(zhǎng)時(shí)間占用總線或者寫寄存器時(shí)有沒有被中斷打斷。5.2 常見問題速查表調(diào)試過程中遇到的問題我整理成了一張速查表現(xiàn)象可能原因排查方向上電后主控反復(fù)復(fù)位電壓軌時(shí)序不對(duì)檢查 PMIC 時(shí)序配置、復(fù)位釋放點(diǎn)I2C 讀寫超時(shí)地址錯(cuò)誤/上拉電阻太大確認(rèn)地址引腳、減小上拉到 2.2kΩ輸出電壓偏低反饋采樣點(diǎn)遠(yuǎn)或電感飽和檢查反饋?zhàn)呔€、換用高飽和電流電感休眠電流偏高某路負(fù)載未真正關(guān)斷逐通道關(guān)閉輸出用電流表確認(rèn)無線模塊發(fā)包時(shí)電壓跌落瞬態(tài)電流超出通道能力增大輸出電容、檢查電感余量ADC 采樣噪聲大模擬供電和數(shù)字供電耦合磁珠隔離、模擬地分區(qū)這張表在實(shí)際排查時(shí)非常有用。比如“I2C 讀寫超時(shí)”這個(gè)問題我遇到過兩次一次是上拉電阻選了 10kΩ總線電容偏高導(dǎo)致沿太慢另一次是 PCA9422 的地址引腳被懸空結(jié)果默認(rèn)地址和我配置的不一致。排查這些問題時(shí)先看波形再看寄存器不要上來就換芯片。5.3 功耗測(cè)量技巧測(cè)功耗是電源管理調(diào)試?yán)镒钊菀追嚨沫h(huán)節(jié)。萬用表串聯(lián)進(jìn)去測(cè)先不說表的內(nèi)阻影響單是表在各個(gè)量程之間的切換就會(huì)引入很大誤差。我的做法是在電池輸入串聯(lián)一個(gè) 1mΩ 精密采樣電阻用示波器差分探頭量壓降這樣既能看平均功耗又能抓瞬態(tài)尖峰。測(cè)休眠電流時(shí)要確保系統(tǒng)確實(shí)進(jìn)入了休眠狀態(tài)而不是停在某個(gè)空循環(huán)里空轉(zhuǎn)。我以前只測(cè)過軟件休眠標(biāo)志位沒注意外設(shè)時(shí)鐘還在跑白白浪費(fèi)了半個(gè)月優(yōu)化“虛假的功耗”。測(cè)量時(shí)還要注意把探頭盡量靠近負(fù)載端避免線纜上的壓降導(dǎo)致測(cè)量點(diǎn)電壓與實(shí)際不符。瞬態(tài)電流測(cè)量要配合負(fù)載開關(guān)的狀態(tài)一起分析這樣才能看出哪些外設(shè)是真正的功耗大戶。6. 經(jīng)驗(yàn)與擴(kuò)展建議整套方案跑下來我最大的體會(huì)是完整電源管理不是讓主控用寄存器控制電源芯片這么簡(jiǎn)單它是一個(gè)閉環(huán)系統(tǒng)電壓軌規(guī)劃、硬件布局、初始化時(shí)序、運(yùn)行狀態(tài)切換、故障診斷五個(gè)環(huán)節(jié)缺一不可。PCA9422 和 PIC32MZ1024EFK144 這對(duì)組合給我最大的驚喜是它們把電源管理從“硬件工程師不斷地改電阻換電容”提升到了“固件工程師寫代碼就能調(diào)電源”的層次。最后分享一個(gè)我的個(gè)人習(xí)慣每次調(diào)完電源把寄存器配置和實(shí)測(cè)波形存檔包括異常波形。這樣做的好處是下次改版或者換主控時(shí)可以直接對(duì)比舊版本的數(shù)據(jù)快速判斷是軟件引入的問題還是硬件的退化。我就是靠著一份完整的調(diào)試記錄把第二版板子的硬件調(diào)通時(shí)間從兩周壓縮到了三天。如果你也準(zhǔn)備用這套組合建議先從電壓軌規(guī)劃表開始不要急著畫原理圖。把每一路電流估算清楚把上電時(shí)序想明白后面的一切都會(huì)順利很多。等這套基礎(chǔ)玩法跑通之后還可以嘗試?yán)?PMIC 的更深層功能比如根據(jù)負(fù)載動(dòng)態(tài)切換 DC-DC 的強(qiáng)制 PWM 和跳過模式配合主控的算法進(jìn)一步省電。那個(gè)方向又夠折騰一陣子了。