0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

低功耗休眠喚醒之三級(jí)環(huán)形架構(gòu)

WiMinet無線組網(wǎng)通信 ? 來源:WiMinet無線組網(wǎng)通信 ? 2023-05-18 10:58 ? 次閱讀
,

Gekko japonicus(節(jié)能的動(dòng)物)

前言

preface

無線通信技術(shù)相關(guān)應(yīng)用中,用戶體驗(yàn)一直是用戶關(guān)系的重點(diǎn)。無線通訊距離近一點(diǎn),通訊速度慢一點(diǎn),這都不是致命的問題,在某些場合下是完全可以接受的,甚至本身就是項(xiàng)目的技術(shù)需求;但是有一些設(shè)計(jì)缺陷卻會(huì)嚴(yán)重影響用戶體驗(yàn)的,一旦大面積的出現(xiàn),基本上可以判定為產(chǎn)品失敗了;總結(jié)起來,大家都無法忍受的問題主要是下述兩個(gè)

(1)通訊失敗或者數(shù)據(jù)傳輸錯(cuò)誤

(2)電池消耗快,很快沒電

01

業(yè)內(nèi)問題

Industry issues

在絕大部分用戶的心目中,無線通訊本身就不如有線通訊技術(shù)穩(wěn)定,如果一款產(chǎn)品還經(jīng)常傳輸失敗,試問用戶會(huì)對(duì)這款產(chǎn)品有信心嗎?

無線產(chǎn)品配合上電池供電,才能充分發(fā)揮無線技術(shù)可以隨意移動(dòng)的優(yōu)勢(shì),因此很多的無線產(chǎn)品經(jīng)常和低功耗或電池供電有非常緊密的聯(lián)系;一旦這個(gè)產(chǎn)品電池消耗很快,那么必然將是其便攜性,移動(dòng)性大打折扣。

當(dāng)然,在理論設(shè)計(jì)上產(chǎn)品的電池壽命肯定是非常長的,但是真正實(shí)現(xiàn)起來卻比較困難,很多的產(chǎn)品設(shè)計(jì)電池壽命有 5 年之久,但是現(xiàn)場運(yùn)行不到一年,甚至幾個(gè)月就完全沒電了,這種問題的發(fā)作經(jīng)常沒有任何規(guī)律,測(cè)試時(shí)間上又以年/月為單位,且呈現(xiàn)出偶發(fā)特性,定位起來極其困難,困擾了不少的無線通訊技術(shù)工程師,被認(rèn)為是業(yè)界的重要難題之一。

02

技術(shù)難點(diǎn)

Technical difficulties

其實(shí)電池快速耗電和通訊不穩(wěn)定說到底都是軟件設(shè)計(jì),特別是軟件架構(gòu)方面的設(shè)計(jì)問題;軟件架構(gòu)上的不完整或混亂,導(dǎo)致射頻芯片的控制不準(zhǔn)確甚至部分狀態(tài)失去控制才是問題的源頭。既然大家都認(rèn)為功耗的管理是一個(gè)難題,那么到底難在哪些環(huán)節(jié)呢?

(1)產(chǎn)品的低功耗休眠喚醒設(shè)計(jì),存在系統(tǒng)業(yè)務(wù)和應(yīng)用層業(yè)務(wù)兩種:在系統(tǒng)層面講,主要有OTA無線升級(jí)、遠(yuǎn)程診斷、遠(yuǎn)程控制(無線I/O)等;在應(yīng)用層中則是回調(diào)機(jī)制、關(guān)閉端口上拉、檢測(cè)用戶按鍵、關(guān)閉工作指示燈等。系統(tǒng)層內(nèi)容屬于整個(gè)產(chǎn)品的軀干和骨架,通常需要交給經(jīng)驗(yàn)豐富的工程師負(fù)責(zé),因?yàn)樯婕熬艿囊?guī)則和龐大的算法問題,需要較為強(qiáng)大的抽象能力和全面的視角。而應(yīng)用層則是面向用戶的,體現(xiàn)在軟件部分則相對(duì)比較簡單。

