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

一個低功耗應用的案例分析

發布者:平安守護最新更新時間:2024-06-26 來源: elecfans關鍵字:STM32  MDK5 手機看文章 掃描二維碼
隨時隨地手機看文章

???某STM32用戶反饋,他使用STM32L031芯片開發產品遇到低功耗異常的問題。

基本軟硬件及開發環境如下:

硬件:STM32L031、外部晶振32.768

軟件:STM3CUBE、MDK5、HAL庫

他在產品中用到了STOP低功耗模式。在讓芯片進入STOP之前,先關閉了ADC外設。

代碼是這樣的:

HAL_ADC_DeInit?(&hadc);

HAL_PWR_EnterSTOPMode(??PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);

他發現按照上述操作進入STOP模式后的功耗,比開機時不開啟ADC模塊時的功耗要大,而且發現在進STOP之前,有沒有HAL_ADC_DeInit()這一句,對功耗沒有任何影響。

稍微整理下,現在的具體情況是這樣的:

芯片復位后,不初始化ADC外設、不啟用ADC相關功能,進stop后芯片功耗為2.6uA。

如果復位后初始化ADC,進入stop之前做了HAL_ADC_DeInit(&hadc)操作,功耗則為18uA。客戶好奇的是,他認為執行了HAL_ADC_DeInit()命令行,也就相當于關閉了ADC外設,進入STOP模式后功耗也應該是2.6左右。事實上差別怎么這么大呢?

難道HAL_ADC_DeInit()沒有關閉ADC外設的作用?如果這樣,如何在進STOP前關閉ADC外設呢?

其實,HAL_ADC_DeInit(&hadc)的功能只是將ADC模塊本身及相關寄存器恢復成復位初狀態下的默認值,并不是用來關閉ADC外設模塊的。如果使用STM32庫函數的話,我們可以調用下面函數關閉ADC外設時鐘以停止其功能運行。

__HAL_RCC_ADC1_CLK_DISABLE() ;

可是,當客戶在進STOP前將HAL_ADC_DeInit(&hadc)換成__HAL_RCC_ADC1_CLK_DISABLE()后,發現功耗并無明顯變化,依舊是18uA左右。那是怎么回事呢?

建議客戶在讓芯片進入STOP前確保沒有其它浮空腳存在或可能產生漏電流地方,做各個管腳的硬件確認。經過檢查,客戶在應用線路上并沒有發現什么可疑的地方。

經過進一步地溝通了解,客戶使用ADC模塊并未對外部信號進行采樣,只是對兩個內部信號進行采樣。即對內部溫度和內部的參考基準電壓進行采樣轉換。

現在的情況是,只要芯片復位后不做任何有關ADC的初始化,當然也包括不對上述兩個內部信號的采樣轉換做使能配置,此時功耗就能相對明顯地降下去。難道這個功耗降不下去跟開啟這兩個內部信號的AD轉換有關?

循著這個思路,進一步查看STM32L0的參考手冊有關內部溫度傳感器和內部基準參考電壓的章節。我們可以發現要對這兩個內部信號進行AD采樣的話,有專門的針對這兩個模塊及對應通道的?開啟使能操作,換句話說,這兩個內部模塊并不屬于ADC外設模塊。當開啟這兩個模塊后,簡單地關閉ADC外設是沒法對二者進行關閉的。

結合庫代碼我們也可以看到針對這兩個內部信號的使能指令,即下圖中紅色圓圈圈出來的代碼。

研究到這里,基本可以大致估測到可能是因為開啟了這兩個內部模塊后,帶來了額外的功耗。客戶在讓芯片進STOP之前,即使關閉了ADC外設時鐘,如果沒有進一步關閉這兩個地方,二者產生的功耗依然存在。

于是,建議客戶在讓芯片進STOP之前,除了關閉ADC外設時鐘外,將開啟過的內部溫度傳感器通道和內部參考電壓通道實施關閉操作。即讓客戶運行如下兩行代碼:

ADC->CCR &=(~ADC_CCR_TSEN); // Turn Off TemperatureChannel

ADC->CCR &=(~ADC_CCR_VREFEN); // Turn Off VrefintChannel

客戶在進STOP前添加上面兩行代碼后,STOP模式下的功耗就正常了。顯然,當開啟內部溫度傳感器和內部參考電壓通道后,會增加些功耗。它們的開啟和關閉是單獨操作的,這點需注意。

當我們在調試過程中遇到類似問題時先不要著急,盡量結合手冊和庫代碼一步步找原因,或許很快可以撥云見日。


關鍵字:STM32  MDK5 引用地址:一個低功耗應用的案例分析

上一篇:指針式電子鐘與萬年歷設計方案
下一篇:概述了如何在SDRAM PCB應用設計中改善輻射干擾問題

推薦閱讀最新更新時間:2025-06-07 23:36

