找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

關(guān)于STC8H單片機(jī)掉電模式電流問題

查看數(shù): 9684 | 評論數(shù): 33 | 收藏 2
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2021-10-11 09:15

正文摘要:

數(shù)據(jù)手冊上說,單片機(jī)掉電模式電流0.4ua,但是我測試掉電模式電流有1.5ma 網(wǎng)上有人說有漏電流,或者其他功能打開了。 電路用的是LQFP32轉(zhuǎn)DIP32的轉(zhuǎn)接板,代碼也很簡單。就只是測掉電模式電流。 有高手指點(diǎn) ...

回復(fù)

ID:1034262 發(fā)表于 2024-8-30 09:56
STC Mcu睡眠時IO不耗電的處理方法:

1、對于設(shè)置為準(zhǔn)雙向口、推挽輸出、開漏輸出低電平的IO,IO本身不耗電,輸出電平與外部電路配合成外部電路不耗電的方式即可。

2、設(shè)置為高阻或開漏輸出高電平的IO,如果懸空,則會因為輸入狀態(tài)不確定導(dǎo)致有電流,以下兩種方式任選一種:
    A、IO口接一個確定的高電平(電壓高于VDD-0.3)或低電平(電壓低于0.3V),否則耗電。
    B、將IO口對應(yīng)的數(shù)字輸入功能關(guān)閉(對于STC8系列、STC32系列)。
       比如關(guān)閉P1.0、P1.1的數(shù)字輸入:
         P_SW2 |= 0x80;   //允許操作擴(kuò)展寄存器
         P1IE   = ~0x03;  //將P1.0 P1.1的數(shù)字輸入功能關(guān)閉

3、睡眠前,禁止ADC(如果已經(jīng)允許的話),禁止模擬比較器(如果已經(jīng)允許的話)。

4、在主程序進(jìn)入睡眠,睡眠后至少要加3個空操作(NOP)。
   PCON |= 0x02;
   _nop_();
   _nop_();
   _nop_();

ID:1116534 發(fā)表于 2024-8-29 09:16
Y_G_G 發(fā)表于 2022-3-31 16:14
還在整這個???
STC8G壓根就不需要設(shè)置PxIE,我從來不管這個寄存器
我一直在用這個單片機(jī),最小系統(tǒng)掉電模 ...

請問有沒有遇到過加了外部設(shè)備后電流變大的,我有NMOS關(guān)了外部設(shè)備電源0V
ID:1116534 發(fā)表于 2024-8-29 09:07
ax6808 發(fā)表于 2022-3-26 18:47
最后實(shí)際3.3V時2μA左右就對了:掉電模式本身0.4μA,掉電喚醒定時器1.5μA,總共約2μA就對了。!
VDD為5 ...

ID:1034262 發(fā)表于 2022-8-6 17:04
睡眠時IO不耗電的處理方法:

1、對于設(shè)置為準(zhǔn)雙向口、推挽輸出、開漏輸出低電平的IO,IO本身不耗電,輸出電平與外部電路配合成外部電路不耗電的方式。

2、設(shè)置為高阻或開漏輸出高的IO,以下兩種方式任選一種:
    A、IO口接一個確定的高電平(電壓高于VDD-0.3)或低電平(電壓低于0.3V),否則耗電。
    B、將IO口對應(yīng)的數(shù)字輸入功能關(guān)閉(對于STC8系列、STC32系列)。
       比如關(guān)閉P1.0、P1.1的數(shù)字輸入:
         P_SW2 |= 0x80;   //允許操作擴(kuò)展寄存器
         P1IE   = ~0x03;  //將P1.0 P1.1的數(shù)字輸入功能關(guān)閉

3、睡眠前,禁止ADC(如果已經(jīng)允許的話),禁止模擬比較器(如果已經(jīng)允許的話)。

評分

參與人數(shù) 1黑幣 +5 收起 理由
ax6808 + 5

查看全部評分

ID:186901 發(fā)表于 2022-8-6 10:29
剛才測了一下,io默認(rèn)高阻進(jìn)掉電,15uA左右。然后io口全部設(shè)置準(zhǔn)雙向,進(jìn)入掉電模式,只有0.625uA
ID:975054 發(fā)表于 2022-4-5 02:23
Y_G_G 發(fā)表于 2022-4-1 23:14
參考這個電路,要進(jìn)行電池電壓的ADC時,把ADC_GND電平拉低
進(jìn)行ADC完了之后,把ADC_GND電平拉高
ADC這一塊 ...