(2)系統(tǒng)存在多種喚醒源:UART、GPIO、RTC、Timer等,這些喚醒源中斷方式和清除規(guī)則略有不同,但是進(jìn)入和退出休眠需要遵循相同的路徑,因此其控制邏輯需要做一定的抽象化設(shè)計(jì),具有一定的挑戰(zhàn)。

(3)基于RTC定時(shí)器的后臺(tái)背景活動(dòng):些延遲操作,比如開啟一個(gè) LED 指示燈,十秒之后關(guān)閉,此時(shí)如果處理器全速運(yùn)行就為了運(yùn)行這一功能,是不太經(jīng)濟(jì)的;通常是設(shè)置一個(gè)狀態(tài)標(biāo)志,然后啟動(dòng)RTC定時(shí)器,并將處理器切入休眠狀態(tài),計(jì)時(shí)的時(shí)間到了之后會(huì)產(chǎn)生一個(gè)RTC中斷,處理器可以在這種中斷到達(dá)的時(shí)候關(guān)閉這個(gè)LED 指示燈。類似這些延遲操作,往往還會(huì)和其他的業(yè)務(wù)狀態(tài)交織在一起,控制邏輯需要精確設(shè)計(jì),稍有不慎就會(huì)失去控制。

(4)被未知的電磁波干擾,吵醒,誤喚醒等假喚醒行為:無線電波由于空間開放的特性,其喚醒動(dòng)作往往伴隨著少量的模擬特性,偶爾會(huì)被一些未知的信號(hào)給誤觸發(fā),處理器被喚醒之后,要對(duì)喚醒后的實(shí)時(shí)參數(shù)做一些分析計(jì)算,對(duì)喚醒源進(jìn)行甄別篩選,如果不是有效的喚醒,需要提前終止業(yè)務(wù)邏輯。

(5)存在多種不同模式的睡眠深度的低功耗模式:處理器通常支持多種不同的睡眠深度,對(duì)應(yīng)不同的功耗等級(jí)。不同睡眠模式下,處理器可以激活的外設(shè)不一樣的,在喚醒之后,有些外設(shè)需要再次初始化之后才可以重新投入工作,只有深入了解處理器的工作特性,才能控制好處理器不同睡眠模式切換工作。

(6)雙芯片模式(獨(dú)立的無線通訊模塊)模式和單芯片模式(協(xié)議棧和應(yīng)用層業(yè)務(wù)運(yùn)行在一個(gè)芯片上),需要統(tǒng)一的編程接口如果維持兩套不同的編程接口,代碼分支龐大不說,還很容易產(chǎn)生歧義,為后續(xù)的產(chǎn)品維護(hù)和架構(gòu)升級(jí)帶來困難。

綜合以上難點(diǎn),需要解決如此復(fù)雜的功耗控制要求,必須分而治之,采用分層的控制策略;行之有效的解決方案就是如下的內(nèi)-中-外,三級(jí)環(huán)形架構(gòu)。

03

WiMi-net的三級(jí)環(huán)形架構(gòu)

Three-level circular architecture

3f1f8930-f526-11ed-90ce-dac502259ad0.png

01

Main body diagram

上圖是一個(gè)電子價(jià)簽的主程序框架。可以看出該程序主要分為三個(gè)主線程,分別是協(xié)議棧的主線程;低功耗休眠與喚醒的主線程與墨水屏應(yīng)用業(yè)務(wù)的主線程。這三個(gè)主線程在同一個(gè)層級(jí)平行運(yùn)行,具有相同的調(diào)度優(yōu)先級(jí)。

局放圖

Partial layout

3f554f2a-f526-11ed-90ce-dac502259ad0.png

02

Partial layout

我們將低功耗休眠與喚醒的主線程做局部放大,如上所示。