從零實現STM32的RT-Thread的RTOS系統
1 準備好開發環境,Keil IDE 2 基于您的STM32F103芯片的開發板實現簡單的工程,如串口打印和LED亮燈即可。 本經驗使用的工程,加載的是STM32的庫版本為V3.0.0。 3 下載rt-thread代碼庫 ①正常情況下可以通過Keil的Pack Installer下載rt-thread代碼庫,但是由于國內網絡原因,鏈接不了Keil的官網庫。因此通過②方式下載更能理解創建工程的過程。 ②進入https://www.rt-thread.org/page/download.html官網下載官方最新的庫,此實驗工程采用極簡版硬實時內核即可 4 下載庫rt-thread-3.1.3 注
[單片機]
STM32電源框圖解析(VDD、VSS、VDDA、VSSA、VREF+、VREF-、VBAT等的區別)
STM32的工作電壓(VDD )為2.0~3.6V,通過內置的電壓調節器提供所需的1.8V電源,當主電源VDD 掉電后,通過VBAT 腳為實時時鐘(RTC)和備份寄存器提供電源(下圖為STM32F1**系列電源框架圖,STM32基本大同小異)。 1、名詞解析 可以看到上圖有VDD、VSS、VDDA、VSSA、VREF+等標識,這些是什么意思呢?有什么特點呢?如何看懂STM32系統的電源框架圖呢? 首先對名詞進行解析,如下所示: VCC電路的供電正電壓VDDD芯片的工作數字正電壓 GND電路的供電負電壓VSSD芯片的工作數字正電壓 VDD芯片的工作正電壓VREF+ADC基準參考正電壓 VSS芯片的工作負電壓VREF-ADC基
[單片機]
GD32F103移植STM32的程序定時器開關
GD32F103移植STM32程序時,程序中有一段需要關閉定時器來保護變量不被修改,如下: TIM_Cmd( TIM4, DISABLE ); yen += coinBuf ; coinBuf =0; TIM_Cmd( TIM4, ENABLE ); 在STM32上運行沒有問題,但放到GD32上運行不了,定時器起不來。需要改成如下關閉中斷。 TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); yen += coinBuf ; coinBuf =0; TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
[單片機]
STM32實現MPU6050原始數據的讀取
最近項目組在做自主導航的小車,需要讀取底盤的姿態,所以準備往上面加mpu6050,于是整理了這樣的文檔供以后學習,程序是在正點原子的庫上更改的。 1.了解MPU6050 MPU-60x0 是全球首例 9 軸運動處理傳感器。它集成了 3 軸MEMS陀螺儀,3 軸MEMS加速度計,以及一個可擴展的數字運動處理器 DMP(Digital Motion Processor)。 MPU-60x0 對陀螺儀和加速度計分別用了三個 16 位的 ADC,將其測量的模擬量轉化為可輸出的數字量。為了精確跟蹤快速和慢速的運動,傳感器的測量范圍都是用戶可控的,陀螺儀可測范圍為 ±250,±500,±1000,±2000°/秒(dps),加速度計可測范圍
[單片機]
STM32啟動文件選擇說明
startup_stm32f10x_cl.s 互聯型的器件,STM32F105xx,STM32F107xx startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_hd_vl.s 大容量的STM32F100xx startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx startup_stm32f10x_ld_vl.s 小容量的STM32F100xx startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM3
[單片機]
Stm32使用Usart代碼例子(輪詢、中斷、DMA)
stm32使用庫函數編寫USART還是很方便的,現在轉幾個例子: /*************************************** 轉載請注明出處:tedeum.iteye.com ****************************************/ 首先是不使用中斷的方法使用usart1,管腳pa9,pa10,此方法已在f3discovery上驗證通過,來源:https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunitie
[單片機]
STM32單片機如何處理QT上位機串口中發過來的數據?
首先,在使用STM32單片機處理QT上位機串口中發過來的數據前,需要了解一些基礎知識。 1. 串口通信 串口通信指的是通過串口進行數據傳輸的通信方式。串口通信是一種簡單、穩定、可靠的通信方式,其原理是通過串口發送端口將數據轉換為串行數據,并將其發送到接收端口,接收端口將接收到的串行數據還原成原始數據。 在STM32單片機和QT上位機之間進行串口通信時,需要確定好使用的波特率、數據位、停止位和校驗位等參數,以保證數據傳輸的正確性。 2. 數據格式 在STM32單片機中處理QT上位機串口中發過來的數據時,需要了解數據格式。一般情況下,串口收發數據的格式是由數據幀構成。數據幀一般包括開始標志、數據段、校驗段和結束標志等部分。 開始標志用
[單片機]
STM32芯片簡介以及功能特點和其優異性
STM32與單片機 單片機(Microcontrollers)是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統。由于8位單片機由于內部構造簡單,體積小,成本低廉,在一些較簡單的控制器中應用很廣。常見的8位單片機主要有:Intel的51系列,Atmel的AVR系統,Microchip公司的PIC系列,TI的MSP430系列等。而STM32是一種功能比較強大的32位的單片機。它和8位單片機最大的不
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 遵义县| 深圳市| 韶山市| 万全县| 曲水县| 乌鲁木齐市| 静宁县| 泗洪县| 芦溪县| 义马市| 百色市| 弥渡县| 若尔盖县| 长海县| 横山县| 涿鹿县| 江阴市| 阿拉尔市| 中超| 江永县| 德阳市| 佛山市| 苏尼特右旗| 涞源县| 马尔康县| 石渠县| 天长市| 麦盖提县| 衡南县| 陵水| 永新县| 五台县| 桐梓县| 灵石县| 濮阳市| 宿迁市| 宜都市| 南充市| 南安市| 南江县| 杭锦旗|