感謝哥們回復(fù)。!
確實(shí)ADC外圍電路耗電還可優(yōu)化,只需多一個引腳資源,一路ADC就又可總體省下好多μA!!
對于極低功耗設(shè)計至關(guān)重要。
前期主要研究驗證MCU本身耗電問題去了!
再次感謝!再次感謝!
ID:401564 發(fā)表于 2022-4-1 23:14
ax6808 發(fā)表于 2022-4-1 22:52
外圍電路的問題:已嚴(yán)格審查;

ADC分壓電阻還耗電????你不會是直接就串聯(lián)兩個電阻來采樣吧?在電池供電中 ...

參考這個電路,要進(jìn)行電池電壓的ADC時,把ADC_GND電平拉低
進(jìn)行ADC完了之后,把ADC_GND電平拉高
ADC這一塊就是基本不耗電了,而且,這個電路不會影響ADC的精度


評分

參與人數(shù) 1黑幣 +12 收起 理由
ax6808 + 12 精益求精!

查看全部評分

ID:975054 發(fā)表于 2022-4-1 22:52
外圍電路的問題:已嚴(yán)格審查;

ADC分壓電阻還耗電????你不會是直接就串聯(lián)兩個電阻來采樣吧?在電池供電中怎么可能用這種采樣方法呢?
答:鋰電池電壓ADC檢測,滿電是4.2V,超過MCU的VDD3.3V,必須串聯(lián)電阻降壓到VDD以下檢測,我用2個330KΩ以上電阻串聯(lián),靜態(tài)電流<6.4μA,電阻大些還可降低。

端口只要初始化一次是我自己的操作,跟STC數(shù)據(jù)手冊更不更新是沒有沒有關(guān)系的,設(shè)定好之后就不想動了,也沒有必要動了;看好外圍電路,掉電操作之前把電平固定,就不會有耗電的了;
答:掉電操作之前把電平固定,就不會有耗電的了,這個確實(shí)對的!ADC、外接晶振等高阻模擬腳除外!

比如,IIC,掉電之前,SCL和SDA全部高電平,這不就得了?
答:對的!!
ID:401564 發(fā)表于 2022-4-1 11:32
是的,在我代碼中,不設(shè)置PxIE,但掉電電流一直都是可以在5uA以下的,如果你的做不到,要么是代碼有問題,要么是外圍電路的問題
你ADC分壓電阻還耗電????你不會是直接就串聯(lián)兩個電阻來采樣吧?在電池供電中怎么可能用這種采樣方法呢?
端口只要初始化一次是我自己的操作,跟STC數(shù)據(jù)手冊更不更新是沒有沒有關(guān)系的,設(shè)定好之后就不想動了,也沒有必要動了
看好外圍電路,掉電操作之前把電平固定,就不會有耗電的了
比如,IIC,掉電之前,SCL和SDA全部高電平,這不就得了?
ID:975054 發(fā)表于 2022-4-1 01:18
Y_G_G 發(fā)表于 2022-3-31 16:14
還在整這個???
STC8G壓根就不需要設(shè)置PxIE,我從來不管這個寄存器
我一直在用這個單片機(jī),最小系統(tǒng)掉電模 ...

最后回復(fù)一下:
你從來不設(shè)置PxIE,掉電模式電流一直是在5uA以下的?: 我之前有1路ADC平時低電平時就測不出來影響,但碰到高電平時就會多出16μA,后來仔細(xì)對比檢查2路才發(fā)現(xiàn)這個問題(另1路一上電就是高電平)。
ADC引腳也不需要重新設(shè)置,只要關(guān)閉ADC電源就行了:看到手冊有寫我才會去驗證,果然如此!
所有STC8G的端口設(shè)置只在程序初始化的時候設(shè)置一次而已:真不是這樣子的,STC手冊不斷更新中...呵呵,你懂的。
ID:975054 發(fā)表于 2022-4-1 01:07
Y_G_G 發(fā)表于 2022-3-31 16:14
還在整這個???
STC8G壓根就不需要設(shè)置PxIE,我從來不管這個寄存器
我一直在用這個單片機(jī),最小系統(tǒng)掉電模 ...

