專利名稱:一種控制i2c主器件復位的方法、裝置及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及電子通信控制領域,具體涉及一種控制I2C主器件復位的方法、裝置及系統(tǒng)。
背景技術:
I2C(Inter-Integrated Circuit)總線是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備。是微電子通信控制領域廣泛采用的一種總線標準。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優(yōu)點。目前已廣泛應用在計算機制造,電信設備,消費電子等領域。在I2C總線技術規(guī)范中,總線協(xié)議有嚴格的時序要求??偩€工作時,由總線上的主器件控制時鐘線SCL傳送時鐘脈沖,由雙向數(shù)據(jù)線SDA傳送數(shù)據(jù)。I2C總線上每次傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)不受限制,但每一個字節(jié)必須為8位,而且每個傳送的字節(jié)后面從器件必須跟一個認可位(第9位),也叫應答位(ACK, Acknowledge bit)I2C總線技術規(guī)范中,開始和結束信號(也稱起始和停止信號)定義如下起始信號⑶在時鐘線SCL保持高電平期間,雙向數(shù)據(jù)線SDA出現(xiàn)由高電平向低電平的變化,用于啟動I2C總線,為I2C總線的起始信號;停止信號⑵在時鐘線SCL保持高電平期間,雙向數(shù)據(jù)線SDA出現(xiàn)由低電平向高電平的變化,用于停止I2C總線,為I2C總線的終止信號;應答信號(A) I2C總線的第9個脈沖對應應答位,若雙向數(shù)據(jù)線SDA上顯示低電平則為總線“應答”(A),若雙向數(shù)據(jù)線SDA上顯示高電平則為“非應答”(/A)。開始和結束信號一般都是由主器件產(chǎn)生,只有主器件才能對I2C總線實現(xiàn)管理與檢測,如起始、停止、發(fā)送時鐘等。I2C總線數(shù)據(jù)傳輸時,在時鐘線SCL高電平期間,數(shù)據(jù)線SDA上必須保持有穩(wěn)定的邏輯電平狀態(tài),高電平為數(shù)據(jù)1,低電平為數(shù)據(jù)O。只有在時鐘線為低電平時,才允許數(shù)據(jù)線上的電平狀態(tài)變化I2C總線的工作速度一般是取決于主控器的性能,參考I2C的總線規(guī)范,時鐘線SCL的工作頻率可以低至OHz。在正常通信的情況下I2C總線是不會鎖定的,但是當系統(tǒng)復位時,如果I2C主器件還處在通信過程中,而此時SDA正由從器件驅動時,那么由于復位后主器件沒有再發(fā)送時鐘,SDA被從器件給拉到固定電平,如果SDA此時是低電平,那么主器件復位后,會一直認為I2C總線忙,進而無法對從器件操作,而從器件又無法自動退出這種狀態(tài),導致I2C總線被掛起。因此,急需提出一種新的控制I2C主器件復位的方法,以避免上述總線被掛起情 況的發(fā)生。
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術問題是,提供一種控制I2C主器件復位的方法、裝置及系統(tǒng),以避免I2C主器件復位時因I2C正在通信引起從器件I2C接口異常、導致I2C總線被掛起等情況的發(fā)生,提高系統(tǒng)的穩(wěn)定性和可靠性高。為解決上述技術問題,本發(fā)明提供一種控制I2C主器件復位的裝置,包括標志存儲單元,用于存儲表示I2C總線當前狀態(tài)的I2C總線狀態(tài)標志;復位信號接收單元,用于接收外界發(fā)送的復位信號;判斷處理單元,用于在所述復位信號接收單元接收到所述復位信號后,根據(jù)標志存儲單元當前存儲的I2C總線狀態(tài)標志判斷所述I2C總線當前是否處于空閑狀態(tài),如是,發(fā)送復位控制信號給I2C主器件控制所述I2C主器件復位;否則,不發(fā)送復位控制信號給所述I2C主器件。在本發(fā)明的一種實施例中,所述判斷處理單元還用于在所述復位信號接收單元接收到所述復位信號后,判斷所述復位信號是否有效,當判斷所述復位信號有效且所述I2C總線當前空閑時,發(fā)送所述復位控制信號給所述I2C主器件。本發(fā)明還提供例了一種控制I2C主器件復位的系統(tǒng),包括I2C主器件和用于控制I2C主器件復位的裝置,所述I2C主器件復位的裝置包括標志存儲單元,用于存儲表示I2C總線當前狀態(tài)的I2C總線狀態(tài)標志;復位信號接收單元,用于接收外界發(fā)送的復位信號;判斷處理單元,用于在所述復位信號接收單元接收到所述復位信號后,根據(jù)標志存儲單元當前存儲的I2C總線狀態(tài)標志判斷所述I2C總線當前是否處于空閑狀態(tài),如是,發(fā)送復位控制信號給I2C主器件控制所述I2C主器件復位;否則,不發(fā)送復位控制信號給所述I2C主器件;所述I2C主器件用于在工作過程中按預設規(guī)則更新所述標志存儲單元存儲的I2C總線狀態(tài)標志;以及用于接收到所述判斷處理單元發(fā)送的所述復位控制信號后,進行復位操作。在本發(fā)明的一種實施例中,所述判斷處理單元與所述I2C主器件的復位端連接。在本發(fā)明的一種實施例中,所述用于控制I2C主器件復位的裝置通過可編程邏輯控制器件或者現(xiàn)場可編輯邏輯陣列實現(xiàn)。在本發(fā)明的一種實施例中,所述I2C主器件通過讀寫總線與所述標志存儲單元連接。在本發(fā)明的一種實施例中,所述預設規(guī)則為所述I2C主器件在每次發(fā)起I2C操作時將所述標志存儲單元存儲的I2C總線狀態(tài)標志更新為非空閑狀態(tài),在每次I2C操作結束時,將所述標志存儲單元存儲的I2C總線狀態(tài)標志更新為空閑狀態(tài)。在本發(fā)明的一種實施例中,所述I2C主器件為CPU。本發(fā)明還提供了一種控制I2C主器件復位的方法,包括設置I2C總線狀態(tài)標志;工作過程中按預設規(guī)則更新所述I2C總線狀態(tài)標志;接收到復位信號后,根據(jù)當前的I2C總線狀態(tài)標志判斷所述I2C總線當前是否處于空閑狀態(tài),如是,發(fā)送復位控制信號給I2C主器件控制所述I2C主器件復位;否則,不發(fā)送 復位控制信號給所述I2C主器件。在本發(fā)明的一種實施例中,所述預設規(guī)則為I2C主器件在每次發(fā)起I2C操作時將所述I2C總線狀態(tài)標志更新為非空閑狀態(tài),在每次I2C操作結束時,將所述I2C總線狀態(tài)標志更新為空閑狀態(tài)。在本發(fā)明的一種實施例中,接收到所述復位信號后,還包括判斷所述復位信號是否有效的步驟;當所述復位信號有效且所述I2C總線當前空閑時,發(fā)送所述復位控制信號給所述I2C主器件。
本發(fā)明的有益效果是本發(fā)明通過設置I2C總線狀態(tài)標志,并在工作過程中按預設規(guī)則更新I2C總線狀態(tài)標志;當接收到外界發(fā)送的復位信號后,根據(jù)當前的I2C總線狀態(tài)標志判斷I2C總線當前是否空閑,并只在判斷結果為是時才發(fā)送復位控制信號給I2C主器件控制I2C主器件復位;否則,不發(fā)送復位控制信號給I2C主器件。即本發(fā)明只有在I2C總線空閑的情況下,I2C主器件才會進行復位操作,因此可避免I2C主器件復位時因I2C正在通信而引起從器件I2C接口異常、導致I2C總線被掛起等情況的發(fā)生,可提高系統(tǒng)的穩(wěn)定性和可靠性高,且成本低,易實現(xiàn)。
圖I為本發(fā)明一種實施例的控制I2C主器件復位的方法流程圖;圖2為本發(fā)明一種實施例的控制I2C主器件復位的裝置的結構框圖;圖3為本發(fā)明一種實施例的控制I2C主器件復位的系統(tǒng)的結構框圖;圖4為本發(fā)明一種實施例的更新I2C總線狀態(tài)標志的流程圖。
具體實施例方式下面通過具體實施方式
結合附圖對本發(fā)明作進一步詳細說明。請參考圖1,本實施例中控制I2C主器件復位的方法可包括以下步驟設置I2C總線狀態(tài)標志,所設置的I2C總線狀態(tài)標志可用于表示I2C總線當前的工作狀態(tài),即用于表示當前I2C總線是處于空閑狀態(tài)還是處于忙碌狀態(tài);工作過程中按預設規(guī)則更新I2C總線狀態(tài)標志;當接收到復位信號后,根據(jù)當前的I2C總線狀態(tài)標志判斷I2C總線當前是否處于空閑狀態(tài),如是,則發(fā)送復位控制信號給I2C主器件以控制該I2C主器件復位;否則,表示I2C總線當前處于非空閑狀態(tài),即正在處于通信狀態(tài),在此情況下則不發(fā)送復位控制信號給I2C主器件,避免I2C總線處于忙碌狀態(tài)時,I2C主器件進行復位操作而導致從器件I2C接口異常、I2C總線被掛起等情況的發(fā)生,因此可提聞系統(tǒng)的穩(wěn)定性和可罪性聞。具體的,在工作過正中,在對I2C總線狀態(tài)標志進行更新時,該預設規(guī)則可為通過實時監(jiān)測I2C總線當前的工作狀態(tài),根據(jù)檢測結果對其進行更新;但是這樣需實時對I2C總線的工作狀態(tài)進行監(jiān)控。因此本實施例中優(yōu)選以下預設規(guī)則對I2C總線狀態(tài)標志進行更新,即I2C主器件在每次發(fā)起I2C操作時將I2C總線狀態(tài)標志更新為非空閑狀態(tài),在每次I2C操作結束時,將I2C總線狀態(tài)標志更新為空閑狀態(tài);這種更新方式無需對I2C總線進行監(jiān)測,由I2C主動提供總線狀態(tài),因此可進一步簡化流程,提高實用性,降低開發(fā)、使用成本。在某些特殊應用場景下,接收到的外部發(fā)送的復位信號并不一定是有效的復位信號,因此本實施例中在接收到外部發(fā)送的復位信號后,還可進一步包括判斷接收到的復位信號是否有效的步驟,只有當接收到的復位信號有效且I2C總線當前空閑時,才發(fā)送復位控制信號給I2C主器件控制該器件的復位操作。值得注意的是,本實施例中國判斷復位信號是否有效的步驟可在接收到復位信號之后、根據(jù)I2C總線狀態(tài)標志判斷I2C總線當前狀態(tài)之前進行;也可在接收到復位信號之后、根據(jù)I2C總線狀態(tài)標志判斷I2C總線當前狀態(tài)之后進行。為了更好的理解本發(fā)明,本實施例中還提供了一種控制I2C主器件復位的裝置,請參見圖2,包括標志存儲單元,用于存儲表示I2C總線當前狀態(tài)的I2C總線狀態(tài)標志;復位信號接收單元,用于接收外界發(fā)送的復位信號;判斷處理單元,用于在復位信號接收單元接收到所述復位信號后,根據(jù)標志存儲單元當前存儲的I2C總線狀態(tài)標志判斷I2C總線當前是否空閑,如是,發(fā)送復位控制信號給I2C主器件控制該I2C主器件復位;否則,不發(fā)送復位控制信號給該I2C主器件,即I2C總線當前正處于通信狀態(tài),在此情況下則不發(fā)送復位控制信號給I2C主器件,避免I2C總線處于忙碌狀態(tài)時,I2C主器件進行復位操作而導致從器件I2C接口異常、I2C總線被掛起等情況的發(fā)生。如上所述,某些特殊應用場景下,接收到的外部發(fā)送的復位信號并不一定是有效的復位信號,因此本實施例中的判斷處理單元還用于在復位信號接收單元接收到復位信號后,判斷該復位信號是否有效,當判斷該復位信號有效且當前I2C總線當前空閑時,才發(fā)送所述復位控制信號給所述I2C主器件。判斷處理單元判斷復位信號是否有效的時機同上。值得注意的是,本實施例中上述用于控制I2C主器件復位的裝置具體可通過可編程邏輯器件CPLD實現(xiàn),也可通過FPGA現(xiàn)場可編輯邏輯陣列實現(xiàn)。例如,當通過可編程邏輯器件CPLD實現(xiàn)時,具體可為CPLD內(nèi)部邏輯電路構成的一個功能模塊,實際應用中,為了形成模塊化并適應多個廠家的CPLD器件,此功能模塊可通過硬件描述語言Verilog或VHDL等實現(xiàn),以提高模塊的可移植性。請參見圖3,本實施例中還提供了控制I2C主器件復位的系統(tǒng),包括I2C主器件、與I2C主器件通過I2C總線連接的至少一個I2C從器件和上述用于控制I2C主器件復位的裝置;其中I2C主器件可用于在工作過程中按上述預設規(guī)則更新標志存儲單元存儲的I2C總線狀態(tài)標志;以及用于接收到上述判斷處理單元發(fā)送的所述復位控制信號后,進行相應的復位操作。具體的,請參見圖3,用于控制I2C主器件復位的裝置的判斷處理單元與I2C主器件的復位端連接。I2C主器件則通過讀寫總線與標志存儲單元連接,以對其進行相應的讀寫操作,進而更新其存儲的I2C總線狀態(tài)標志。根據(jù)實際應用情況,本實施例中I2C主器件一般為CPU。隨著技術的發(fā)展,本實施例中的I2C主器件也可為其他具體的器件。本實施例中I2C總線狀態(tài)標志具體可通過定義一位寄存器的值實現(xiàn),例如定義寄存器的值為“I”時,表示I2C總線當前處于空閑狀態(tài);為“O”時,則代表總線上當前操作,為非空閑狀態(tài)。為了更清楚直觀的說明本發(fā)明中設置的I2C總線狀態(tài)標志如何真實反應當前I2C總線狀態(tài),下面結合圖4對本發(fā)明做進一步說明步驟401-402 I2C主器件即CPU在發(fā)起每一次I2C操作例如讀寫操作時,首先需清除I2C總線空閑標志,使其指示當前總線狀態(tài)忙(即將I2C總線狀態(tài)標志由空閑狀態(tài)更新為忙碌狀態(tài));
步驟403-405 :進行相應的讀寫操作后,在才操作完成后,I2C主器件再將該標志置位,指示總線空閑,即將I2C總線狀態(tài)標志更新為空閑狀態(tài);結束本次操作。本例中利用I2C主器件更新I2C總線狀態(tài)標志可真實的反應I2C總線當前的狀態(tài)。在上述步驟基礎之上,用于控制I2C主器件復位的裝置則將外部發(fā)送的復位信號和I2C總線狀態(tài)標志位的值進行組合邏輯計算,當外部復位信號無效時,無論I2C總線是否空閑,輸出給CPU的復位信號無效。當外部復位信號有效的時候,判斷此時總線是否空閑,如果I2C空閑,CPU復位有效,如果I2C總線忙,CPU復位無效。使用組合邏輯的優(yōu)點是任意時刻的輸出僅僅取決于該時刻的輸入,在外部復位信號有效時,如果I2C標志忙,CPU復位無效,一但I2C操作結束,標志位變?yōu)榭臻e,CPU復位信號可以立刻生效,具有很好的可靠性和實時性。綜上所述,本發(fā)明通過把原來外界直接給I2C主器件的復位信號結合當前I2C的
工作狀態(tài)信息改由與I2C主器件連接的用于控制I2C主器件復位的裝置提供給I2C主器件,避免I2C主器件在對I2C從器件讀寫操作周期間被復位,從而防止I2C從器件可能會對I2C總線造成的鎖定,且不需要對I2C主器件和I2C從器件進行特殊的改造設計,只需在I2C操作流程上進行簡單的設置,具有穩(wěn)定性好、可靠性高,實現(xiàn)方便,硬件成本低等優(yōu)點。以上內(nèi)容是結合具體的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護范圍。
權利要求
1.一種控制I2C主器件復位的裝置,其特征在于包括標志存儲單元,用于存儲表示I2C總線當前狀態(tài)的I2C總線狀態(tài)標志;復位信號接收單元,用于接收外界發(fā)送的復位信號;判斷處理單元,用于在所述復位信號接收單元接收到所述復位信號后,根據(jù)標志存儲 単元當前存儲的I2C總線狀態(tài)標志判斷所述I2C總線當前是否處于空閑狀態(tài),如是,發(fā)送復 位控制信號給I2C主器件控制所述I2C主器件復位;否則,不發(fā)送復位控制信號給所述I2C 主器件。
2.如權利要求I所述的控制I2C主器件復位的裝置,其特征在于,所述判斷處理單元還 用于在所述復位信號接收單元接收到所述復位信號后,判斷所述復位信號是否有效,當判 斷所述復位信號有效且所述I2C總線當前空閑時,發(fā)送所述復位控制信號給所述I2C主器 件。
3.—種控制I2C主器件復位的系統(tǒng),其特征在于包括I2C主器件和用于控制I2C主器 件復位的裝置,所述I2C主器件復位的裝置包括標志存儲單元,用于存儲表示I2C總線當前狀態(tài)的I2C總線狀態(tài)標志;復位信號接收單元,用于接收外界發(fā)送的復位信號;判斷處理單元,用于在所述復位信號接收單元接收到所述復位信號后,根據(jù)標志存儲 単元當前存儲的I2C總線狀態(tài)標志判斷所述I2C總線當前是否處于空閑狀態(tài),如是,發(fā)送復 位控制信號給I2C主器件控制所述I2C主器件復位;否則,不發(fā)送復位控制信號給所述I2C 主器件;所述I2C主器件用于在工作過程中按預設規(guī)則更新所述標志存儲單元存儲的I2C總線 狀態(tài)標志;以及用于接收到所述判斷處理單元發(fā)送的所述復位控制信號后,進行復位操作。
4.如權利要求3所述的控制I2C主器件復位的系統(tǒng),其特征在于,所述判斷處理單元與 所述I2C主器件的復位端連接。
5.如權利要求3所述的控制I2C主器件復位的系統(tǒng),其特征在于,所述用于控制I2C主 器件復位的裝置通過可編程邏輯控制器件或者現(xiàn)場可編輯邏輯陣列實現(xiàn)。
6.如權利要求3所述的控制I2C主器件復位的系統(tǒng),其特征在于,所述I2C主器件通過 讀寫總線與所述標志存儲單元連接。
7.如權利要求3-6任一項所述的控制I2C主器件復位的系統(tǒng),其特征在于,所述預設規(guī) 則為所述I2C主器件在每次發(fā)起I2C操作時將所述標志存儲單元存儲的I2C總線狀態(tài)標 志更新為非空閑狀態(tài),在每次I2C操作結束時,將所述標志存儲單元存儲的I2C總線狀態(tài)標 志更新為空閑狀態(tài)。
8.如權利要求7所述的控制I2C主器件復位的系統(tǒng),其特征在于,所述I2C主器件為CPU。
9.一種控制I2C主器件復位的方法,其特征在于包括設置I2C總線狀態(tài)標志;工作過程中按預設規(guī)則更新所述I2C總線狀態(tài)標志;接收到復位信號后,根據(jù)當前的I2C總線狀態(tài)標志判斷所述I2C總線當前是否處于空 閑狀態(tài),如是,發(fā)送復位控制信號給I2C主器件控制所述I2C主器件復位;否則,不發(fā)送復位 控制信號給所述I2C主器件。
10.如權利要求9所述的I2C主器件復位的方法,其特征在于,所述預設規(guī)則為I2C主 器件在每次發(fā)起I2C操作時將所述I2C總線狀態(tài)標志更新為非空閑狀態(tài),在每次I2C操作 結束時,將所述I2C總線狀態(tài)標志更新為空閑狀態(tài)。
11.如權利要求9或10所述的I2C主器件復位的方法,其特征在于,接收到所述復位信 號后,還包括判斷所述復位信號是否有效的步驟;當所述復位信號有效且所述I2C總線當 前空閑時,發(fā)送所述復位控制信號給所述I2C主器件。
全文摘要
本發(fā)明公開了一種控制I2C主器件復位的方法、裝置及系統(tǒng),通過設置I2C總線狀態(tài)標志,并在工作過程中按預設規(guī)則更新I2C總線狀態(tài)標志;當接收到外界發(fā)送的復位信號后,根據(jù)當前的I2C總線狀態(tài)標志判斷I2C總線當前是否空閑,并只在判斷結果為是時才發(fā)送復位控制信號給I2C主器件控制I2C主器件復位;否則,不發(fā)送復位控制信號給I2C主器件;即本發(fā)明只有在I2C總線空閑的情況下,I2C主器件才會進行復位操作,因此可避免I2C主器件復位時因I2C正在通信而引起從器件I2C接口異常、導致I2C總線被掛起等情況的發(fā)生,可提高系統(tǒng)的穩(wěn)定性和可靠性高,且成本低,易實現(xiàn)。
文檔編號G06F1/24GK102662452SQ20121009163
公開日2012年9月12日 申請日期2012年3月30日 優(yōu)先權日2012年3月30日
發(fā)明者董超 申請人:中興通訊股份有限公司