娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

功耗測評 | STM32F103C8T6

發布者:自在逍遙最新更新時間:2025-03-07 來源: jianshu關鍵字:STM32F103C8T6 手機看文章 掃描二維碼
隨時隨地手機看文章

相關應用

STM32F103C8T6 MCU越來越廣泛的應用在生產生活的各個領域,外接豐富的傳感器、功能模塊、通信模塊、顯示存儲等可以形成各種可樣的產品項目應用。對于功耗要求比較高的產品,一般會選擇STM32L系列的MCU,但是從功耗的評測角度,邏輯上是基本相似的。


在很多應用場合中都對電子設備的功耗要求非常苛刻,如某些傳感器信息采集設備,僅靠小型的電池提供電源,要求工作長達數年之久,且期間不需要任何維護。由于智能穿戴設備的小型化要求,電池體積不能太大導致容量也比較小,所以也很有必要從控制功耗入手,提高設備的續航時間。其實,只要是涉及到便攜式的產品,都免不了要使用電池作為電源,否則,如果還是需要接一個插頭使用市電來供電的話,那就無法稱之為便攜式了,比如手機、運動手環、藍牙耳機、智能手表等都是類似的。所以控制功耗和提高產品的續航時間就顯得尤為重要。


目前針對STM32F103C8T6等系列單片機而言,比較常用的低功耗模式是停止模式和待機模式。


當使用待機模式時,在實際應用中,通常會有一個開關機的按鍵(PA0),如果用戶按下按鍵的話,就會開機或者關機,開機對應的就是喚醒,而關機對應的就是待機(類似于手機的開關機按鍵)。在此過程中,電池會一直給單片機的3.3V電源供電,也就是說,單片機一直都是有電的,但是它的所有外設以及時鐘都處于關閉狀態,之所以還要給單片機供電,只是為了在用戶按下按鍵時檢測PA0的上升沿而已,如果不給單片機供電的話,那么還怎么檢測呢?檢測不了。


當使用停止模式時,我們先看一個問題:理論上待機模式的功耗遠比停止模式要低,為什么還要選擇停止模式呢?通常是這樣的,一個便攜式的系統,除了考慮按鍵開關機外,還需要考慮給電池充電的時候往往需要顯示一些充電的信息(現在的手機充電就是這樣的),如果是在開機狀態下充電的話完全沒有問題。但是,如果是在關機狀態下充電呢?肯定就需要單片機能夠自己喚醒自己(不需要用戶按下PA0),然后才有可能顯示充電的信息(比如手機關機狀態下接通電源后,可以自動顯示充電的動畫)。


是否可以實現不按下PA0就實現喚醒功能嗎?當然可以,只需要在硬件上做一些改動即可。


比如,將充電口的電壓降壓后跟PA0相連,這樣只要充電口在充電,PA0必定會出現一個從低到高的脈沖,這樣就可以喚醒了。但這種情況下,軟件層面上又不好區分PA0的上升沿是由于充電造成的,還是由于用戶按下按鍵造成的。所以,這個時候就需要考慮選擇停止模式了,開關機按鍵接到一個引腳,充電口接到另外一個引腳,兩個引腳都配置為外部中斷,兩個引腳也都可以喚醒單片機,分開了不同的信號電平,這樣子,在軟件上就可以很容易地判斷。


實際上也有另一種改進方式,就是在硬件上實現一個脈沖電路,可以用一個簡單的RC延時電路,就是說充電口的電平再經過一個RC電路以后,出來的就不會一直是高電平,而只是一個脈沖了,再把這個脈沖信號接到PA0引腳,這個時候插入充電口和按下PA0就都會在PA0上出現一個脈沖了。軟件上,可以利用長按開機,再長按關機的機制來進行判別,如果PA0僅僅只是出現一個上升沿并且檢測到充電芯片正在充電,此時就是充電口插入了,喚醒單片機且顯示充電效果即可。


工作模式

我們先了解一下STM32F103C8T6單片機的幾種工作模式。按功耗從高到低排列,STM32F103C8T6具有運行(Run)、睡眠(Sleep)、停止(Stop)和待機(Standby)四種工作模式。在這四種模式下,后面三種是當STM32F103C8T6的內核不在需要運行時,可以選擇的幾種模式,當單片機在工作時,則是運行模式。


? 運行模式

這里我們不多說運行模式,因為當STM32F103C8T6在上電復位后,即處于了運行模式,這種情況下,單片機自動運行程序。只由當我們不需要內核也就是所謂的Cortex-M3繼續運行時,我們就可以選擇讓芯片進入睡眠、停止和待機這三種模式,來讓芯片降低功耗。功耗的降低會減少芯片的發熱以及能夠保證可靠性增加。




? 睡眠模式