感謝回復(fù)!!!
未見你有過回復(fù),或許刪除了;
反正我就2個ADC、1個I2C、2個開關(guān)、4個控制腳、其他空腳:
目前做到:總16.2μA-LDO7μA-ADC分壓電阻6μA-I2C傳感器待機(jī)0.2μA≈3μA(STC8掉電時電流,萬用表校準(zhǔn)過)。
目前我的比較精確的實(shí)測數(shù)據(jù)事實(shí)就如此,都反復(fù)歸零驗證過的;

之前ADC轉(zhuǎn)換完就已經(jīng)關(guān)了ADC電源的(不然電流就更大了),反正目前掉電前若不不關(guān)閉數(shù)字輸入,就一定會每一路多16μA。

后來沒啥事,反正俺近期有的是時間,能省的電必須!反正目前的STC5最低約3μA(±0.5μA精度)我是做到了。待機(jī)時間延長3倍!!非?捎^!原來總約48μA,現(xiàn)在16.2μA(少2路ADC影響約2*16μA).其實(shí)還可省零點(diǎn)幾μA但沒什么實(shí)際意義了.呵呵!不如結(jié)案也罷!

ID:401564 發(fā)表于 2022-3-31 16:14
ax6808 發(fā)表于 2022-3-31 00:40
剛才最后測試驗證了:我的STC8G模塊,掉電前設(shè)置PxIE寄存器,每關(guān)閉一路ADC數(shù)字輸入通道,掉電后流還可進(jìn) ...

還在整這個???
STC8G壓根就不需要設(shè)置PxIE,我從來不管這個寄存器
我一直在用這個單片機(jī),最小系統(tǒng)掉電模式下.4.2V供電的待機(jī)電流就是3.5uA,可能是萬用表測量有誤差,但大概就是這個值左右
跟設(shè)置不設(shè)置PxIE沒有關(guān)系,從來都是默認(rèn)值
如果你的電路超過這個值了,那就是外圍其它電路在耗電,我?guī)讉月就回復(fù)過這個帖子了
我從來不設(shè)置PxIE,掉電模式電流一直是在5uA以下的
ADC引腳也不需要重新設(shè)置,只要關(guān)閉ADC電源就行了
所有STC8G的端口設(shè)置只在程序初始化的時候設(shè)置一次而已,待機(jī)電流一樣的能在5uA以下
ID:975054 發(fā)表于 2022-3-31 00:40
ax6808 發(fā)表于 2022-3-27 22:53
今天又測試了一下我的實(shí)際模塊STC8+硬件I2C電路板。VCC3.7V鋰電池供電,VDD LDO3.3V,TSSOP20封裝,3個腳為A ...

剛才最后測試驗證了:我的STC8G模塊,掉電前設(shè)置PxIE寄存器,每關(guān)閉一路ADC數(shù)字輸入通道,掉電后流還可進(jìn)一步減少15~17μA!  對于超低功耗產(chǎn)品設(shè)計,意義很大。
原來實(shí)測掉電后總約29.8μA,現(xiàn)在已降到16.2μA。ㄟ不知道有沒有其他油水,呵呵! 學(xué)無止境!)
ID:975054 發(fā)表于 2022-3-30 01:48
本帖最后由 ax6808 于 2022-3-30 21:55 編輯
ax6808 發(fā)表于 2022-3-26 18:37
最后實(shí)踐證明:
省電主要靠低壓MCU+掉電喚醒模式;掉電前關(guān)閉所有不必要的功能如ADC等等等等,所有I/O設(shè)置 ...

查到怎么"關(guān)閉數(shù)字輸入"了,有空實(shí)測一下究竟還有沒油水??  

