RM新时代网站-首页

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

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

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

STM8S_ 006_AWU自動(dòng)喚醒

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-20 10:12 ? 次閱讀

AWU是STM32中沒(méi)有的功能

寫在前面 Ⅰ

在某些低功耗的設(shè)備中,需要設(shè)備進(jìn)入低功耗,且又需要間隔一定時(shí)間喚醒MCU,就需要有這么一個(gè)定時(shí)“AWU自動(dòng)喚醒”的功能。

在STM32中實(shí)現(xiàn)上面功能,常見的操作就是使用RTC來(lái)實(shí)現(xiàn)。但RTC每次進(jìn)入低功耗之前都需要配置一下RTC,而STM8獨(dú)特的AWU功能只需要簡(jiǎn)單的初始化配置即可。

為方便大家閱讀,本文內(nèi)容已經(jīng)整理成PDF文件:

http://pan.baidu.com/s/1i5uWhJR

AWU基礎(chǔ)知識(shí) Ⅱ

AWU:Auto WakeUp,即自動(dòng)喚醒

AWU是用來(lái)當(dāng)MCU進(jìn)入低功耗的活躍停機(jī)(Active Halt)模式時(shí)提供一個(gè)內(nèi)部的喚醒時(shí)間基準(zhǔn)。該時(shí)間基準(zhǔn)的時(shí)鐘是由內(nèi)部的低速RC振蕩器時(shí)鐘(LSI)或者通過(guò)預(yù)分頻的HSE晶振時(shí)鐘來(lái)提供的。

LSI低速內(nèi)部時(shí)鐘測(cè)量

在使用LSI低速內(nèi)部時(shí)鐘時(shí),為了確保最好的精度,它的頻率可以通過(guò)TIM3的輸入捕捉1來(lái)測(cè)定。

AWU操作

為了使用AWU功能,按順序執(zhí)行如下步驟:

1. 使用AWU_CSR寄存器的MSR位和TIM1/3的輸入捕捉通道1來(lái)檢測(cè)LS的時(shí)鐘頻率(對(duì)精度要求不高,該步驟可省略);

2. 通過(guò)寫AWU_APR的APR[5:0]位來(lái)定義適當(dāng)?shù)念A(yù)分頻值;

3. 通過(guò)寫AWU_TBR的AWUTB[3:0]來(lái)選擇需要的自動(dòng)喚醒延時(shí);

4. 置位AWU_CSR 的AWUEN位;

5. 執(zhí)行HALT指令。

提示:

計(jì)數(shù)器僅僅在HALT指令之后MCU進(jìn)入活躍停機(jī)模式時(shí)才開始計(jì)數(shù)(請(qǐng)參考電源管理的活躍停機(jī)模式章節(jié)), AWU中斷同時(shí)被使能。

預(yù)分頻計(jì)數(shù)器僅僅在APR[5:0]值不同于它的復(fù)位值0x3F值時(shí)才開始計(jì)數(shù)。

LSI低速內(nèi)部時(shí)鐘頻率檢測(cè)

在經(jīng)過(guò)出廠校驗(yàn)后,在全溫度范圍內(nèi)低速內(nèi)部RC(LSI)振蕩器的頻率離散性是128 kHz +/-12.5%。為了獲得精確的AWU時(shí)間間隔或者蜂鳴器輸出,必須精確測(cè)量LSI頻率。本文提供的兩個(gè)工程代碼中有一個(gè)是校正過(guò)的,有一個(gè)沒(méi)有校正。

可采用如下的步驟:

1. 將AWU_CSR的MSR位置1來(lái)把LSI的內(nèi)部時(shí)鐘連接到TIM1/3定時(shí)器ICAP1;

2. 通過(guò)定時(shí)器的輸入捕捉中斷來(lái)測(cè)量LSI的時(shí)鐘頻率;

3. 到向AWU_APR的 APR [5:0] 位寫入一個(gè)適當(dāng)?shù)闹祦?lái)調(diào)整AWU定時(shí)間隔到期望的時(shí)間間隔。AWUTB[3:0]位可以被更改來(lái)選擇不同的時(shí)間間隔。

軟件工程源代碼 Ⅲ

1、關(guān)于工程

本文提供的工程代碼是基于前面軟件工程“STM8S_Demo”增加AWU修改而來(lái)。初學(xué)的朋友可以參看我前面對(duì)應(yīng)的基礎(chǔ)文章,那些文章講的比較詳細(xì)。

工程源代碼主要實(shí)現(xiàn)功能:配置AWU定時(shí)1秒,讓MCU從停機(jī)模式自動(dòng)喚醒,改變LED狀態(tài);然后又進(jìn)入停機(jī)模式,以此循環(huán)下去。

