一種串口控制器及基于其的微控制器系統(tǒng)的喚醒方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子電路技術(shù)領(lǐng)域,尤其涉及一種串口控制器及基于其的微控制器系統(tǒng)的喚醒方法。
【背景技術(shù)】
[0002]在微控制器(MCU,Micro Control Unit)芯片系統(tǒng)中,為了降低待機功耗,芯片通常都具備一種或多種低功耗模式。芯片在進(jìn)入低功耗模式后,芯片內(nèi)部的絕大部分時鐘都會被關(guān)閉,中央處理器(CPU,Central Processing Unit)無法繼續(xù)執(zhí)行軟件指令,需要在合適的時機喚醒芯片,使芯片回到正常的工作狀態(tài)。
[0003]現(xiàn)有的喚醒技術(shù)主要有CPU中斷喚醒和外設(shè)喚醒。
[0004]CPU中斷喚醒主要是使用CPU模塊中集成的喚醒功能。在低功耗模式下,當(dāng)CPU的用于喚醒的管腳上收到一個脈沖或者高電平時,CPU就會開始執(zhí)行喚醒程序,將系統(tǒng)喚醒。CPU中斷喚醒的缺點是喚醒方式比較單一。
[0005]外設(shè)喚醒主要是使用系統(tǒng)中集成的外設(shè)模塊進(jìn)行喚醒。現(xiàn)有的外設(shè)喚醒方式基本上都需要在低功耗模式下保持外設(shè)時鐘打開,導(dǎo)致低功耗模式下的系統(tǒng)功耗較大。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提出一種串口控制器及基于其的微控制器系統(tǒng)的喚醒方法,該喚醒方法能夠解決現(xiàn)有喚醒技術(shù)中系統(tǒng)功耗較大的問題。
[0007]為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
[0008]第一方面,本發(fā)明公開了一種基于串口控制器的微控制器系統(tǒng)的喚醒方法,包括:
[0009]在低功耗模式下,判斷是否檢測到幀開始標(biāo)記,如果檢測到所述幀開始標(biāo)記,則打開時鐘開關(guān)電路,以產(chǎn)生串口工作時鐘;
[0010]接收當(dāng)前數(shù)據(jù)幀;
[0011]判斷所述當(dāng)前數(shù)據(jù)幀與喚醒幀是否匹配,如果所述當(dāng)前數(shù)據(jù)幀與所述喚醒幀匹配,則產(chǎn)生喚醒中斷,喚醒微控制器系統(tǒng)。
[0012]進(jìn)一步地,還包括:
[0013]如果所述當(dāng)前數(shù)據(jù)幀與所述喚醒幀不匹配,則關(guān)閉時鐘開關(guān)電路。
[0014]進(jìn)一步地,所述在低功耗模式下,判斷是否檢測到幀開始標(biāo)記之前,所述方法還包括:
[0015]在系統(tǒng)運行模式下,判斷是否接收到進(jìn)入所述低功耗模式的指令;若是,則關(guān)閉時鐘產(chǎn)生電路,若否,則繼續(xù)系統(tǒng)運行模式。
[0016]進(jìn)一步地,所述在系統(tǒng)運行模式下,判斷是否接收到進(jìn)入所述低功耗模式的指令之前,所述方法還包括:
[0017]在系統(tǒng)運行模式下,通過系統(tǒng)總線配置所述喚醒幀的內(nèi)容。
[0018]第二方面,本發(fā)明公開了一種串口控制器,所述串口控制器能夠?qū)崿F(xiàn)上述任一所述的喚醒方法,包括:
[0019]配置寄存器、幀開始檢測電路、數(shù)據(jù)幀接收電路、接收幀內(nèi)容分析電路和時鐘開關(guān)電路,
[0020]所述幀開始檢測電路與所述時鐘開關(guān)電路連接,所述接收幀內(nèi)容分析電路分別與所述配置寄存器和所述數(shù)據(jù)幀接收電路連接;
[0021]所述配置寄存器用于存儲喚醒幀;
[0022]所述幀開始檢測電路用于在低功耗模式下,判斷是否檢測到幀開始標(biāo)記,如果檢測到所述幀開始標(biāo)記,則打開時鐘開關(guān)電路,以產(chǎn)生串口工作時鐘;
[0023]所述數(shù)據(jù)幀接收電路用于接受當(dāng)前數(shù)據(jù)幀;
[0024]所述接收幀內(nèi)容分析電路用于判斷所述當(dāng)前數(shù)據(jù)幀與所述喚醒幀是否匹配,如果所述當(dāng)前數(shù)據(jù)幀與所述喚醒幀匹配,則產(chǎn)生喚醒中斷,喚醒微控制器系統(tǒng)。
[0025]進(jìn)一步地,所述接收幀內(nèi)容分析電路與所述時鐘開關(guān)電路連接;
[0026]所述接收幀內(nèi)容分析電路還用于如果所述當(dāng)前數(shù)據(jù)幀與所述喚醒幀不匹配,則關(guān)閉所述時鐘開關(guān)電路。
[0027]進(jìn)一步地,所述配置寄存器還與微控制器系統(tǒng)中的系統(tǒng)總線連接,在系統(tǒng)運行模式下,通過所述系統(tǒng)總線對所述喚醒幀進(jìn)行配置。
[0028]進(jìn)一步地,所述幀開始檢測電路為CK型沿檢測電路。
[0029]進(jìn)一步地,所述時鐘開關(guān)電路包括第一觸發(fā)器、第二觸發(fā)器、反相器和與門,所述第一觸發(fā)器用于將所述幀開始檢測電路產(chǎn)生的脈沖信號進(jìn)行展寬和同步,所述第二觸發(fā)器用于產(chǎn)生控制所述時鐘產(chǎn)生電路打開或關(guān)閉的時鐘開關(guān),其中,所述第一觸發(fā)器包括第一置位端、第一時鐘端、第一觸發(fā)端和第一輸出端,所述第二觸發(fā)器包括第二置位端、第二時鐘端、第二觸發(fā)端和第二輸出端,
[0030]所述第一置位端與所述幀開始檢測電路連接,所述第一時鐘端與所述時鐘產(chǎn)生電路的輸出端相連,所述第一觸發(fā)端用于接收一低電位,所述第一輸出端與所述第二置位端相連;
[0031]所述第二時鐘端與所述時鐘產(chǎn)生電路的輸出端相連,所述第二觸發(fā)端與所述與門的輸出端相連,所述第二輸出端與所述時鐘產(chǎn)生電路的輸入端相連;
[0032]所述反相器的輸入端與所述接收幀內(nèi)容分析電路的輸出端相連,所述反相器的輸出端與所述與門的第一輸入端相連,所述與門的第二輸入端與所述第二輸出端相連。
[0033]進(jìn)一步地,當(dāng)所述時鐘產(chǎn)生電路控制所述串口工作時鐘關(guān)閉時,且當(dāng)所述幀開始檢測電路檢測到幀開始標(biāo)記時,控制所述第一觸發(fā)器和所述第二觸發(fā)器置位,所述第二輸出端輸出的時鐘開關(guān)打開,從而控制所述時鐘產(chǎn)生電路產(chǎn)生串口工作時鐘;當(dāng)所述時鐘產(chǎn)生電路產(chǎn)生串口工作時鐘時,如果所述接收幀內(nèi)容分析電路判斷所述當(dāng)前數(shù)據(jù)幀與所述喚醒幀不匹配,則所述接收幀內(nèi)容分析電路輸出高電位,使得所述第二觸發(fā)器輸出的時鐘開關(guān)關(guān)閉,從而控制所述時鐘產(chǎn)生電路關(guān)閉所述串口工作時鐘。
[0034]進(jìn)一步地,還包括:
[0035]數(shù)據(jù)幀發(fā)送電路,所述數(shù)據(jù)幀發(fā)送電路與所述配置寄存器連接,用于發(fā)送配置寄存器中存儲的數(shù)據(jù)幀;
[0036]所述數(shù)據(jù)幀接收電路與所述配置寄存器連接,用于將接收到的數(shù)據(jù)幀傳送到所述配置寄存器中。
[0037]本發(fā)明所述的串口控制器及基于其的微控制器系統(tǒng)的喚醒方法只有在檢測到幀開始標(biāo)記時才打開時鐘開關(guān)電路,以產(chǎn)生串口工作時鐘,降低了低功耗模式下的系統(tǒng)功耗。
【附圖說明】
[0038]為了更加清楚地說明本發(fā)明示例性實施例的技術(shù)方案,下面對描述實施例中所需要用到的附圖做一簡單介紹。顯然,所介紹的附圖只是本發(fā)明所要描述的一部分實施例的附圖,而不是全部的附圖,對于本領(lǐng)域普通技術(shù)人員,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖得到其他的附圖。
[0039]圖1是本發(fā)明實施例一提供的基于串口控制器的微控制器系統(tǒng)的喚醒方法的流程圖。
[0040]圖2是本發(fā)明實施例二提供的串口控制器的結(jié)構(gòu)圖。
[0041]圖3是本發(fā)明實施例二提供的串口控制器的時鐘開關(guān)電路的結(jié)構(gòu)圖。
【具體實施方式】
[0042]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下將結(jié)合本發(fā)明實施例中的附圖,通過【具體實施方式】,完整地描述本發(fā)明的技術(shù)方案。顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部的實施例,基于本發(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下獲得的所有其他實施例,均落入本發(fā)明的保護(hù)范圍之內(nèi)。
[0043]實施例一:
[0044]圖1是本發(fā)明實施例一提供的基于串口控制器的微控制器系統(tǒng)的喚醒方法的流程圖。如圖1所示,該喚醒方法包括:
[0045]步驟101、在低功耗模式下,判斷是否檢測到幀開始標(biāo)記。如果監(jiān)測到幀開始標(biāo)記,則執(zhí)行以下步驟:
[0046]本步驟中,實時地對幀開始標(biāo)記進(jìn)行檢測,幀開始標(biāo)記可以是下降沿信號。在對幀開始標(biāo)記檢測的過程中,不需要使用串口工作時鐘。
[0047]步驟102、打開時鐘開關(guān)電路,以產(chǎn)生串口工作時鐘。
[0048]本步驟中,產(chǎn)生串口工作時鐘,以能夠接收當(dāng)前數(shù)據(jù)幀。
[0049]步驟103、接收當(dāng)前數(shù)據(jù)幀。
[0050]本步驟中,接收檢測到的幀開始標(biāo)記對應(yīng)的當(dāng)前數(shù)據(jù)幀。
[0051]步驟104、判斷當(dāng)前數(shù)據(jù)幀與喚醒幀是否匹配。如果當(dāng)前數(shù)據(jù)幀與喚醒幀匹配,則執(zhí)行步驟105、產(chǎn)生喚醒中斷,喚醒微控制器系統(tǒng)。
[0052]優(yōu)選地,還包括以下步驟:
[0053]如果當(dāng)前數(shù)據(jù)幀與喚醒幀不匹配,則執(zhí)行步驟106、關(guān)閉時鐘開關(guān)電路。
[0054]本步驟中,關(guān)閉時鐘開關(guān)電路,進(jìn)而使得串口工作時鐘關(guān)閉。此使得在實現(xiàn)了喚醒功能的同時,盡可能地降低了微控制器系統(tǒng)的待機功耗。
[0055]優(yōu)選地,還包括以下步驟:
[0056]如果沒有檢測到幀開始標(biāo)記,則執(zhí)行步驟151、系統(tǒng)運行低功耗模式。
[0057]本步驟中,在低功耗模式下,如果沒有檢測到幀開始標(biāo)記,則系統(tǒng)繼續(xù)運行低功耗模式。
[0058]優(yōu)選地,在步驟151、系統(tǒng)運行低功耗模式之前還包括以下步驟:
[0059]步驟121、在系統(tǒng)運行模式下,判斷是否接收到進(jìn)入低功耗模式的指令。若是,則執(zhí)行步驟131、關(guān)閉時鐘產(chǎn)生電路。若否,則執(zhí)行步驟141、繼續(xù)系統(tǒng)運行模式。
[0060]本步驟中,由于進(jìn)入低功耗模式后,對幀開始標(biāo)記的檢測過程不需要使用串口工作時鐘。所以在系統(tǒng)進(jìn)入低功耗模式前關(guān)閉時鐘產(chǎn)生電路,進(jìn)而關(guān)閉串口工作時鐘,盡可能地降低了系統(tǒng)功耗。
[0061]優(yōu)選地,在步驟121、在系統(tǒng)運行模式下,判斷是否接收到進(jìn)入低功耗模式的指令之前還包括以下步驟:
[0062]步驟111、在系統(tǒng)運行模式下,通過系統(tǒng)總線配置所述喚醒幀的內(nèi)容。
[0063]本步驟中,用戶可以通過系統(tǒng)總線對喚醒幀進(jìn)行配置,可以選擇某幾個比特為特定的值的接收幀當(dāng)做匹配幀,或者把任意的接收幀都當(dāng)做匹配幀,甚至可以選擇把幀開始標(biāo)志當(dāng)成是匹配幀。通過對喚醒幀的配置,增加了喚醒功能的靈活性,允許用戶自由定制喚醒的內(nèi)容,進(jìn)而有選擇地喚醒微控制器系統(tǒng)。
[0064]本發(fā)明實施例一提供的基于串口控制器的微控制器系統(tǒng)的喚醒方法只有在檢測到幀開始標(biāo)記時才打開時鐘開關(guān)電路,以產(chǎn)生串口工作時鐘,降低了低功耗模數(shù)下的系統(tǒng)功耗。
[0065]實施例二:
[0066]圖2是本發(fā)明實施例二提供的串口控制器的結(jié)構(gòu)圖。本發(fā)明實施例二提供的串口控制器能夠?qū)崿F(xiàn)本發(fā)明實施例一所述的喚醒方法。如圖2所示,該串口控制器包括:配置寄存器201、幀開始檢測電路202、數(shù)據(jù)幀接收電路203、接收幀內(nèi)容分析電路204和時鐘開關(guān)電路205,幀開始檢測電路202與時鐘開關(guān)電路205連接,接收幀內(nèi)容分析電路204分別與配置寄存器201和數(shù)據(jù)幀接收電路203連接。
[0067]配置寄存器201用于存儲喚醒幀。
[0068]優(yōu)選地,配置寄存器201還可以通過總線接口與微控制器系統(tǒng)中的系統(tǒng)總線206連接,在系統(tǒng)運行模式下,通過系統(tǒng)總線206對喚醒幀進(jìn)行配置。
[0069]本實施例中,用戶可以通過系統(tǒng)總線206對喚醒幀進(jìn)行配置,可以選擇某幾個比特為特定的值的接收幀當(dāng)做匹配