STC8H的最新手冊(20211221版)說的較詳細(xì)(之前版本還漏了P4IE到P7IE等):
6.5.1電源控制寄存器( PCON)
PD:時鐘停振模式/掉電模式/停電模式控制位
0:無影響
1:單片機(jī)進(jìn)入時鐘停振模式/掉電模式/停電模式, CPU 以及全部外設(shè)均停止工作。喚醒后硬件自動
清零。( 注:時鐘停振模式下, CPU 和全部的外設(shè)均停止工作,但 SRAM 和 XRAM 中的數(shù)據(jù)是一直維持不變的)
9.1.2端口模式配置寄存器( PxM0, PxM1)
注意:當(dāng)有I/O口被選擇為ADC輸入通道時,必須設(shè)置PxM0/PxM1寄存器將I/O口模式設(shè)置為輸入模式。
另外如果MCU進(jìn)入掉電模式/時鐘停振模式后,仍需要使能ADC通道,則需要設(shè)置PxIE寄存器關(guān)閉數(shù)字輸入,才能保證不會有額外的耗電。
( 進(jìn)入掉電模式CPU以及全部外設(shè)均停止工作了,“仍需要使能ADC通道...“是什么意思???我還干脆ADC完就直接將ADC_POWER都關(guān)掉了。

9.1.7 端口數(shù)字信號輸入使能控制寄存器( PxIE)
數(shù)字信號輸入使能控制
0:禁止數(shù)字信號輸入。若 I/O 被當(dāng)作比較器輸入口、 ADC 輸入口、 觸摸按鍵輸入口或者為外部晶振接入腳等模擬口時,進(jìn)入時鐘停振模式前,必須設(shè)置為 0,否則會有額外的耗電。
1:使能數(shù)字信號輸入。若 I/O 被當(dāng)作數(shù)字口時,必須設(shè)置為 1,否 MCU 無法讀取外部端口的電平。
特別注意(新版手冊才有加注): 對于具有 RTC 功能的 MCU,當(dāng) RTC 的時鐘源選擇外部 32.768K 的晶振時,需要將晶振接入腳 P1.6 和 P1.7 的數(shù)字通道關(guān)閉,否則進(jìn)入 STOP 模式后會有額外的漏電。(將寄存器 P1IE的 bit6 和 bit7 都設(shè)置為 0 即可關(guān)閉 P1.6 和 P1.7 的數(shù)字通道)。
17.1.1 ADC控制寄存器( ADC_CONTR)
ADC_POWER: ADC 電源控制位
0:關(guān)閉 ADC 電源
1:打開 ADC 電源。
建議進(jìn)入空閑模式和掉電模式前將 ADC 電源關(guān)閉,以降低功耗 。

ADC_CHS[3:0]: ADC 模擬通道選擇位
(注意:被選擇為 ADC 輸入通道的 I/O 口,必須設(shè)置 PxM0/PxM1 寄存器將 I/O 口模式設(shè)置為高阻輸入模式。另外如果 MCU 進(jìn)入掉電模式/時鐘停振模式后,仍需要使能 ADC 通道,則需要設(shè)置PxIE 寄存器關(guān)閉數(shù)字輸入通道,以防止外部模擬輸入信號忽高忽低而產(chǎn)生額外的功耗)。


ID:975054 發(fā)表于 2022-3-27 23:04
關(guān)于STC8等單片機(jī)I/O口的準(zhǔn)雙向模式有關(guān)問題討論
1、準(zhǔn)雙向一般只能用于數(shù)字輸入輸出,輸入時為弱上拉狀態(tài),端口只有兩種狀態(tài):高或低:很好理解!


2、準(zhǔn)雙向口讀外部狀態(tài)前,要先鎖存為1,才能讀到外部正確的狀態(tài):不太理解!
(1) 什么叫鎖存為1?? 就是通俗的寫1吧?
我的開關(guān)直接接端口和地,之所以端口設(shè)為準(zhǔn)雙向并寫1(跟懸空腳的正確處理方法完全相同!。,判斷開關(guān)狀態(tài)(查詢非中斷)只用到“if某端口=0/1”就好,沒搞其他代碼,也沒有"等待兩個時鐘_nop_()",。是因為這樣既簡單可靠又省電,而且還省掉了外接上/下拉電阻。   若設(shè)置為“高阻輸入”去判斷按鍵狀態(tài),還得額外增加合適阻值的上拉、下拉或分壓電阻,STC內(nèi)部已有好幾種上拉電阻可用,不是自找麻煩么。
(2) 什么叫“讀取外部正確的狀態(tài)”??
只用于沒外接上/下拉電阻的按鍵或開關(guān)狀態(tài)之列的識別么?

如I2C外設(shè)的2腳連接及其讀寫,我感覺只設(shè)雙向就好,無需也不用寫1,實(shí)際我也沒寫1,也沒有"等待兩個時鐘_nop_()",讀寫都沒有發(fā)現(xiàn)問題,是因為I2C等外設(shè)的數(shù)據(jù)線上已經(jīng)有上拉電阻了么?

那么;下面例程中的“雙向口讀寫操作”中的讀部分,不知道究竟該怎么準(zhǔn)確應(yīng)用?P00 = 1讀取端口前先使能內(nèi)部弱上拉電阻還等待兩個時鐘?
P00 = 1; //讀取端口前先使能內(nèi)部弱上拉電阻
_nop_(); //等待兩個時鐘
_nop_(); //
CY = P00; //讀取端口狀態(tài)
...

(3)解釋的比較完整的(也只說了基本原理還是沒說到具體使用方面的點(diǎn)子上):

準(zhǔn)雙向口向端口寫1:就是向鎖存器寫1,也就是讓其口輸出FF。

為什么,是這樣的,給鎖存器寫1,那么鎖存器的反向端就輸出0,那么和它相接的MOS管也就在截止?fàn)顟B(tài),也就是呈高阻態(tài),這樣口上數(shù)據(jù)就會從讀引腳的三態(tài)緩沖器上正確的輸入,如果不寫1,那么鎖存器上次鎖存的可能為0,那么反向端有可能出現(xiàn)1,這樣和反向端相接的MOS管就倒通,也就是直接拉到地,那么不管你口上輸入什么信號都會拉成低電平,輸入就錯了。

雙向口與準(zhǔn)雙向口的區(qū)別主要是:

準(zhǔn)雙向口I/O口操作時做數(shù)據(jù)輸入時需要對其置1,否則若前一位為低電平,后一位輸入的電平為高則MOS管拉不起來導(dǎo)致出錯。而雙向口則不需要做此動作,因為雙向口有懸浮態(tài)。
準(zhǔn)雙向口只能有效的讀取0,而對1則是采用讀取非零的方式,就是讀入的時候要先向接口上寫1,然后再讀。真正的雙向口正如其名,就是真正的雙向io不需要任何預(yù)操作可直接讀入讀出。
ID:975054 發(fā)表于 2022-3-27 22:53
今天又測試了一下我的實(shí)際模塊STC8+硬件I2C電路板。VCC3.7V鋰電池供電,VDD LDO3.3V,TSSOP20封裝,3個腳為ADC高阻輸入,6個腳接I2C或控制腳及2個腳串口準(zhǔn)雙向,其余空腳設(shè)準(zhǔn)雙向?qū)?,4秒掉電喚醒一次...最終掉電后的電流也只做到29μA就再也下不來了(掉電前已關(guān)閉ADC、串口中斷,I/O口設(shè)為全高阻等等電流都不會更小了).理論上還可以降低掉電后的電流的???LDO有幾μA,I2C傳感器2腳本身極省電模式最多幾μ安有10K上拉電阻查詢模式。。。。
也不知道掉電期間還有什么內(nèi)部功能可以關(guān)閉進(jìn)一步省電。
ID:975054 發(fā)表于 2022-3-26 18:47
最后實(shí)際3.3V時2μA左右就對了:掉電模式本身0.4μA,掉電喚醒定時器1.5μA,總共約2μA就對了。!
VDD為5V時大很多!
我前面用的USB轉(zhuǎn)串口的3.7V電壓腳(本來有3.3V腳的,我把它跟VCC腳焊在一起了沒分開,而VCC腳只是5V串了2個二極管后約3.7V出來的)。
ID:975054 發(fā)表于 2022-3-26 18:40
Jiang_YY 發(fā)表于 2021-10-12 22:18
懸空的IO,要設(shè)置為輸出模式,使IO口的電平固定。如果設(shè)置為輸入模式,IO口懸空時電平會有很微小的變化, ...

