新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32低功耗實驗總結

        STM32低功耗實驗總結

        作者: 時間:2016-11-25 來源:網絡 收藏
        STM32低功耗實驗總結
        1、首先回答一個問題,STM32能不能做低功耗
        回答是肯定的,這個是有數據支持的,我測試的STM32101CB,FLASH:128K,RAM:16K并且RTC工作的情況下,測試到的功耗為16uA應該說還是相當不錯的。
        2、STM32低功耗有哪些需要注意的地方?
        一開始我測試到STM32為16uA的時候,還是非常高興的,以為真的可以做為我的應用,我的應用是讓MCU定時醒來干活,干一會就睡覺,可能干活的時間就幾十個毫秒。可是后來發現有些問題(工作在STOP模式):
        1)時鐘問題:STM32被喚醒以后的時鐘自動切換到內部HIS RC振蕩器,大家都是知道的,RC振蕩器的精度是不高的。而且,睡覺前對于時鐘的設置都是恢復到復位狀態,只是時鐘這個地方復位,其他的沒有。這也會帶來一個問題,可能你睡覺前使用的是內部時鐘,可是睡覺后,時鐘卻變了,帶來的問題就是UART和定時器。或許你想不使用PLL,就是8M,這樣醒來后的時鐘HIS也是8M,這樣雖然在時鐘上沒有差別了,但是時鐘卻不穩定了。UART波特率肯定不能太高,否則通信會有問題。
        2)醒來時間:這個問題也是個非常大的問題,datasheet上給出的醒來時間是7us,這個可能真的不假,但是醒來,不能馬上干_你的活,為什么。初始化IO,你可能問,我不初始化不行嗎,回答應該是否定的。因為,如果你想使用低功耗的話,睡覺前IO口都應該設置為模擬輸入,這樣才能達到datasheet上的14uA,但是這樣也帶來一個問題,那就是初始化IO,醒來必須要初始化IO。如果你還想把時鐘切換到外部時鐘,耗時會更加長,接近200ms,因為STM32會等待外部時鐘穩定后才能工作,然后還要在重新初始化所有IO,這個非常的耗時。可能我只需要醒來10ms,但是這些活干完就需要100ms。
        3)RTC喚醒:RTC這個也是個問題,為什么?大家需要注意的是RTC只能使用報警才能喚醒MCU,秒中斷是不可以喚醒的。并且報警中斷必須不停的設置,設置一次只生效一次,中斷完了,還需要設置下次中斷的時間。并且還有個問題,報警中斷必須等待到秒中斷到了之后才能設置,也就是正好秒寄存器更新了一次的時候設置,這就帶來一個問題,等待秒中斷。如果睡前還想再能被報警喚醒的話必須重新設置報警中斷,而且設置報警中斷的時候需要等到秒中斷才能設置新的值。這個等待的時間是不定的。可能會幾百個毫秒。說以要空空的耗費幾百個毫秒等到秒中斷標志來設置報警中斷。可能我的MCU只需要執行10ms就需要睡覺了。還是要空空的耗費掉幾百個毫秒
        總結:在使用的過程中發現的問題,我都在上面說明了,我覺得STM32的低功耗太假,雖然在睡眠的時候性能不錯,但是醒來,和進入睡眠的設置太麻煩,耗時太多,這是個弊端,我覺得MSP430估計是做的最好的了,即使是AVR也比他好點,沒有那么麻煩。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 苍山县| 旬邑县| 凤台县| 舞阳县| 南平市| 克什克腾旗| 宁夏| 玛沁县| 阿瓦提县| 邵武市| 讷河市| 孙吴县| 蛟河市| 庐江县| 乌兰察布市| 毕节市| 德兴市| 塔河县| 苏尼特左旗| 泰来县| 聂荣县| 大冶市| 建平县| 宜宾市| 肥城市| 北川| 石门县| 静安区| 龙门县| 肇州县| 江油市| 河间市| 肥西县| 江安县| 裕民县| 隆化县| 盐山县| 中西区| 商城县| 瑞昌市| 安阳市|