圖中的三級(jí)環(huán)架構(gòu)是休眠喚醒管理模塊的核心,是整個(gè)休眠喚醒功能的局部放大。如圖所示,由內(nèi)環(huán)、中環(huán)、外環(huán),三部分構(gòu)成。因?yàn)榭紤]到在無線通信中,各種事件的復(fù)雜程度及其處理方式,分為以上三環(huán)。最內(nèi)部一環(huán)主管電磁波喚醒,中層環(huán)主管GPIO喚醒、RTC喚醒、UART喚醒,最外層環(huán)則啟動(dòng)了整個(gè)協(xié)議棧以及業(yè)務(wù)層,面向用戶進(jìn)行交互。

三級(jí)環(huán)的目的突出的是分層做事原則。在內(nèi)環(huán)中只進(jìn)行電磁波喚醒的工作,這里主要有三部分,查詢中斷、分析中斷狀態(tài)、無線電波處理。當(dāng)信號(hào)到達(dá)這一環(huán),會(huì)根據(jù)信號(hào)類型分析是否進(jìn)行無線電波的喚醒處理。

如果不是無線電波喚醒,則跳出該層,進(jìn)入中環(huán)處理。這里的信號(hào)類型分析和處理是根據(jù)不同事件、不同時(shí)刻產(chǎn)生的耦合性而定的。

在中環(huán),GPIO 喚醒是特定產(chǎn)品的喚醒模式;RTC 喚醒通常用于一些低優(yōu)先級(jí)的后臺(tái)任務(wù),比如檢測(cè)是否漏電或者執(zhí)行一些延遲 I/O 操作;UART串口喚醒則是針對(duì)用戶處理器。

外環(huán)則是面向用戶的層級(jí),如需要啟動(dòng)主程序固件升級(jí)或者業(yè)務(wù)邏輯,比如墨水屏的刷新屏幕顯示內(nèi)容等,則程序會(huì)被全面喚醒,此時(shí)就在外環(huán)中進(jìn)行。

04

環(huán)形架構(gòu)的優(yōu)勢(shì)

The advantages of circular architecture

由外環(huán)、中環(huán)到內(nèi)環(huán),視覺效果方面是越來越小的,越來越縮放的。自然在功能性方面也是越來越小,越來越簡潔的過程。三級(jí)環(huán)從外到內(nèi),能做的“事”就越來越少,體現(xiàn)在軟件代碼方面就是,代碼更少,功能性更加單一,邏輯更加清晰,運(yùn)行更穩(wěn)定。從而更加節(jié)省功耗。

為什么功耗更加節(jié)約?將電磁波喚醒獨(dú)立拆分,做成了獨(dú)立的單元結(jié)構(gòu),是出于這樣的考慮的。當(dāng)信號(hào)指令到達(dá)三級(jí)環(huán),內(nèi)環(huán)首先進(jìn)行判定,是否需要電磁波喚醒,判定是,就進(jìn)行電磁波喚醒;判定不是,則跳入中環(huán)選擇喚醒類別,內(nèi)環(huán)進(jìn)入休眠。

考慮到事件的復(fù)雜性、多樣性,需要從不同屬性、不同時(shí)間等多角度考量休眠喚醒的執(zhí)行,通俗點(diǎn)說就是“跟我相關(guān)起來干活,跟我無關(guān)繼續(xù)睡覺”,這樣的三級(jí)環(huán)設(shè)計(jì)針對(duì)性很強(qiáng),在需要單一模式喚醒時(shí),只需要調(diào)動(dòng)少數(shù)軟件資源和內(nèi)部耗能就可以完成,完成相關(guān)作業(yè)后繼續(xù)休眠,等待下一輪指令喚醒。從而這樣的三級(jí)環(huán)設(shè)計(jì)是一款更加節(jié)約功耗的方案。

05

回調(diào)函數(shù)

Callback

//*****************************************************************************
//DesignNotes:
//-----------------------------------------------------------------------------
charOnHostWakeup_Request(unsignedchariStatus,chariCause,chariReqAck)
{
unsignedchariRetVal;

//Thecallbackstatus
switch(iStatus)
{
caseWIMINET_SLEEP_CALL_INIT:
{
OnWakeupRequest_Init(iCause,iReqAck);
}
break;

caseWIMINET_SLEEP_CALL_OPEN:
{
OnWakeupRequest_Open(iCause,iReqAck);
}
break;

caseWIMINET_SLEEP_CALL_WORK:
{
OnWakeupRequest_Work(iCause,iReqAck);
}
break;

caseWIMINET_SLEEP_CALL_STOP:
{
OnWakeupRequest_Stop(iCause,iReqAck);
}
break;

default:
{
iRetVal=0X00;
}
break;
}

//Thereturnstatus
returniRetVal;
}