不是的!

5. 特別注意:由于 STC8H 系列的所有 I/O(除了 ISP 下載口 P3.0/P3.1 外)在上電后都是高
阻輸入模式, I/O 外部電平不固定,此時如果 MCU 直接進(jìn)入掉電模式/停機(jī)模式,會導(dǎo)致
I/O 有額外的耗電,所有在 MCU 進(jìn)入掉電模式/停機(jī)模式前,必須將所有 I/O 口都根據(jù)實(shí)
際情況設(shè)置好 I/O 口的模式,對于所有沒有使用的外部懸空的 I/O 都需要設(shè)置為準(zhǔn)雙向口,
并固定輸出高電平。特別是部分管腳的芯片,由于芯片內(nèi)部有部分 I/O 口并沒有打線到外
部管腳,所以這些 I/O 也是處于懸空狀態(tài)的,這部分 I/O 也需要設(shè)置為準(zhǔn)雙向口,并固定
輸出高電平。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

ID:975054 發(fā)表于 2022-3-26 18:37
本帖最后由 ax6808 于 2022-3-27 22:39 編輯

最后實(shí)踐證明:
省電主要靠低壓MCU+掉電喚醒模式;掉電前關(guān)閉所有不必要的功能如ADC等等等等,所有I/O設(shè)置為準(zhǔn)雙向并寫1,喚醒后恢復(fù)原I/O口設(shè)置及有關(guān)功能,這樣最省電!。。。!