當STM32F103C8T6在運行過程中,內核也就是所謂的Cortex-M3遇到WFE(等待中斷)或者WFI(等待事件)指令時會停止內部時鐘,停止程序執行。盡管Cortex-M3停止工作,但是其外設仍在繼續工作,直到某個外設產生事件或者中斷時,內核將會被喚醒,退出睡眠模式。在睡眠模式中,僅關閉了內核時鐘,內核停止運行,但其片上外設,Cortex-M3核心的外設全都還照常運行,在軟件上表現為不再執行新的代碼。這個狀態會保留睡眠前的內核寄存器、內存的數據。喚醒后 ,若由中斷喚醒,先進入中斷,退出中斷服務程序后,接著執行 WFI指令后的程序;若由事件喚醒,直接接著執行 WFE 后的程序。基本上無喚醒延遲。



這里補充說明一件事:Cortex-M3是一個32位的內核,在傳統的單片機領域中,有一些不同于通用32位CPU應用的要求。在工控領域,用戶要求具有更快的中斷速度,Cortex-M3采用了Tail-Chaining中斷技術,完全基于硬件進行中斷處理,最多可減少12個時鐘周期數,在實際應用中可減少70%中斷。

? 停機模式

若用戶將Cortex-M3處理器的電源控制寄存器(Cortex Power Control Register,Cortex_PCR)中的SLEEPDEEP位置位,然后將STM32F103C8T6電源控制寄存器(STM32 Power Control Register.STM32 PCR)中的PDDS(Power Down Deep Sleep)位清除,就完成了STM32F103C8T6停機模式的設置。

當停機模式設置完畢后,CPU一旦遇到WFI或WFE指令就會停止工作,HSI和HSE也進人關閉狀態。但Flash和SRAM將會繼續保持電源供應,所以此時STM32F103C8T6的所有工作狀態仍然是保留著的。和睡眠模式一樣,停機模式也可以通過外設中斷喚醒,然面在停機模式下,除了外部中斷控制單元,所有設備的時鐘都被禁止了,只能通過在GPIO引腳上產生電平邊沿觸發外部中斷的方式來將STM32從停機狀態下喚醒。

需要注意的是,外部中斷通道除了與GPIO連接,還和RTC時鐘的報警事件連接,加之RTC的計數時鐘并非來源于STM32F103C8T6的設備總線(而是直接來自于LSI或LSE),因此還可以使用RTC模塊實現定時將STM32F103C8T6從停機狀態中喚醒。

在停止模式中,相對于休眠模式進一步關閉了其它所有的時鐘,于是所有的外設都停止了工作,但由于其 1.2V 區域的部分電源沒有關閉,還保留了內核的寄存器、內存的信息,所以從停止模式喚醒,并重新開啟時鐘后,還可以從上次停止處繼續執行代碼。喚醒后,若由中斷喚醒,先進入中斷,退出中斷服務程序后,接著執行 WFI指令后的程序;若由事件喚醒,直接接著執行 WFE 后的程序。停止模式喚醒后,STM32F103C8T6會使用 HSI(HSI為8M)作為系統時鐘。所以,有必要在喚醒以后,在程序上重新配置系統時鐘,將時鐘切換回HSE。喚醒延遲基本上是 HSI振蕩器的啟動時間,若調壓器工作在低功耗模式,還需要加上調壓器從低功耗切換至正常模式下的時間,若FLASH工作在掉電模式,還需要加上 FLASH 從掉電模式喚醒的時間。

順便提一下,HSI振蕩器與HSE的區別就在于一個是內部的時鐘源,一個是外部的時鐘源。HSI 時鐘信號由內部16 MHz RC 振蕩器生成,可直接用作系統時鐘,或者用作PLL 輸入。HSI RC 振蕩器的優點是成本較低(無需使用外部組件)。此外,其啟動速度也要比HSE 晶振塊,但即使校準后,其精度也不及外部晶振或陶瓷諧振器。


? 待機模式

若將STM32F103C8T6電源控制寄存器中的SLEEP位進行置位,再將STM32_PCR中的PDDS位進行置位,這樣,單片機則進入待機模式。

若要喚醒待機模式,有多種方式進行喚醒,分別位:RTC的鬧鐘事件、NRST的外部引腳復位、獨立看門狗(IWDG)所產生的復位信號,以及PA0引腳上所產生的一個上升沿,但是若要是要該引腳所產生的上升沿來喚醒單片機,則必須事先設置為喚醒引腳功能。待機模式是STM32F103C8T6的最低功耗模式。當進入待機模式后,所有的SRAM數據、Cortex-M3處理器的寄存器和STM32F103C8T6的寄存器內容都將會被清零,效果等同于硬件復位。

功耗測評

首先,為了保持評測的準確性,我們先用一個電阻負載來驗證一下設備測試精度,電阻是0.1%精度的100K電阻,所以電阻的阻值誤差我們先可以忽略。

打開功耗分析儀電源mPower1203測試設備,設置3.3V輸出??梢钥吹剑谂涮椎腅-sight工具上顯示了流過電阻的電流值。理論上是33uA,我們實測的值和理論值相差幾十個nA,所以基本上設備的電流精度可以達到千分之一以內的精度。


   現在開始評測STM32F103C8T6單片機的幾種模式下的休眠功耗。


? 睡眠模式