上圖是一個(gè) SoC 產(chǎn)品方案,回調(diào)函數(shù)的標(biāo)準(zhǔn)樣本,通常需要實(shí)現(xiàn)“系統(tǒng)剛剛喚醒”,“已經(jīng)完成初始化”,“執(zhí)行用戶任務(wù)”,“即將進(jìn)入休眠”等幾個(gè)重要的通知時(shí)刻:

系統(tǒng)剛剛喚醒:系統(tǒng)運(yùn)行在三級(jí)環(huán)的內(nèi)環(huán),處理器剛剛被中斷喚醒,需要啟用系統(tǒng)層級(jí)別的外設(shè),比如 SPI 總線等;

已經(jīng)完成初始化:系統(tǒng)已經(jīng)切換至三級(jí)環(huán)的外環(huán),控制權(quán)準(zhǔn)備釋放給用戶程序,通常在此時(shí)初始化用戶任務(wù);

執(zhí)行用戶任務(wù):系統(tǒng)運(yùn)行在三級(jí)環(huán)的外環(huán),此時(shí)協(xié)議棧程序也在同層級(jí)平行運(yùn)作,用戶程序執(zhí)行完了之后,需要釋放控制權(quán)給系統(tǒng),通知系統(tǒng)進(jìn)入睡眠模式

即將進(jìn)入休眠:系統(tǒng)運(yùn)行在三級(jí)環(huán)的中環(huán),所有的數(shù)據(jù)都已經(jīng)發(fā)送完畢或者超時(shí)終止,即將重新進(jìn)入睡眠模式,通知用戶關(guān)閉外設(shè),執(zhí)行任務(wù)的清理或者重置工作。

對(duì)于不太復(fù)雜的系統(tǒng),通常僅僅需要實(shí)現(xiàn)上述四個(gè)通知的回調(diào)函數(shù)即可,其余的通知可以不做處理器;對(duì)于更加復(fù)雜的系統(tǒng),可以根據(jù)需要實(shí)現(xiàn)其他更多的回調(diào)通知。

06

真機(jī)運(yùn)行對(duì)比圖

Comparison diagram of real machine operation

其他廠家真機(jī)運(yùn)行圖

3f83e47a-f526-11ed-90ce-dac502259ad0.png

01

其他廠家真機(jī)運(yùn)行典型功耗:4 秒喚醒周期、平均功耗 20.53 μA

WiMinet真機(jī)運(yùn)行圖

3fc9c666-f526-11ed-90ce-dac502259ad0.png

02

WiMinet真機(jī)運(yùn)行典型功耗:1 秒喚醒周期、平均功耗 7.15 μA

在真機(jī)運(yùn)行圖中,我們可以清楚地看到,WiMinet的真機(jī)運(yùn)行圖信號(hào)波紋更加密集,整體看起來更加規(guī)律。由真機(jī)對(duì)比圖可知,WiMinet采用三級(jí)換架構(gòu)的真機(jī)運(yùn)行圖實(shí)時(shí)性是其他廠家的4倍,同時(shí)功耗僅為其他廠家的1/3。

3ffb2bca-f526-11ed-90ce-dac502259ad0.gif

關(guān)于我們