剛測試了一下STC8H1K08核心板無外圍電路,掉電喚醒前后電流變化:
記錄:1.裸板只有P12 led;PD前 VDD=5V,3.2mA, VDD=3.7V,2.6mA;
       2. PD前全設(shè)雙向置1(只P12=0排除LED影響),PD后設(shè)回:VDD=5V,0.37mA降為0.3mA;VDD=3.7V時效果明顯!!!,30μA降為2μA(2mA檔);
          5V不知道為什么多那么多,暫未經(jīng)過進(jìn)一步的測試考究。

另外,手冊描述注意:
當(dāng)有I/O口被選擇為ADC輸入通道時,必須設(shè)置PxM0/PxM1寄存器將I/O口模式設(shè)置為輸入模式。(這個好理解,必須的);
另外如果MCU進(jìn)入掉電模式/時鐘停振模式后,仍需要使能ADC通道,則需要設(shè)置PxIE寄存器關(guān)閉數(shù)字輸入,才能保證不會有額外的耗電;(如何關(guān)閉數(shù)字輸入????我只是PD前關(guān)閉了ADC功能也一樣省電吧?)

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

ID:624769 發(fā)表于 2021-10-12 22:32
18701931930 發(fā)表于 2021-10-12 20:38
謝謝!
按照你的方法,把所有IO設(shè)為準(zhǔn)雙向,然后設(shè)置掉電喚醒定時器并進(jìn)入掉電模式。
電流變成2.5ua   ...

配置 P0~P5 的IO模式,總共花不了 2us 的時間,既然目的是省電,僅僅切換IO模式就能達(dá)到目的,已經(jīng)算工作量很小的了,知足吧。