本文重點(diǎn)講述關(guān)于AWU的內(nèi)容:

AWU_LSICalibrationConfig:LSI低速內(nèi)部時(shí)鐘校正配置

AWU_Init:AWU初始化配置

2.代碼分析說(shuō)明

A.AWU_LSICalibrationConfig:時(shí)鐘校正配置

關(guān)于時(shí)鐘的校正,如果要求不是很高,可以省略該步驟。從上面的說(shuō)明可以看得出來(lái),是通過(guò)定時(shí)器來(lái)實(shí)現(xiàn)的。

我們提供例程通過(guò)TIM1/3捕獲功能(該功能在后面文章會(huì)講述)測(cè)量LSI的時(shí)鐘,具體請(qǐng)看我提供例程的“AWU_LSIMeasurement”函數(shù),該函數(shù)測(cè)量得到的LSI時(shí)鐘,結(jié)合“AWU_LSICalibrationConfig”函數(shù)即可校正。

B.AWU_Init(AWU_TIMEBASE_1S):定時(shí)1秒AWU

通過(guò)上面的描述,大家或許初學(xué)的朋友還不能完全理解(上面的描述是針對(duì)寄存器的描述),但可以通過(guò)代碼很直接的明白其意思,我們這里結(jié)合的是ST提供的標(biāo)準(zhǔn)外設(shè)庫(kù),具體可以跟蹤代碼看見,其實(shí)里面的內(nèi)容就是上面所描述的。

void AWU_Initializes(void)

{

AWU_LSICalibrationConfig(AWU_LSIMeasurement());

AWU_Init(AWU_TIMEBASE_1S);

enableInterrupts();

}

提示:

很多人不明白為什么這里要配置中斷?

其實(shí)細(xì)心的朋友會(huì)發(fā)現(xiàn)寄存器“控制/狀態(tài)寄存器 (AWU_CSR)”中的“AWUEN自動(dòng)喚醒使能位”,這一位的功能如下:

此位由軟件置位和清零。由此位使能自動(dòng)喚醒功能。如果MCU進(jìn)入Active-halt或 Wait 模式,則自動(dòng)喚醒模塊按照預(yù)先編程設(shè)置延時(shí)一段時(shí)間喚醒MCU。

0:禁止自動(dòng)喚醒功能

1:使能自動(dòng)喚醒功能

因此,我們還需要在中斷函數(shù)(stm8s_it.c)里添加代碼:

INTERRUPT_HANDLER(AWU_IRQHandler, 1)

{

AWU_GetFlagStatus();

}

這一句主要的功能是清除標(biāo)志位。

下載

STM8S資料

http://pan.baidu.com/s/1o7Tb9Yq

軟件源代碼工程(STM8S-A06_AWU自動(dòng)喚醒xxx):