4026e328-f526-11ed-90ce-dac502259ad0.png

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 低功耗
    +關(guān)注

    關(guān)注

    10

    文章

    2407

    瀏覽量

    103766
  • 軟件架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    10294
  • 電池
    +關(guān)注

    關(guān)注

    84

    文章

    10603

    瀏覽量

    130071
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    低功耗無線掃描喚醒技術(shù),重塑物聯(lián)網(wǎng)藍(lán)牙新體驗(yàn)

    低功耗無線物聯(lián)網(wǎng)喚醒方法研究 低功耗無線物聯(lián)網(wǎng)中的節(jié)點(diǎn),絕大部分時(shí)間必須處于休眠狀態(tài)才能降低功耗,以支持電池長時(shí)間續(xù)航。如果有節(jié)點(diǎn)要發(fā)起通信
    的頭像 發(fā)表于 09-15 11:35 ?1159次閱讀

    干貨分享 | TSMaster—LIN 喚醒休眠機(jī)制

    在汽車總線中常見的喚醒方式有硬線喚醒、網(wǎng)絡(luò)喚醒和特定信號(hào)喚醒,而LIN總線則是通過休眠幀與喚醒
    的頭像 發(fā)表于 09-25 08:03 ?1808次閱讀
    干貨分享 | TSMaster—LIN <b class='flag-5'>喚醒</b>與<b class='flag-5'>休眠</b>機(jī)制

    用到STM32L471的低功耗,用RTC的鬧鈴中斷喚醒遇到的疑問求解

    最近用到STM32L471的低功耗,根據(jù)綜合考慮選用STOP2模式(任意中斷喚醒),用RTC的鬧鈴中斷喚醒,由于喚醒周期比較長,采用的方式為:一小時(shí)
    發(fā)表于 04-23 06:25

    stm32的低功耗模式

    等待中斷時(shí)候才有用, 比如sleep(1), 不過功耗不是降太多2 stop模式只有靠外部中斷喚醒或者RTC定時(shí)器和看門狗喚醒因?yàn)镽TC的鬧鐘中斷是接到外部中斷的, 所以也算是外部中斷這種模式適合長時(shí)間
    發(fā)表于 08-02 08:31

    低功耗深度休眠后無法喚醒燒錄程序的解決辦法是什么?

    問題陳述:某日,本人在調(diào)測(cè)華大半導(dǎo)體單片機(jī)(HC32L136)低功耗時(shí),一時(shí)恍惚,在沒有喚醒中斷的情況下,將上電延時(shí)函數(shù)刪除,使系統(tǒng)上電后就立即進(jìn)入低功耗深度休眠,導(dǎo)致無法
    發(fā)表于 12-06 07:06

    ch582m做低功耗藍(lán)牙外設(shè)時(shí),如何進(jìn)入休眠通過外部中斷喚醒?

    ch582m做低功耗藍(lán)牙外設(shè)時(shí),想進(jìn)入休眠通過外部中斷喚醒。我從芯片手冊(cè)看到有四種低功耗模式: 空閑模式 Idle暫停模式 Halt睡眠模式 Sleep下電模式 Shutdown我想實(shí)
    發(fā)表于 08-02 07:48

    CH573低功耗休眠GPIO喚醒電流異常怎么解決?

    使用573EVT(1.6)中PM示例進(jìn)行測(cè)試時(shí)發(fā)現(xiàn):外部GPIO喚醒(PA5)在對(duì)地短接時(shí),電流無法降低到休眠狀態(tài)電流。串口打印日志顯示正常進(jìn)入休眠。默認(rèn)配置為下降沿喚醒,正常
    發(fā)表于 08-09 06:15

    lightsleep休眠不同喚醒方式的功耗問題求解

    我用arduino對(duì)esp32c3開發(fā)板進(jìn)行編程測(cè)試lightsleep的休眠功耗,GPIO2口接紅外,發(fā)現(xiàn)了一個(gè)問題,當(dāng)我僅使用GPIO喚醒時(shí),休眠后電流為5.16ma,僅使用Tim
    發(fā)表于 03-07 07:07

    M480休眠低功耗怎么做?

    請(qǐng)問有人做過新唐M4系列,休眠低功耗嗎?我現(xiàn)在試的DPD模式,靜態(tài)功耗很小,大概20UA,但是GPIO口不能中斷喚醒。改成SPD模式就可以IO口中斷
    發(fā)表于 06-21 08:14

    低功耗深度休眠后無法喚醒、燒錄程序,怎么辦?(華大半導(dǎo)體HC32L136)

    問題陳述:某日,本人在調(diào)測(cè)華大半導(dǎo)體單片機(jī)(HC32L136)低功耗時(shí),一時(shí)恍惚,在沒有喚醒中斷的情況下,將上電延時(shí)函數(shù)刪除,使系統(tǒng)上電后就立即進(jìn)入低功耗深度休眠,導(dǎo)致無法
    發(fā)表于 11-23 18:06 ?6次下載
    <b class='flag-5'>低功耗</b>深度<b class='flag-5'>休眠</b>后無法<b class='flag-5'>喚醒</b>、燒錄程序,怎么辦?(華大半導(dǎo)體HC32L136)

    STM32超低功耗入門之喚醒

    一. 認(rèn)識(shí)喚醒人每天晚上要睡覺,早上要醒來。那 MCU 進(jìn)入低功耗模式之后,在我們需要他賣力干活的時(shí)候,還需要他能醒來,所以在前面的文章對(duì)于各種功耗模式有了一個(gè)全面的認(rèn)識(shí)了之后,還要再總結(jié)以下再不
    發(fā)表于 12-07 16:06 ?15次下載
    STM32超<b class='flag-5'>低功耗</b>入門之<b class='flag-5'>喚醒</b>

    STM32CubeMx配置WKUP(PA0)按鍵低功耗喚醒進(jìn)入正常模式

    stm32的引腳wakeup有什么作用?喚醒MCU,比如當(dāng)MCU在低功耗狀態(tài)下或者休眠之類的狀態(tài)下,通過引腳的Wakeup功能可以將MCU喚醒,讓MCU進(jìn)入正常的工作狀態(tài)。
    發(fā)表于 12-07 20:21 ?21次下載
    STM32CubeMx配置WKUP(PA0)按鍵<b class='flag-5'>低功耗</b><b class='flag-5'>喚醒</b>進(jìn)入正常模式

    STM32外部中斷、串口喚醒低功耗

    STM32的低功耗模式共有個(gè):睡眠模式-(sleep): 睡眠模式的功耗是mA級(jí)別,一般在實(shí)際應(yīng)用中較少使用停止模式-(stop): 停止模式的功耗為20uA,所有時(shí)鐘關(guān)閉,寄存器不
    發(fā)表于 12-31 19:05 ?29次下載
    STM32外部中斷、串口<b class='flag-5'>喚醒</b><b class='flag-5'>低功耗</b>

    低功耗休眠喚醒之三級(jí)環(huán)形架構(gòu)

    無線通信技術(shù)相關(guān)應(yīng)用中,用戶體驗(yàn)一直是用戶關(guān)系的重點(diǎn)。無線通訊距離近一點(diǎn),通訊速度慢一點(diǎn),這都不是致命的問題,在某些場合下是完全可以接受的,甚至本身就是項(xiàng)目的技術(shù)需求;但是有一些設(shè)計(jì)缺陷卻會(huì)嚴(yán)重影響用戶體驗(yàn)的,一旦大面積的出現(xiàn),基本上可以判定為產(chǎn)品失敗了;總結(jié)起來,大家都無法忍受的問題主要是下述兩個(gè)。
    的頭像 發(fā)表于 05-18 10:59 ?668次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>休眠</b><b class='flag-5'>喚醒</b><b class='flag-5'>之三級(jí)</b><b class='flag-5'>環(huán)形</b><b class='flag-5'>架構(gòu)</b>

    儲(chǔ)能電站BMS典型三級(jí)架構(gòu)淺析

    在儲(chǔ)能電站中,BMS通常采用三級(jí)架構(gòu)(從控、主控、總控),實(shí)現(xiàn)從電池模組(pack)-簇-堆的分級(jí)管理和控制。
    的頭像 發(fā)表于 05-24 11:04 ?3.5w次閱讀
    儲(chǔ)能電站BMS典型<b class='flag-5'>三級(jí)</b><b class='flag-5'>架構(gòu)</b>淺析