我們從STM32F103C8T6單片機的規格書中,可以看到使用外部時鐘,在主頻為72MHz和48MHz,所有外設都關閉的情況下,功耗典型值約為5.5mA和3.9mA,我們圍繞這兩個值進行測試評估。



經測試和波形分析:

圖1:主頻為72MHz@關閉所有外設,睡眠功耗為5.889mA;

圖2:主頻為48MHz@關閉所有外設,睡眠功耗為4.175mA;


測試數據基本符合規格書中的典型值數據。從這個數據中我們可以了解到,當一個產品需要進行優化功耗時,在某些場合下,可以通過降低主頻的方式來得到目標功耗。


? 停機模式

從STM32F103C8T6單片機的規格書中,可以看到,供電輸出3.3V,停機模式下有兩種情況。一種是調壓器處于運行模式,對應的功耗典型值為24uA;另一種是調壓器處于低功耗模式,對應的功耗典型值為14uA。我們圍繞這兩個值進行測試評估。


經測試和波形分析:

圖3:調壓器處于運行模式,停機功耗為23.042uA;

圖4:調壓器處于低功耗模式,停機功耗為12.857uA;


測試數據基本符合規格書中的典型值數據。在配置STM32F103C8T6單片機進入停機模式時,特別需要注意一點,就是外部接8M晶振的管腳需要配置成普通GPIO,且也需要配置成模擬輸入的方式。


? 待機模式

從STM32F103C8T6單片機的規格書中,可以看到,供電輸出3.3V,待機模式下有三種情況。這三種情況分別對應的功耗的典型值約為3.4uA、3.2uA以及2uA。我們圍繞這三個值進行測試評估。


經測試和波形分析:

圖5:內部RC和獨立看門狗均開啟狀態,待機功耗為2.912uA;

圖6:內部RC開啟,獨立看門狗關閉狀態,待機功耗為2.702uA;

圖7:內部RC和獨立看門狗均關閉狀態,且低速振蕩器和RTC均關閉,待機功耗為1.62uA;


測試數據基本符合規格書中的典型值數據。

最后,需要提一下,在我們進行功耗評測的時候,在和規格書進行對比時,需要了解典型值的含義。一般情況下,規格書上的值都是相對比較保守的,而且典型值是表示正態分布中一個1σ的值,也就是說68.27%的概率是落在典型值左右。換句話說,一個100個測試樣本,68.27個樣本的測試數據是滿足典型值的。


mPower1203是一款穩壓直流電源用于低功耗分析,有著Ksight N6705的精度,卻比Power monitor更小巧便攜。電腦端使用配套的E-sight工具可以實時分析波形,具有電源供電和電流表雙模式。

支持linux和windows系統二次開發API接口(提供C#,python,VB,C++等例程),方便工廠和測試環境集成到現有的工具和設備中進行自動化測試。


關鍵字:STM32F103C8T6 引用地址:功耗測評 | STM32F103C8T6

上一篇:RTOS Demo Startup.s
下一篇:NVIC_IRQChannelPreemptionPriority、NVIC_IRQChannelSubPriority

推薦閱讀最新更新時間:2025-05-15 05:10

基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口
在本教程中,我將介紹如何將DHT11濕度和溫度傳感器與基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口。DHT11傳感器的值由STM32讀取,并顯示在I2C LCD顯示屏上。 介紹 傳感器是很小的設備,可以彌合原始模擬世界與MCU的數字世界之間的鴻溝。傳感器可以非常簡單,例如非常著名的LM35溫度傳感器,也可以是一些復雜的數學單元,例如MPU6050陀螺儀和加速度計組合傳感器。 簡單或復雜,傳感器是許多消費,汽車,機器人和工業應用中的關鍵部分,如果不集成適當的傳感器就無法完成某些應用。 讓我們從工業應用程序擴展到日常項目和業余愛好者。氣象站是一個非常普遍且受歡迎的項目,無論是物聯網
[單片機]
stm32f103c8t6最小系統AD工程,封裝
7*7厘米大小,穩壓用的LM1117s,已經打印焊接過了,可以用。兩邊的是焊盤不能焊排針。因為是新手畫的板子比較大。反正能用,LED燈的焊盤稍微有點問題,焊盤距離有點大,但也能焊上。其他封裝都沒什么問題。當初畫的時候找封裝找了好久,在這里發一下,看到的直接用就好了。
[單片機]
<font color='red'>stm32f103c8t6</font>最小系統AD工程,封裝
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 霍山县| 巴彦淖尔市| 安仁县| 扎赉特旗| 洪湖市| 五河县| 久治县| 黄龙县| 宁强县| 大方县| 万荣县| 洞头县| 泰兴市| 安义县| 济源市| 南涧| 甘孜| 昌黎县| 门源| 宁蒗| 龙川县| 大埔县| 周口市| 龙海市| 临汾市| 阳原县| 瑞丽市| 合川市| 会泽县| 璧山县| 呼伦贝尔市| 永靖县| 田林县| 玉山县| 乌兰浩特市| 克拉玛依市| 长武县| 遂平县| 麦盖提县| 开原市| 措勤县|