專利名稱:一種基于uart的睡眠喚醒方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及無線通信領(lǐng)域,特別是指一種基于通用異步接收/發(fā)送裝置(UART, Universal Asynchronous Receiver/Transmitter)的睡目民喚醒方法及裝置。
背景技術(shù):
串口也叫串行通信接口,串口由于具有利用簡便的通信信號線即可實現(xiàn)較強的 傳輸功能且傳輸速度范圍廣的優(yōu)點,成為近年來應(yīng)用最為廣泛的通信接口。其中,由于具 有較多的類型,使得串口的傳輸速度范圍廣;串口的類型包括UART、串行外圍接口(SPI, Serial Peripheral Interface)、及通用串行總線(USB,Universal Serial BUS)等。其 中,UART由于具有功耗低、通信控制簡單、不需要驅(qū)動、在無數(shù)據(jù)傳輸時可關(guān)閉數(shù)據(jù)口等優(yōu) 點,因此,在實際應(yīng)用時,許多設(shè)備將UART作為通信的主要接口。目前,利用UART進行設(shè)備間的通信時,主要利用四線(tx、rx、cts、以及rts)與 兩線(rx以及tx)的連接方式。其中,在四線連接方式中,采用cts和rts可以對數(shù)據(jù)流 進行控制,這種連接方式也可以稱為流控的連接方式,采用流控的連接方式能在通信雙方 傳輸速率不一致的情況下,保證不會丟失數(shù)據(jù)。在實際應(yīng)用時,如果UART不作為調(diào)制解調(diào) 器(modem) 口使用時,則沒有必要采用四線的連接方式,采用兩線的連接方式完全可以滿 足需求。這是因為目前的大多數(shù)應(yīng)用中,只是將UART作為一個簡單的通信口,比如僅僅 進行AT命令的簡單交互,而不作為modem 口撥號使用;另外,隨著設(shè)備比如應(yīng)用處理器 (AP,Application Processor)的外圍器件的增加,芯片的通用輸入輸出(GPI0, General Purpose Input Output)等資源會越來越緊張,由于作為流控使用的兩線可以復(fù)用為GPI0, 如果采用兩線的連接方式,則能夠節(jié)省兩個GPIO資源,如此,使AP更加靈活,并且控制更為 簡便,從而不僅能提高效率,而且能減少資源的占用。目前,AP與其連接的設(shè)備間利用UART進行通信時,存在以下幾種睡眠喚醒方法(I)UART 一直開著,只有當(dāng)AP無任務(wù)執(zhí)行且睡眠時,則UART睡眠,而當(dāng)AP有任務(wù) 執(zhí)行時,則再次喚醒UART,由于不管AP執(zhí)行任務(wù)時需不需要UART,UART均處于喚醒狀態(tài), 如此,會增加AP的功耗,不利于AP的設(shè)計。(2)通過自定義的睡眠指示和喚醒信號實現(xiàn)UART的雙向喚醒,由于自定義的睡眠 指示和喚醒信號需要占用AP的GPIO資源,如此,會增加AP的資源占用率。(3)把作為流控使用的兩線復(fù)用成GPI0,利用流控的作用實現(xiàn)雙向喚醒,該方法 只適用于四線連接的方式,并且該方法同樣會增加AP的GPIO資源的占用率。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種基于UART的睡眠喚醒方法及裝置,能 降低設(shè)備的功耗,并能減少對GPIO資源的使用。為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的本發(fā)明提供了一種基于UART的睡眠喚醒方法,該方法包括
4
當(dāng)沒有數(shù)據(jù)發(fā)送時,第一設(shè)備通過自身UART的tx信號線通知與所述第一設(shè)備進 行通信的第二設(shè)備;所述第二設(shè)備收到通知后且自身沒有數(shù)據(jù)發(fā)送給所述第一設(shè)備時,通過自身UART 的tx信號線通知所述第一設(shè)備,并使自身的UART進入睡眠狀態(tài);所述第一設(shè)備收到通知后,使自身的UART進入睡眠狀態(tài);所述第一設(shè)備及所述第二設(shè)備定時檢測自身rx信號線的輸出狀態(tài),確定自身rx 信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART。上述方案中,所述第一設(shè)備通過自身UART的tx信號線通知與第一設(shè)備進行通信 的第二設(shè)備,為所述第一設(shè)備將自身的tx信號線設(shè)置為中斷(break)模式。上述方案中,所述通過自身UART的tx信號線通知所述第一設(shè)備,為所述第二設(shè)備將自身的tx信號線設(shè)置為break模式。上述方案中,所述定時檢測自身rx信號線的輸出狀態(tài),確定自身rx信號線的輸出 狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART,為設(shè)置定時檢測自身rx信號線引腳狀態(tài)的函數(shù),并在定時檢測函數(shù)的喚醒處理中 增加UART恢復(fù)函數(shù),通過定時檢測函數(shù)檢測設(shè)備自身rx信號線的輸出狀態(tài),并在確定設(shè)備 自身rx信號線的電平值為高時,通過UART恢復(fù)函數(shù)喚醒設(shè)備自身的UART。 上述方案中,所述定時檢測自身rx信號線的輸出狀態(tài),確定自身rx信號線的輸出 狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART,為設(shè)置rx中斷,并在中斷處理中增加UART恢復(fù)函數(shù),所述設(shè)備自身rx信號線的電 平值不為低時,觸發(fā)所述rx中斷,并通過UART恢復(fù)函數(shù)喚醒設(shè)備自身的UART。上述方案中,所述定時檢測自身rx信號線的輸出狀態(tài),確定自身rx信號線的輸出 狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART,為設(shè)置GPIO中斷,并在中斷處理中增加UART恢復(fù)函數(shù),所述設(shè)備檢測到邊沿或電平 值為高時,觸發(fā)所述GPIO中斷,并通過UART恢復(fù)函數(shù)喚醒設(shè)備自身的UART。上述方案中,所述確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時的時機為數(shù)據(jù)發(fā)送方發(fā)送事先約定的字符;或者,數(shù)據(jù)發(fā)送方發(fā)送脈沖信號,延時后再向數(shù)據(jù)接收方發(fā)送事先約定的字符。上述方案中,在喚醒自身的UART后,該方法進一步包括向數(shù)據(jù)發(fā)送方返回表示已喚醒的字符。本發(fā)明還提供了一種基于UART的睡眠喚醒裝置,該裝置包括第一設(shè)備及第二設(shè) 備;其中,第一設(shè)備,用于當(dāng)沒有數(shù)據(jù)發(fā)送時,通過自身UART的tx信號線通知第二設(shè)備;并 在收到第一設(shè)備的通知后,使自身的UART進入睡眠狀態(tài);之后定時檢測自身rx信號線的輸 出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART ;第二設(shè)備,用于收到第一設(shè)備發(fā)送的通知后,且自身沒有數(shù)據(jù)發(fā)送給第一設(shè)備時, 通過自身UART的tx信號線通知所述第一設(shè)備,并使自身的UART進入睡眠狀態(tài);之后檢測 自身rx信號線的輸出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的 UART0
上述方案中,所述第一設(shè)備,還用于睡眠后當(dāng)有數(shù)據(jù)發(fā)送給第二設(shè)備時,喚醒自身 的UART,之后通過自身的tx信號線發(fā)送事先約定的字符給第二設(shè)備,并接收第二設(shè)備返回 的表示已喚醒的字符;所述第二設(shè)備,還用于收到第一設(shè)備發(fā)送的字符后,通過自身的tx信號線向第一 設(shè)備返回表示已喚醒的字符;或者,所述第二設(shè)備,還用于睡眠后當(dāng)有數(shù)據(jù)發(fā)送給第一設(shè)備時,喚醒自身的UART,之后 通過自身的tx信號線發(fā)送事先約定的字符給第一設(shè)備,并接收第一設(shè)備返回的表示已喚 醒的字符;所述第一設(shè)備,還用于收到第二設(shè)備發(fā)送的字符后,通過自身的tx信號線向第一 設(shè)備返回表示已喚醒的字符。本發(fā)明提供的基于UART的睡眠喚醒方法及裝置,當(dāng)沒有數(shù)據(jù)發(fā)送時,第一設(shè)備通 過自身UART的tx信號線通知與所述第一設(shè)備進行通信的第二設(shè)備;所述第二設(shè)備收到通 知后且自身沒有數(shù)據(jù)發(fā)送給所述第一設(shè)備時,通過自身UART的tx信號線通知所述第一設(shè) 備,并使自身的UART進入睡眠狀態(tài);所述第一設(shè)備收到通知后,使自身的UART進入睡眠狀 態(tài);所述第一設(shè)備及所述第二設(shè)備定時檢測自身rx信號線的輸出狀態(tài),確定自身rx信號線 的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART,如此,能降低設(shè)備的功耗,并且還能減少對 設(shè)備GPIO資源的使用。
圖1為本發(fā)明基于UART的睡眠喚醒的方法流程示意圖;圖2為本發(fā)明的基于UART通信的設(shè)備間的連接方式示意圖;圖3為本發(fā)明基于UART的睡眠喚醒的裝置結(jié)構(gòu)示意圖。
具體實施例方式下面結(jié)合附圖及具體實施例對本發(fā)明再作進一步詳細(xì)的說明。本發(fā)明基于UART的睡眠喚醒方法,如圖1所示,包括以下步驟步驟101 當(dāng)沒有數(shù)據(jù)發(fā)送時,第一設(shè)備通過自身UART的tx信號線通知與所述第 一設(shè)備進行通信的第二設(shè)備;這里,圖2為本發(fā)明所述第一設(shè)備與所述第二設(shè)備進行通信的連接方式示意圖, 從圖2中可以看出,所述第一設(shè)備與所述第二設(shè)備通過兩線的連接方式進行通信,即所述 第一設(shè)備的tx信號線為所述第二設(shè)備的rx信號線,所述第一設(shè)備的rx信號線為所述第二 設(shè)備的tx信號線,其中,tx信號線用于發(fā)送數(shù)據(jù),rx信號線用于接收數(shù)據(jù);另外,為了保證 傳輸信號的穩(wěn)定性,還可以在所述第一設(shè)備與所述第二設(shè)備之間增加GND信號線,表示接 地;由于本發(fā)明采用兩線的連接方式,沒有GPIO可以輔助,因此,當(dāng)所述第一設(shè)備沒 有數(shù)據(jù)發(fā)送時,必須通過tx信號線通知給所述第二設(shè)備;依據(jù)RS232協(xié)議規(guī)定在數(shù)據(jù)發(fā)送過程中,為了使發(fā)送的數(shù)據(jù)塊能間隔開,在發(fā)送 的過程中可以將tx信號線設(shè)置為break模式,即使tx信號線的電平值為零;因此,本步驟 的具體實現(xiàn)可以為
當(dāng)沒有數(shù)據(jù)發(fā)送時,所述第一設(shè)備將自身的tx信號線設(shè)置為break模式;其中,設(shè) 置為break模式的具體處理流程與現(xiàn)有技術(shù)的具體處理流程完全相同,這里不再贅述;設(shè) 置為break模式后,第一設(shè)備的tx信號線的電平值則為零,從而以此通知所述第二設(shè)備沒 有數(shù)據(jù)發(fā)送了;所述第一設(shè)備與所述第二設(shè)備均可以是遵循RS232協(xié)議基于UART進行通信的任 意一個設(shè)備,所述第一設(shè)備具體可以是AP、或個人電腦(PC,Personal Computer)等,相應(yīng) 的,所述第二設(shè)備可以是與AP、或PC等采用UART進行通信的設(shè)備。步驟102 所述第二設(shè)備收到通知后且自身沒有數(shù)據(jù)發(fā)送給所述第一設(shè)備時,通 過自身UART的tx信號線通知所述第一設(shè)備,并使自身的UART進入睡眠狀態(tài);這里,所述第一設(shè)備的tx信號線設(shè)置為break模式后,所述第二設(shè)備就會檢測到 所述第一設(shè)備的tx信號線的電平值一直持續(xù)為零,所述第二設(shè)備可以據(jù)此確定所述第一 設(shè)備無數(shù)據(jù)發(fā)送了 ;因此,本步驟的具體實現(xiàn),可以為所述第二設(shè)備檢測到所述第一設(shè)備的tx信號線的電平值為零的時長達到預(yù)定時 長后,則可以認(rèn)為所述第一設(shè)備的UART具備進入睡眠狀態(tài)的條件;其中,在實際應(yīng)用時,所述第二設(shè)備在檢測到所述第一設(shè)備的tx信號線的電平值 為零后,可以啟動一個定時器,在定時器超時后,如果所述第一設(shè)備的tx信號線的電平值 在定時器的時長內(nèi)持續(xù)為零,則認(rèn)為所述第一設(shè)備的UART具備進入睡眠狀態(tài)的條件;所述 定時器的時長可以根據(jù)需要進行設(shè)置,比如50ms、100ms等;所述通過自身UART的tx信號線通知所述第一設(shè)備,具體為所述第二設(shè)備將自身的tx信號線設(shè)置為break模式;其中,設(shè)置為break模式的 具體處理流程與現(xiàn)有技術(shù)的具體處理流程完全相同,這里不再贅述;如果所述第二設(shè)備收到通知且自身還有數(shù)據(jù)發(fā)送給第一設(shè)備時,則不向第一設(shè)備 發(fā)送任何信息;所述第二設(shè)備使自身的UART進入睡眠狀態(tài)的具體處理過程與現(xiàn)有技術(shù)的處理過 程完全相同,這里不再贅述。步驟103 所述第一設(shè)備收到通知后,使自身的UART進入睡眠狀態(tài);相應(yīng)的,所述第一設(shè)備檢測到所述第二設(shè)備的tx信號線的電平值為零的時長達 到預(yù)定時長后,則可以認(rèn)為所述第二設(shè)備的UART具備進入睡眠狀態(tài)的條件;其中,在實際應(yīng)用時,所述第一設(shè)備在檢測到所述第二設(shè)備的tx信號線的電平值 為零后,可以啟動一個定時器,在定時器超時后,如果所述第二設(shè)備的tx信號線的電平值 在定時器的時長內(nèi)持續(xù)為零,則認(rèn)為所述第二設(shè)備的UART具備進入睡眠狀態(tài)的條件;所述 定時器的時長可以根據(jù)需要進行設(shè)置,比如50ms、100ms等;所述第一設(shè)備使自身的UART進入睡眠狀態(tài)的具體處理過程與現(xiàn)有技術(shù)的處理過 程完全相同,這里不再贅述。步驟104 所述第一設(shè)備及所述第二設(shè)備定時檢測自身rx信號線的輸出狀態(tài),確 定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART。這里,由于基于UART進行通信時,沒有任何外部的硬件終端可以利用,因此,只能 通過軟件的方式來檢測并喚醒UART ;具體地,可以是設(shè)置定時檢測自身rx信號線引腳狀 態(tài)的函數(shù),并在定時檢測函數(shù)的喚醒處理中增加UART恢復(fù)函數(shù),通過定時檢測函數(shù)檢測設(shè)備自身rx信號線的輸出狀態(tài),并在確定設(shè)備自身rx信號線的電平值為高時,通過UART恢 復(fù)函數(shù)喚醒設(shè)備自身的UART ;其中,定時的時長可以依據(jù)需要進行設(shè)置,經(jīng)試驗進行測試, 定時的時長可以是50 500ms之間的任一值,比如100ms等;在實際應(yīng)用時,與AP進行通信的設(shè)備一般會自帶rx中斷檢測機制,因此,如果進 行通信的設(shè)備自帶有rx中斷時,本步驟的具體實現(xiàn)還可以為設(shè)置rx中斷,并在中斷處理中增加UART恢復(fù)函數(shù),只要所述設(shè)備檢測到自身rx 信號線的電平值不為低時,即電平值不為零時,則觸發(fā)所述rx中斷,從而喚醒設(shè)備自身的 UART ;在實際應(yīng)用時,如果所述第一設(shè)備和/或所述第二設(shè)備自帶有GPIO中斷時,本步 驟的具體實現(xiàn)還可以為設(shè)置GPIO中斷,并在中斷處理中增加UART恢復(fù)函數(shù),只要所述設(shè)備檢測到邊沿或 電平值為高時,則觸發(fā)所述GPIO中斷,從而喚醒設(shè)備自身的UART ;其中,如果數(shù)據(jù)發(fā)送方的tx信號線復(fù)用為GPI0,此時,發(fā)送方通過自身的tx信號 線即接收方的rx信號線發(fā)送的是脈沖信號,可以設(shè)置通過檢測邊沿或電平值來觸發(fā)GPIO 中斷,如果發(fā)送方的tx信號線不復(fù)用為GPI0,此時發(fā)送方發(fā)送的是字符,則設(shè)置通過檢測 邊沿來觸發(fā)GPIO中斷;檢測到的邊沿具體可以是上升沿或下降沿;在實際應(yīng)用時,可以選 擇檢測上升沿和下降沿中的任意一種來觸發(fā)GPIO中斷;在實際應(yīng)用過程中,所述第一設(shè)備及所述第二設(shè)備均可以選擇上述三種檢測及喚 醒方法中的任意一種;這里,所述第一設(shè)備及所述第二設(shè)備事先已經(jīng)獲知對方采用上述哪種方式檢測并 喚醒UART ;所述第一設(shè)備及所述第二設(shè)備確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時 的時機為對方設(shè)備有數(shù)據(jù)發(fā)送,此時,對方設(shè)備先喚醒自身的UART,之后先發(fā)送雙方事先 約定好的字符,從而使得數(shù)據(jù)接收方可以喚醒自身的UART,喚醒后再發(fā)送數(shù)據(jù);具體地,如果接收方采用設(shè)置定時檢測函數(shù)的方式、或設(shè)置rx中斷的方式喚醒自 身的UART時,通信的雙方,即所述第一設(shè)備及所述第二設(shè)備,事先約定好發(fā)送給對方的字 符及對方反饋的表示已喚醒的字符,當(dāng)有數(shù)據(jù)發(fā)送時,發(fā)送方先向接收方發(fā)送事先約定的 字符,等收到對方返回的表示已喚醒的字符后,再發(fā)送數(shù)據(jù);舉個例子來說,對于AP和與其 通信的設(shè)備來說,當(dāng)AP需要給通信的設(shè)備發(fā)送數(shù)據(jù)時,AP先給通信的設(shè)備發(fā)送一個AT,通 信的設(shè)備收到AT喚醒自身的UART后,向AP返回0K,AP收到OK后再向通信的設(shè)備發(fā)送數(shù) 據(jù),如果AP在規(guī)定時間內(nèi)沒有收到通信的設(shè)備返回的OK時,可以再向通信的設(shè)備發(fā)送一個 AT,如此循環(huán),直至收到通信的設(shè)備返回的OK為止;當(dāng)通信的設(shè)備需要給AP發(fā)送數(shù)據(jù)時,通 信的設(shè)備先給AP發(fā)送一個0Κ,ΑΡ收到OK喚醒自身的UART后,向通信的設(shè)備發(fā)送返回AT, 通信的設(shè)備收到AT后再向AP發(fā)送數(shù)據(jù),如果通信的設(shè)備在規(guī)定時間內(nèi)沒有收到AP返回的 AT時,可以再向AP發(fā)送一個0K,如此循環(huán),直至收到AP返回的AT為止;其中,規(guī)定時間可 以依據(jù)需要進行設(shè)置,比如50ms ;如果接收方采用設(shè)置GPIO中斷的方式喚醒自身的UART時,如果發(fā)送方的tx信號 線復(fù)用為GPI0,此時,發(fā)送方先發(fā)送一個脈沖,接收方收到脈沖后喚醒自身的UART,為了確 保接收方已經(jīng)喚醒自身的UART,可以在一定間隔比如40ms后,向接收方發(fā)送事先約定的字 符,等收到對方返回的表示已喚醒的字符后,再發(fā)送數(shù)據(jù);舉個例子來說,對于AP和與其通
8信的設(shè)備,如果AP采用了設(shè)置GPIO中斷的方式喚醒自身的UART,且與AP通信的設(shè)備的tx 信號線復(fù)用為GPIO時,當(dāng)與AP通信的設(shè)備需要給AP發(fā)送數(shù)據(jù)時,通信的設(shè)備先給AP發(fā)送 一個脈沖,延時40ms后,再向AP發(fā)送一個0Κ,ΑΡ收到脈沖信號后喚醒自身的UART,并在收 到OK后,向通信的設(shè)備返回AT,通信的設(shè)備收到AT后再向AP發(fā)送數(shù)據(jù),如果通信的設(shè)備在 規(guī)定時間內(nèi)沒有收到AP返回的AT時,可以再向AP發(fā)送一個0K,如此循環(huán),直至收到AP返 回的AT為止;其中,規(guī)定時間可以依據(jù)需要進行設(shè)置,比如50ms ;如果發(fā)送方的tx信號線不復(fù)用為GPI0,此時,由于接收方檢測不到電平值,所以, 接收方觸發(fā)GPIO中斷的條件是邊沿檢測,即檢測到上升沿或下降沿,在實際應(yīng)用時,可 以設(shè)置檢測到上升沿或檢測到下降沿觸發(fā)GPIO中斷,在發(fā)送數(shù)據(jù)前,接收方發(fā)送事先約定 的字符,等收到對方返回的表示已喚醒的字符后,再發(fā)送數(shù)據(jù);舉個例子來說,對于AP和與 其通信的設(shè)備,如果AP采用了設(shè)置GPIO中斷的方式喚醒自身的UART,且與AP通信的設(shè)備 的tx信號線不復(fù)用為GPIO時,當(dāng)與AP通信的設(shè)備需要給AP發(fā)送數(shù)據(jù)時,先向AP發(fā)送一 個0K,AP收到OK后喚醒自身的UART,并向通信的設(shè)備返回AT,通信的設(shè)備收到AT后再向 AP發(fā)送數(shù)據(jù),如果通信的設(shè)備在規(guī)定時間內(nèi)沒有收到AP返回的AT時,可以再向AP發(fā)送一 個0K,如此循環(huán),直至收到AP返回的AT為止;其中,規(guī)定時間可以依據(jù)需要進行設(shè)置,比 如50ms ;這里需要說明的是由于本發(fā)明設(shè)備間基于UART進行通信的連接方式為兩線的 連接方式,因此,發(fā)送方發(fā)送的任何字符、脈沖信號、以及數(shù)據(jù)等均通過自身的tx信號線發(fā) 送給接收方,相應(yīng)的,接收方向發(fā)送方返回的任何字符、脈沖信號、以及數(shù)據(jù)等也均通過自 身的tx信號線返回給發(fā)送方。為實現(xiàn)上述方法,本發(fā)明還提供了一種基于UART的睡眠喚醒裝置,如圖3所示,該 裝置包括第一設(shè)備31及第二設(shè)備32 ;其中,第一設(shè)備31及第二設(shè)備32均包括UART模塊;第一設(shè)備31,用于當(dāng)沒有數(shù)據(jù)發(fā)送時,通過自身UART的tx信號線通知第二設(shè)備 32 ;并在收到第一設(shè)備32的通知后,使自身的UART進入睡眠狀態(tài);之后定時檢測自身rx信 號線的輸出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART。第二設(shè)備32,用于收到第一設(shè)備31發(fā)送的通知后,且自身沒有數(shù)據(jù)發(fā)送給第一設(shè) 備31時,通過自身UART的tx信號線通知所述第一設(shè)備31,并使自身的UART進入睡眠狀 態(tài);之后檢測自身rx信號線的輸出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時, 喚醒自身的UART。這里,需要說明的是第一設(shè)備31與第二設(shè)備32采用連線的連接方式進行通信。其中,所述第一設(shè)備31,還用于睡眠后當(dāng)有數(shù)據(jù)發(fā)送給第二設(shè)備32時,喚醒自身 的UART,之后通過自身的tx信號線發(fā)送事先約定的字符給第二設(shè)備32,并接收第二設(shè)備返 回的表示已喚醒的字符;所述第二設(shè)備32,還用于收到第一設(shè)備31發(fā)送的字符后,通過自身的tx信號線向 第一設(shè)備31返回表示已喚醒的字符;或者,所述第二設(shè)備32,還用于睡眠后當(dāng)有數(shù)據(jù)發(fā)送給第一設(shè)備31時,喚醒自身的 UART,之后通過自身的tx信號線發(fā)送事先約定的字符給第一設(shè)備31,并接收第一設(shè)備返回 的表示已喚醒的字符;
所述第一設(shè)備31,還用于收到第二設(shè)備32發(fā)送的字符后,通過自身的tx信號線向 第一設(shè)備32返回表示已喚醒的字符。這里,本發(fā)明的所述裝置中的第一設(shè)備及第二設(shè)備的具體處理過程已在上文中詳 述,不再贅述。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍,凡在 本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護 范圍之內(nèi)。
權(quán)利要求
1.一種基于通用異步接收/發(fā)送裝置(UART)的睡眠喚醒方法,其特征在于,該方法包括當(dāng)沒有數(shù)據(jù)發(fā)送時,第一設(shè)備通過自身UART的tx信號線通知與所述第一設(shè)備進行通 信的第二設(shè)備;所述第二設(shè)備收到通知后且自身沒有數(shù)據(jù)發(fā)送給所述第一設(shè)備時,通過自身UART的 tx信號線通知所述第一設(shè)備,并使自身的UART進入睡眠狀態(tài); 所述第一設(shè)備收到通知后,使自身的UART進入睡眠狀態(tài);所述第一設(shè)備及所述第二設(shè)備定時檢測自身rx信號線的輸出狀態(tài),確定自身rx信號 線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一設(shè)備通過自身UART的tx信號線 通知與第一設(shè)備進行通信的第二設(shè)備,為所述第一設(shè)備將自身的tx信號線設(shè)置為中斷(break)模式。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通過自身UART的tx信號線通知所述 第一設(shè)備,為所述第二設(shè)備將自身的tx信號線設(shè)置為break模式。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述定時檢測自身rx信號線的輸 出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART,為設(shè)置定時檢測自身rx信號線引腳狀態(tài)的函數(shù),并在定時檢測函數(shù)的喚醒處理中增加 UART恢復(fù)函數(shù),通過定時檢測函數(shù)檢測設(shè)備自身rx信號線的輸出狀態(tài),并在確定設(shè)備自身 rx信號線的電平值為高時,通過UART恢復(fù)函數(shù)喚醒設(shè)備自身的UART。
5.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述定時檢測自身rx信號線的輸 出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART,為設(shè)置rx中斷,并在中斷處理中增加UART恢復(fù)函數(shù),所述設(shè)備自身rx信號線的電平值 不為低時,觸發(fā)所述rx中斷,并通過UART恢復(fù)函數(shù)喚醒設(shè)備自身的UART。
6.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述定時檢測自身rx信號線的輸 出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART,為設(shè)置通用輸入輸出(GPIO)中斷,并在中斷處理中增加UART恢復(fù)函數(shù),所述設(shè)備檢測到 邊沿或電平值為高時,觸發(fā)所述GPIO中斷,并通過UART恢復(fù)函數(shù)喚醒設(shè)備自身的UART。
7.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述確定自身rx信號線的輸出狀 態(tài)為有數(shù)據(jù)接收時的時機為數(shù)據(jù)發(fā)送方發(fā)送事先約定的字符;或者,數(shù)據(jù)發(fā)送方發(fā)送脈沖信號,延時后再向數(shù)據(jù)接收方發(fā)送事先約定的字符。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,在喚醒自身的UART后,該方法進一步包括向數(shù)據(jù)發(fā)送方返回表示已喚醒的字符。
9.一種基于UART的睡眠喚醒裝置,其特征在于,該裝置包括第一設(shè)備及第二設(shè)備;其中,第一設(shè)備,用于當(dāng)沒有數(shù)據(jù)發(fā)送時,通過自身UART的tx信號線通知第二設(shè)備;并在收 到第一設(shè)備的通知后,使自身的UART進入睡眠狀態(tài);之后定時檢測自身rx信號線的輸出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART ;第二設(shè)備,用于收到第一設(shè)備發(fā)送的通知后,且自身沒有數(shù)據(jù)發(fā)送給第一設(shè)備時,通過 自身UART的tx信號線通知所述第一設(shè)備,并使自身的UART進入睡眠狀態(tài);之后檢測自身 rx信號線的輸出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第一設(shè)備,還用于睡眠后當(dāng)有數(shù)據(jù)發(fā)送給第二設(shè)備時,喚醒自身的UART,之后通過 自身的tx信號線發(fā)送事先約定的字符給第二設(shè)備,并接收第二設(shè)備返回的表示已喚醒的 字符;所述第二設(shè)備,還用于收到第一設(shè)備發(fā)送的字符后,通過自身的tx信號線向第一設(shè)備 返回表示已喚醒的字符;或者,所述第二設(shè)備,還用于睡眠后當(dāng)有數(shù)據(jù)發(fā)送給第一設(shè)備時,喚醒自身的UART,之后通過 自身的tx信號線發(fā)送事先約定的字符給第一設(shè)備,并接收第一設(shè)備返回的表示已喚醒的 字符;所述第一設(shè)備,還用于收到第二設(shè)備發(fā)送的字符后,通過自身的tx信號線向第一設(shè)備 返回表示已喚醒的字符。
全文摘要
本發(fā)明公開了一種基于通用異步接收/發(fā)送裝置(UART)的睡眠喚醒方法,該方法包括當(dāng)沒有數(shù)據(jù)發(fā)送時,第一設(shè)備通過自身UART的tx信號線通知與第一設(shè)備進行通信的第二設(shè)備;第二設(shè)備收到通知后且自身沒有數(shù)據(jù)發(fā)送給第一設(shè)備時,通過自身UART的tx信號線通知第一設(shè)備,并使自身的UART進入睡眠狀態(tài);第一設(shè)備收到通知后,使自身的UART進入睡眠狀態(tài);第一設(shè)備及第二設(shè)備定時檢測自身rx信號線的輸出狀態(tài),確定自身rx信號線的輸出狀態(tài)為有數(shù)據(jù)接收時,喚醒自身的UART。本發(fā)明同時公開了一種基于UART的睡眠喚醒裝置,采用本發(fā)明的方法及裝置,能降低設(shè)備的功耗,并且還能減少對設(shè)備GPIO資源的使用。
文檔編號G06F13/38GK102096649SQ20111003587
公開日2011年6月15日 申請日期2011年2月10日 優(yōu)先權(quán)日2011年2月10日
發(fā)明者周興偉 申請人:中興通訊股份有限公司