http://pan.baidu.com/s/1c2EcRo0

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

    關(guān)注

    0

    文章

    42

    瀏覽量

    15277
  • PDF
    PDF
    +關(guān)注

    關(guān)注

    1

    文章

    168

    瀏覽量

    33691
  • STM8S
    +關(guān)注

    關(guān)注

    16

    文章

    149

    瀏覽量

    31407
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    請(qǐng)問(wèn)stm8l怎么實(shí)現(xiàn)外部中斷喚醒?

    stm8l怎么實(shí)現(xiàn)外部中斷喚醒?求大神們幫忙。
    發(fā)表于 05-17 08:08

    STM8S103K在停機(jī)模式且關(guān)閉flash時(shí)有時(shí)候不能喚醒是怎么回事?

    STM8S103K 在停機(jī)模式且關(guān)閉flash 時(shí)有時(shí)候不能喚醒! 做一個(gè)產(chǎn)品,電池供電,有一個(gè)電源按鍵用來(lái)開關(guān)機(jī),長(zhǎng)按2秒就執(zhí)行。用的是PE5外部中斷來(lái)喚醒。 假如我設(shè)置:FLASH_CR1
    發(fā)表于 05-17 06:55

    求助,關(guān)于stm8s的halt模式問(wèn)題求解

    新手做stm8的小東西,芯片是stm8s103f3,做的糊里糊涂的,問(wèn)題如下: 用到了halt模式,仿照網(wǎng)上已有的一些資料寫了點(diǎn)東西,但進(jìn)入halt關(guān)掉的一些東西(time,adc等),在外部中斷
    發(fā)表于 05-15 08:12

    用STM8S003f3p6的PD3和PB5做外部中斷,仿真關(guān)掉后,PD3一直喚醒不了的原因?

    我用STM8S003f3p6的PD3和PB5做外部中斷,下降沿觸發(fā),用來(lái)喚醒睡眠,在仿真的狀態(tài)下,沒(méi)有問(wèn)題,兩個(gè)都可以喚醒,仿真關(guān)掉后,芯片在工作的狀態(tài)下,只有PB5可以喚醒,PD3不
    發(fā)表于 05-13 07:44

    stm8s halt之后無(wú)法喚醒怎么解決?

    我用的是003f3p6,現(xiàn)在遇到一件很奇怪的事,在連接STLINK的時(shí)候,單片機(jī)可以很正常地從halt模式中喚醒,但是如果不連接的話,就會(huì)無(wú)法喚醒,不知道有人遇到過(guò)同樣的情況嗎?求幫助!
    發(fā)表于 05-08 08:18

    stm8s208 halt can喚醒不了的原因?

    最近在使用stm8s208的can模塊,涉及到低功耗,在總線上沒(méi)有數(shù)據(jù)時(shí)mcu進(jìn)入halt,總線上有數(shù)據(jù)時(shí)被喚醒,進(jìn)行通信。 初始化配置中我使能了AWUM,喚醒中斷也使能了WKUIE;mcu進(jìn)入halt后,RXD上有波形但是mc
    發(fā)表于 05-08 07:53

    stm8低速時(shí)鐘校準(zhǔn)的疑問(wèn)求解

    ;= ((lsifreqkhz - (4U * A)) *(1U + (2U * A)))) { AWU->APR = (uint8_t)(A - 2U); } else { AWU->APR = (uint
    發(fā)表于 05-08 07:10

    STM8可以設(shè)置類似停機(jī)模式下鬧鈴喚醒嗎?

    請(qǐng)問(wèn)STM8可以設(shè)置類似停機(jī)模式下鬧鈴喚醒嗎,比如每天8點(diǎn)鐘從停機(jī)模式喚醒
    發(fā)表于 05-08 07:09

    stm8s halt自喚醒長(zhǎng)時(shí)間擱置Timer出錯(cuò)的原因?

    AWU時(shí)鐘 //喚醒時(shí)間2.00S AWU_TBR = 0x0D; AWU_APR = 0x3E; //分頻Fls
    發(fā)表于 05-08 06:53

    STM8L101內(nèi)部38K LSI校準(zhǔn)不起作用嗎?

    STM8L101 內(nèi)部38K LSI校準(zhǔn)不起作用嗎? 實(shí)測(cè)加不加LSIMeasurment(),定時(shí)1S ,抓出來(lái)的時(shí)間都一樣。下面是官方代碼稍加修改的。 INTERRUPT_HANDLER
    發(fā)表于 04-24 07:15

    請(qǐng)問(wèn)STM8L101怎么使用AWU功能進(jìn)行長(zhǎng)時(shí)間延時(shí)?

    目前導(dǎo)師的項(xiàng)目需要CPU進(jìn)行定時(shí)喚醒,幾小時(shí)自動(dòng)喚醒然后發(fā)送數(shù)據(jù)幀,硬件設(shè)計(jì)師選用的STM8L101,我看了手冊(cè)和官方歷程,知道了AWU功能
    發(fā)表于 04-22 07:47

    請(qǐng)問(wèn)STM8SAWU功能的時(shí)鐘源能使用外接的32.768KHZ晶振嗎?

    請(qǐng)問(wèn)大神,STM8SAWU功能的時(shí)鐘源能使用外接的32.768KHZ晶振嗎?
    發(fā)表于 04-16 08:07

    STM8S活躍停機(jī)模式使用紅外中斷喚醒無(wú)法正確識(shí)別中斷的原因?

    如題所述: STM8S設(shè)置成活躍停機(jī)模式,使用紅外下降沿喚醒并解碼,IO具體配置為,PC4浮空輸入,外部上拉,下降沿觸發(fā)。 8M外部晶振,TIM2 32分頻 2us時(shí)基 無(wú)溢出中斷,用于兩個(gè)下降沿
    發(fā)表于 04-15 07:46

    DCM模塊喚醒網(wǎng)絡(luò)主動(dòng)與被動(dòng)喚醒機(jī)制探討

    CanNm專題機(jī)從Prepare Bus-Sleep Mode切換到Nework Mode的Repeat Message State是如果是通過(guò)CanNm_PassiveStartUp()條件切換的就是被動(dòng)喚醒,如果是通過(guò)CanNm_NetworkRequest()條件切換的就是主動(dòng)
    發(fā)表于 03-15 11:20 ?1048次閱讀
    DCM模塊<b class='flag-5'>喚醒</b>網(wǎng)絡(luò)主動(dòng)與被動(dòng)<b class='flag-5'>喚醒</b>機(jī)制探討
    RM新时代网站-首页