專利名稱:一種i2c總線被從器件鎖定后的恢復(fù)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種I2C總線被I2C從器件鎖定后的恢復(fù)方法和裝置,屬于計(jì)算 機(jī)通訊領(lǐng)。
背景技術(shù):
I2C總線(Inter—IC BUS或IIC BUS,集成電路間互連總線)是一種由飛 利浦(PHILIPS)公司開發(fā)的一套串行總線,用于連接微控制器及其外圍設(shè)備。 I2C總線有兩根信號(hào)線 一根時(shí)鐘線SCL, 一根雙向數(shù)據(jù)線SDA。所有接到I2C 總線上的器件的時(shí)鐘線SCL均接到總線的SCL,其數(shù)據(jù)線SDA都連接到總線的雙 向數(shù)據(jù)線SDA線??偩€使用軟件尋址來(lái)識(shí)別每個(gè)器件(如微控制器、存儲(chǔ)器、LCD 驅(qū)動(dòng)器、時(shí)鐘芯片和其他I2C總線器件),完全省去了每個(gè)器件的片選線,因而 使系統(tǒng)的接線非常簡(jiǎn)單。目前I2C已經(jīng)成為重要的全球業(yè)界標(biāo)準(zhǔn),被所有主要的 IC廠商所認(rèn)同和使用。在計(jì)算機(jī)網(wǎng)絡(luò)通訊設(shè)備中,具有I2C總線接口的器件應(yīng) 用也越來(lái)越多。在I2C總線中,當(dāng)某個(gè)器件生成總線上的時(shí)鐘信號(hào)SCK并發(fā)起數(shù) 據(jù)傳輸時(shí),被稱為是主器件(也叫發(fā)送器),某個(gè)器件從總線上接收控制信息時(shí), 被稱為從器件(也叫接收器)。主器件用于啟動(dòng)總線,產(chǎn)生時(shí)鐘并傳送數(shù)據(jù),此 時(shí)任何被尋址的器件均被認(rèn)為是從器件。12C總線工作時(shí),由總線上的主器件控制時(shí)鐘線SCL提供時(shí)鐘同步信號(hào)脈沖, 由雙向數(shù)據(jù)線SDA完成數(shù)據(jù)傳送。12C總線的數(shù)據(jù)傳送速率,在標(biāo)準(zhǔn)工作方式下 為100kbit/s,在快速方式下,最高傳送速率可達(dá)400kbit/s。 I2C總線技術(shù)規(guī) 范中,總線協(xié)議有著嚴(yán)格的時(shí)序要求。12C總線的數(shù)據(jù)傳送格式是在I2C總線開始信號(hào)后,送出的第一個(gè)字節(jié)數(shù) 據(jù)是用來(lái)選擇從器件的地址和指示讀寫操作,其中前7bit為地址碼,第8bit 為讀寫標(biāo)志位(R/W)。標(biāo)志位為"0"表示是主器件的"寫"操作,即主器件把信 息寫入到所選址的從器件;標(biāo)志位為"1"表示主器件的"讀"操作。開始信號(hào) 后,系統(tǒng)中的各個(gè)器件將自己的地址和主器件送到總線上的地址進(jìn)行比較,如果 與主器件發(fā)送到總線上的地址一致,則該器件即為被主器件尋址的器件,其接收 信息還是發(fā)送信息則由第8bit標(biāo)志(R/W)確定。I2C總線上每次傳輸?shù)臄?shù)據(jù)字節(jié)
數(shù)不受限制,但每一個(gè)字節(jié)必須為8位,而且每個(gè)傳送的字節(jié)后面(第9位), 從器件必須跟一個(gè)認(rèn)可位,也叫應(yīng)答位(ACK, Acknowledge bit)。I2C總線的工作速度一般是取決于主器件和從器件的性能,參考I2C的總線 規(guī)范,時(shí)鐘線SCL的工作頻率可以工作在0Hz到100kHz之間。12C總線技術(shù)規(guī)范中,對(duì)開始和結(jié)束信號(hào)(也稱起始和停止信號(hào))以及應(yīng)答 信號(hào)的定義如下起始信號(hào)(S):在時(shí)鐘線SCL保持高電平期間,雙向數(shù)據(jù)線SDA上出現(xiàn)由高 電平向低電平的變化,用于啟動(dòng)I2C總線,為I2C總線的起始信號(hào);停止信號(hào)(P):在時(shí)鐘線SCL保持高電平期間,雙向數(shù)據(jù)線SDA上出現(xiàn)由低 電平向高電平的變化,用于停止I2C總線,為I2C總線的終止信號(hào);應(yīng)答信號(hào)(A):在I2C總線傳輸過(guò)程中每一個(gè)字節(jié)的第9個(gè)SCL脈沖對(duì)應(yīng)著 應(yīng)答位,若雙向數(shù)據(jù)線SDA上顯示低電平則為總線"應(yīng)答(A)",若雙向數(shù)據(jù)線 SDA上顯示高電平則為總線"非應(yīng)答(/A)"。因只有主器件才能對(duì)I2C總線實(shí)現(xiàn)管理與檢測(cè),所以開始信號(hào)和結(jié)束信號(hào)一 般都是由主器件產(chǎn)生。12C總線數(shù)據(jù)傳輸時(shí),在時(shí)鐘線SCL為高電平期間,數(shù)據(jù) 線SDA上必須保持有穩(wěn)定的邏輯電平狀態(tài),高電平表示數(shù)據(jù)l,低電平表示數(shù)據(jù) 0。只有在時(shí)鐘線SCL為低電平時(shí),才允許數(shù)據(jù)線SDA上的電平狀態(tài)發(fā)生變化。I2C總線本身不會(huì)鎖定,但如果總線上存在干擾或者SDA或SCL被某些特定 的因素拉成低電平,12C總線就產(chǎn)生鎖定,這些情況通常是由于外部干擾以及從 器件的失效和故障造成, 一般情況下,在印制電路板設(shè)計(jì)時(shí)經(jīng)過(guò)仔細(xì)的布局布線, 是可以避免因總線上出現(xiàn)干擾造成總線的鎖定。在計(jì)算機(jī)通訊設(shè)備內(nèi),12C總線上的主器件一般是CPU,從器件是連接在I2C 總線上的其它器件,比如存儲(chǔ)器、傳感器、實(shí)時(shí)時(shí)鐘等。若SDA線被總線上的一 個(gè)器件拉成低電平,主器件就不能產(chǎn)生起始、停止信號(hào),進(jìn)行下一步的傳送,譬 如,主器件(CPU)在對(duì)I2C從器件的讀操作期間,如果CPU突然被復(fù)位(RESET), 而此時(shí)I2C總線上的一個(gè)讀操作周期卻還沒有結(jié)束,I2C從器件一般沒有復(fù)位輸 入管腳,也無(wú)法知道主器件被復(fù)位的情況,從器件只是看到總線的SCL停止變化, 但I(xiàn)2C總線允許時(shí)鐘線SCL停止,因此從器件也不會(huì)認(rèn)為I2C總線的主器件出現(xiàn) 故障。在CPU復(fù)位過(guò)程中及復(fù)位后,SCL往往被上拉到高電平,保持穩(wěn)定,按照 I2C總線的規(guī)范,SDA數(shù)據(jù)線上的數(shù)據(jù)在時(shí)鐘線SCL高電平期間必須是穩(wěn)定的, 如果從器件此時(shí)在SDA上輸出的bit正巧為"低",因此,從器件將始終驅(qū)動(dòng)SDA
線為低電平,使主器件無(wú)法產(chǎn)生任何起始、停止信號(hào),從而由從器件鎖定SDA 線,造成I2C總線的鎖定。此時(shí)主器件雖然一般會(huì)檢測(cè)到I2C總線出現(xiàn)鎖定,但 卻無(wú)法實(shí)現(xiàn)下一步的數(shù)據(jù)傳輸,因此必須通過(guò)一定的手段來(lái)避免出現(xiàn)此種情況下 造成12C總線的故障。這種情況出現(xiàn)后,如果主器件能夠單獨(dú)控制SCK,可以通過(guò)發(fā)送幾個(gè)SCK脈 沖,使從器件完成I2C總線上的讀操作周期,從而避免I2C總線的鎖定,但是, 有許多CPU (主器件),其內(nèi)部集成的I2C寄存器一般不提供直接對(duì)SCK的控制, 因此,無(wú)法采用輸出SCK脈沖的辦法來(lái)解決。I2C總線如果被上述的原因鎖定后, 一般無(wú)法僅僅通過(guò)復(fù)位(RESET)主器件來(lái)解決,若沒有其它合適可靠的解決辦 法,必須要重新上電才能解決。對(duì)于I2C總線被鎖定后的解決方法,不同的器件提供了各自的解決途徑。FreeScale公司(美國(guó)一家芯片公司)PowerPC處理器中的MPC8541、 MPC8560 系列CPU,其內(nèi)部集成了 12C總線控制寄存器,在發(fā)現(xiàn)I2C總線被鎖定后,可以 通過(guò)讀寫一系列的I2C總線控制寄存器來(lái)使I2C總線退出鎖定狀態(tài)。MAXIM公司(美國(guó)一家芯片公司)的MAX7500系列12C從器件,其內(nèi)部集成 了超時(shí)功能,提供I2C總線的鎖定保護(hù)。如果在250ms內(nèi)時(shí)鐘線SCL沒有發(fā)生變 化,從器件將自動(dòng)結(jié)束本次的I2C操作,回到初始狀態(tài),從而避免了從器件對(duì) 12C總線的鎖定;但是,在計(jì)算機(jī)通訊設(shè)備內(nèi)12C總線上連接的器件往往比較多,12C主器件 (一般是CPU)不一定具有解決I2C總線鎖定狀態(tài)的控制寄存器,同時(shí),目前I2C 總線上所有的從器件也不可能全部具備自動(dòng)退出鎖定狀態(tài)的功能,因此,必須設(shè) 計(jì)附加裝置,避免前面提及的12C總線可能會(huì)被鎖定的問(wèn)題。發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問(wèn)題是,針對(duì)目前I2C主器件不一定具有解決I2C 總線鎖定狀態(tài)的控制寄存器,同時(shí)I2C總線上所有的從器件也不可能全部具備自 動(dòng)退出鎖定狀態(tài)功能的缺點(diǎn)并根據(jù)I2C總線對(duì)其從器件有控制和檢測(cè)的特點(diǎn),提 供一種I2C總線被從器件鎖定后的恢復(fù)方法并在該方法的基礎(chǔ)上提供一種I2C 總線被從器件鎖定后的恢復(fù)裝置。本發(fā)明I2C總線被從器件鎖定后的恢復(fù)方法為用I2C主器件控制所有I2C 從器件的工作電源,當(dāng)I2C主器件檢測(cè)到總線被鎖定時(shí),即斷開I2C從器件的工
作電源,等待設(shè)定時(shí)間后再恢復(fù)供電,使I2C從器件恢復(fù)至初始狀態(tài)。 所述設(shè)定時(shí)間取值范圍為0. 2秒 5秒。
本發(fā)明I2C總線被從器件鎖定后的恢復(fù)裝置包括I2C主器件、I2C從器件及 系統(tǒng)電源,還增加了一個(gè)電源開關(guān),所述電源開關(guān)一端與系統(tǒng)電源相連, 一端與 連接在一起的I2C從器件電源相連,由I2C主器件控制其通斷。 所述電源開關(guān)是一個(gè)繼電器。 所述電源開關(guān)是一個(gè)金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)管。 所述電源開關(guān)由I2C主器件的GPIO引腳控制其通斷。 所述電源開關(guān)由I2C主器件通過(guò)外部可編程邏輯器件控制其通斷。 所述電源開關(guān)由I2C主器件通過(guò)外部鎖存器控制其通斷。 本發(fā)明所述的方法和裝置,通過(guò)主CPU的參與,解決了當(dāng)12C從器件造成總 線的鎖定后總線的恢復(fù)問(wèn)題,提高了系統(tǒng)的穩(wěn)定性和可靠性,并且該本發(fā)明實(shí)現(xiàn) 起來(lái)方便靈活,硬件成本低。
圖1是本發(fā)明所述方法流程圖;圖2是本發(fā)明所述裝置的原理框圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述圖1所示是本發(fā)明所述方法的流程圖,系統(tǒng)上電后,當(dāng)I2C主器件檢測(cè)到 12C總線被從器件鎖定后,自動(dòng)斷開I2C從器件的工作電源,等待設(shè)定時(shí)間后再 恢復(fù)供電,此時(shí)I2C從器件即恢復(fù)至初始狀態(tài),從而解決了從器件對(duì)總線的鎖定, 上述設(shè)定時(shí)間的長(zhǎng)短取決于I2C總線的負(fù)載大小及I2C主器件的性能,其取值范 圍為0.2秒 5秒。
圖2所示是本發(fā)明所述I2C總線被從器件鎖定后的恢復(fù)裝置的一個(gè)原理框 圖。標(biāo)號(hào)為201的是I2C總線上的主器件,本實(shí)施例中為CPU處理器;標(biāo)號(hào)為 202的是I2C總線中的從器件,I2C總線上一般會(huì)有多個(gè)從器件,但本實(shí)施例中 僅用一個(gè)從器件來(lái)示意;標(biāo)號(hào)為203的是用來(lái)對(duì)I2C從器件的工作電源進(jìn)行控制 電源開關(guān),電源開關(guān)203 —端與系統(tǒng)電源相連, 一端與連接在一起的I2C從器件 電源相連;204用來(lái)控制電源開關(guān)203,對(duì)于有通用輸入輸出(GPIO)的CPU而
言,204即為其中的一個(gè)GPI0管腳;對(duì)于沒有GPIO管腳的CPU,可以通過(guò)外部 的可編程邏輯器件(PLD)來(lái)實(shí)現(xiàn),也可以通過(guò)外加的鎖存器來(lái)實(shí)現(xiàn),即CPU可 以通過(guò)PLD內(nèi)部的寄存器來(lái)實(shí)現(xiàn)對(duì)電源開關(guān)203的控制。通過(guò)電源開關(guān)203和 204協(xié)同工作,可以實(shí)現(xiàn)I2C的主器件對(duì)I2C從器件的工作電源進(jìn)行控制,來(lái)解 決I2C從器件鎖定總線的情況。本裝置在單元(單板)的系統(tǒng)設(shè)計(jì)、原理圖設(shè)計(jì)階段,即可把所有I2C從器 件的工作電源連接在一起,連接在一起的I2C從器件工作電源通過(guò)一個(gè)電源開關(guān) 與系統(tǒng)的電源連接。電源開關(guān)的主要目的是對(duì)I2C從器件的工作電源進(jìn)行通斷, 可以通過(guò)繼電器或者金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)管(MetalOxide Semicoductor Field Effect Transistor, MOSFET)來(lái)實(shí)現(xiàn)。對(duì)電源開關(guān)的控制,要根據(jù)其類 型進(jìn)行考慮,如果是繼電器,要考慮驅(qū)動(dòng)電流的實(shí)現(xiàn);如果是MOSFET,要考慮 控制電壓Vgs的控制與實(shí)現(xiàn);也可以采用其它方式的電源開關(guān),只要能夠?qū)崿F(xiàn)由 CPU控制電源開關(guān)的通斷即可。本實(shí)施框圖中的CPU201具有GPIO管腳,且電源開關(guān)203采用了 N溝道耗盡 型MOSFET, GPIO輸出為'l'時(shí),MOSFET導(dǎo)通,GPIO輸出為'0'時(shí),MOSFET 截止。在實(shí)際的應(yīng)用中,系統(tǒng)上電后,CPU201正常啟動(dòng),GPIO輸出為'r,電 源開關(guān)203閉合,I2C從器件202正常工作。當(dāng)CPU201檢測(cè)到總線被I2C從器 件202鎖定時(shí),即將GPIO的輸出調(diào)整為'0',控制電源開關(guān)103斷開,此時(shí) I2C從器件202失去工作電源,所有的I2C從器件將被斷電,CPU根據(jù)系統(tǒng)的需 求,維持GPIO '0,輸出0.2毫秒 5秒后,重新將GPIO的輸出調(diào)整為'1',控 制電源開關(guān)閉合,12C從器件的電源與系統(tǒng)電源重新連接,此時(shí)所有的I2C從器 件會(huì)處于上電復(fù)位后的狀態(tài),即解決了 12C從器件鎖定總線的情況。
權(quán)利要求
1、一種I2C總線被從器件鎖定后的恢復(fù)方法,其特征在于,用I2C主器件控制所有I2C從器件的工作電源,當(dāng)I2C主器件檢測(cè)到總線被鎖定時(shí),即斷開I2C從器件的工作電源,等待設(shè)定時(shí)間后再恢復(fù)供電,使I2C從器件恢復(fù)至初始狀態(tài)。
2、 如權(quán)利要求1所述的I2C總線被從器件鎖定后的恢復(fù)方法,其特征在于, 所述設(shè)定吋間取值范圍為0. 2秒 5秒。
3、 一種I2C總線被從器件鎖定后的恢復(fù)裝置,包括I2C主器件、12C從器 件及系統(tǒng)電源,其特征在于,還增加了一個(gè)電源開關(guān),所述電源開關(guān)一端與系統(tǒng) 電源相連, 一端與連接在一起的I2C從器件電源相連,由I2C主器件控制其通斷。
4、 如權(quán)利要求3所述的I2C總線被從器件鎖定后的恢復(fù)裝置,其特征在于, 所述電源開關(guān)是一個(gè)繼電器。
5、 如權(quán)利要求3所述的I2C總線被從器件鎖定后的恢復(fù)裝置,其特征在于, 所述電源開關(guān)是一個(gè)金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)管。
6、 如權(quán)利要求3所述的I2C總線被從器件鎖定后的恢復(fù)裝置,其特征在于, 所述電源開關(guān)由I2C主器件的通用輸入輸出引腳控制其通斷。
7、 如權(quán)利要求3或6所述的I2C總線被從器件鎖定后的恢復(fù)裝置,其特征 在于,所述電源開關(guān)由12C主器件通過(guò)外部可編程邏輯器件控制其通斷。
8、 如權(quán)利要求3或6所述的I2C總線被從器件鎖定后的恢復(fù)裝置,其特征 在于,所述電源開關(guān)由I2C主器件通過(guò)外部鎖存器控制其通斷。
全文摘要
本發(fā)明涉及一種I2C總線被I2C從器件鎖定后的恢復(fù)方法和裝置,I2C總線被從器件鎖定后的恢復(fù)方法為用I2C主器件控制所有I2C從器件的工作電源,當(dāng)I2C主器件檢測(cè)到總線被鎖定時(shí),即斷開I2C從器件的工作電源,等待設(shè)定時(shí)間后再恢復(fù)供電,使I2C從器件恢復(fù)至初始狀態(tài);恢復(fù)裝置包括I2C主器件、I2C從器件及系統(tǒng)電源,還增加了一個(gè)電源開關(guān),電源開關(guān)一端與系統(tǒng)電源相連,一端與連接在一起的I2C從器件電源相連,由I2C主器件控制其通斷。本發(fā)明通過(guò)主CPU的參與,解決了當(dāng)I2C從器件造成總線的鎖定后總線的恢復(fù)問(wèn)題,提高了系統(tǒng)的穩(wěn)定性和可靠性。
文檔編號(hào)G06F13/38GK101118528SQ20071007683
公開日2008年2月6日 申請(qǐng)日期2007年8月31日 優(yōu)先權(quán)日2007年8月31日
發(fā)明者于克泳, 湯寧峰, 翟紅健, 國(guó) 邵 申請(qǐng)人:中興通訊股份有限公司