給你一個快速更改IO模式的頭文件,你好輕松點(diǎn)。
http://www.torrancerestoration.com/bbs/dpj-211950-1.html
ID:959346 發(fā)表于 2021-10-12 22:18
18701931930 發(fā)表于 2021-10-11 21:39
void LOW_Mode()
{
        P0M1=0xFF;  //高阻態(tài)

懸空的IO,要設(shè)置為輸出模式,使IO口的電平固定。如果設(shè)置為輸入模式,IO口懸空時電平會有很微小的變化,會導(dǎo)致uA級微小的電流,電流大小跟具體使用芯片的輸入電路有關(guān)。
ID:155507 發(fā)表于 2021-10-12 20:44
定時喚醒定時器功耗大約是1.8uA
ID:554500 發(fā)表于 2021-10-12 20:40
188610329 發(fā)表于 2021-10-11 23:16
嗯,至少比你一開始1.5mA小了很多了,

需要關(guān)的還有很多,太久了,也記不清了。

謝謝指導(dǎo)!
減小了將近一半,但不是很滿意 啊。
ID:401564 發(fā)表于 2021-10-12 00:13
進(jìn)入掉電模式之后,所有的端口會保持進(jìn)入掉電模式前一刻的狀態(tài),這一點(diǎn)很重要,也就是說,進(jìn)入掉電模式之前,端口的電平不會改變,而且片上所有的端口寄存器也都不會改變
解決這個問題實(shí)際上是很簡單的
單片機(jī)只留下電源的濾波電容,其實(shí)所有的外圍元件都不要,然后進(jìn)入掉電模式,電流如果是在正常待機(jī)電流范圍內(nèi),說明你的掉電模式代碼是沒有問題的,剩下就是外圍元件的問題了
外圍電路不同,進(jìn)入掉電模式之前的端口處理也會不同,有的要高電平,有的要低電平
至于ADC和比較器什么,并不是電流達(dá)到1.5mA的原因
ID:624769 發(fā)表于 2021-10-11 23:16
18701931930 發(fā)表于 2021-10-11 21:39
void LOW_Mode()
{
        P0M1=0xFF;  //高阻態(tài)

嗯,至少比你一開始1.5mA小了很多了,

需要關(guān)的還有很多,太久了,也記不清了。
好像比較器有個濾波要關(guān),比較器正負(fù)極都要切換到內(nèi)部, 然后有幾個和時鐘相關(guān)的分頻器要關(guān),ADC通道要切換到空,
你可以打開寄存器列表,對照著關(guān)看看。
ID:377210 發(fā)表于 2021-10-11 21:43
8H的沒有測過,8G系列的測過,掉電模式下電流用萬用表測確實(shí)只有0.4uA。你要關(guān)閉所有外設(shè),內(nèi)部定時器、AD電源、IO設(shè)置為高阻等,最簡單的就只焊接芯片,這樣一下就可以測出來是哪里問題了
ID:624769 發(fā)表于 2021-10-11 13:41
18701931930 發(fā)表于 2021-10-11 12:49
IO口默認(rèn)高阻,其他功能我也沒打開啊。

大多數(shù)IO默認(rèn)高阻,但是,不包括P3.0 P3.1, 所以要手動高阻。其他功能很多是默認(rèn)開,需要你手動關(guān)閉,在所有IO懸空,設(shè)為高阻,關(guān)閉各種可以關(guān)閉的模塊后,電流<50uA 是沒什么問題的,但是要達(dá)到他說的0.4uA是不可能的,只有他們實(shí)驗室才能出來這個結(jié)果。

LVD就很可笑了,能夠關(guān)閉的只是ELVD中斷, 但是 LVD低壓檢測根本沒有辦法關(guān),ISP燒錄器可以選擇LVD檢測閥值就是沒有關(guān)閉LVD檢測的選項。所以關(guān)閉LVD只是在STC內(nèi)部實(shí)驗室才存在。
STC的手冊,前后矛盾的地方有很多,你也不用盡信。
ID:624769 發(fā)表于 2021-10-11 12:22
首先, 掉電模式的 0.4uA,只是指這么模式,消耗的電流是0.4uA(還是3.3V的前提),而不是說在這個模式下,整個單片機(jī)的電流只有0.4uA,換個說法,你要達(dá)到1uA以下這個電流,需要滿足很多條件:

首先,供電電壓3.3V, 其次所有的IO都切換到高阻模式(包括P3.0,3.1),然后關(guān)閉所有中斷,關(guān)閉所有定時器,關(guān)閉所有比較器,以及其他各種檢測用模塊,等等。而比如低壓檢測模塊會消耗10uA電流,找遍整本手冊你都找不到任何可以關(guān)閉他的地方,即使不開低壓中斷,LVDF標(biāo)志始終會動作。所以,看過就看過了,別覺得可以達(dá)到就好了。

ID:161164 發(fā)表于 2021-10-11 10:21
本帖最后由 lkc8210 于 2021-10-11 10:23 編輯

我試過把STC15的IO 設(shè)為高阻然后進(jìn)入掉電
也發(fā)現(xiàn)還有幾毫安
然后把IO設(shè)為準(zhǔn)雙向再進(jìn)入掉電
就能實(shí)現(xiàn)幾微安
你可以從這方向試一下


ID:213173 發(fā)表于 2021-10-11 10:06
掉電模式電流是指關(guān)閉芯片所有輸出和內(nèi)置外設(shè)的電流。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表