專利名稱:I<sup><sup>2</sup></sup>C主設備與從設備之間串行時鐘線SCL控制的方法及裝置的制作方法
技術領域:
本申請涉及I2C的串行時鐘線SCL實現(xiàn)技術領域,尤其涉及I2C主設備與從設備之間串行時鐘線SCL控制的方法及裝置。
背景技術:
I2C (Inter-1ntegrated Circuit,內(nèi)部整合電路)總線是由PHILIPS公司開發(fā)的一種簡單的雙向兩線總線,用于IC (Integrated Circuit集成電路板)之間的有限控制,包括I2C的串行時鐘線(SCL)和I2C的串行數(shù)據(jù)線(SDA)兩根線。根據(jù)I2C規(guī)范,時鐘線SCL的實現(xiàn)方法是“線與”,如圖1所示,同一路SCL上任何一個設備如果輸出低電平,則會驅動這一路SCL為低電平,該路SCL上的所有設備都釋放總線時,該路時鐘線SCL通過上拉電阻變?yōu)楦唠娖?,也就是說,SCL線被有最長低電平周期的器件保持低電平,此時,低電平周期短的器件會進入高電平的等待狀態(tài),當所述有最長低電平周期的器件釋放時鐘線SCL時,同一路SCL上的所有設備都釋放了 SCL,此時,該路時鐘線SCL才通過上拉電阻變?yōu)楦唠娖健H绱嗽O計的主要目的是為了兼容I2C總線上掛接的低速從設備。在I2C總線上掛接的主設備與從設備直連的情況下,主設備SCL與從設備SCL的信號是直連的,如果從設備要完成一些其它動作后(例如一個內(nèi)部中斷服務程序)才能接收或發(fā)送下一個完整的數(shù)據(jù)字節(jié),可以迫使時鐘線SCL保持低電平讓主設備進入等待狀態(tài)。當從設備準備下一個數(shù)據(jù)字節(jié)的傳輸,并釋放時鐘線SCL后,數(shù)據(jù)傳輸才能繼續(xù)。從設備通過驅動主設備SCL為低來使主設備等待的過程如圖2所示,T1、T2、T3為標準I2C的串行時鐘線SCL中訪問的各時序要點,Tl時刻表示主設備在將要訪問從設備時輸出低電平,Τ2時刻表示主設備釋放SCL線,但此時由于從設備還沒有準備好,從設備會繼續(xù)驅動SCL為低,Τ3時刻表示從設備已經(jīng)準備好,釋放SCL,SCL通過電路的上拉電阻變?yōu)楦唠娖?,從而主設備可以成功訪問從設備??墒牵捎弥髟O備與從設備直連的方式,由于受I2C總線總容量的限制,同一條I2C總線上可掛接的相同類型的I2C設備僅能達到8個或4個,即一臺主設備的一個I2C接口管理的I2C從設備的數(shù)量非常有限,而在實際應用中,往往需要實現(xiàn)一臺主設備的一個I2C接口管理更多的I2C從設備,為了滿足這一需求,最好的辦法就是將主設備的I2C接口使用可編程邏輯器件PLD (例如FPGA、CPLD等)進行擴展,如圖3所示,主設備CPU的I2C接口使用PLD擴展出多條時鐘線SCL,多個I2C從設備掛接在不同的SCL和SDA上,以保證主設備在對其中一個地址的I2C從設備進行訪問時,只有一個I2C從設備可以對其進行響應。如圖3所示,CPU的I2C接口使用PLD擴展出多條時鐘線SCL,通過I2C總線可以訪問并管理32個甚至更多個I2C從設備。為了保證時鐘線SCL的信號質(zhì)量,并且從節(jié)約成本、提高簡潔度的角度出發(fā),所有衍生出的時鐘線SCL全部直接由PLD發(fā)出,分別對各自的從設備進行驅動。比如,CPU若需要訪問設備16,則CPU通過PLD驅動IIC_SCL2,并且讓外置的邏輯器件打開模擬開關6,打通設備16和CPU之間的數(shù)據(jù)線SDA即可。但上述使用PLD連接I2C主設備和從設備的時鐘線SCL的設計中,PLD無法將主設備與從設備的信號直連到一起,PLD只能通過賦值的方法,單純將上行SCL (即主設備SCL)傳遞給下行SCL (即從設備SCL),或者單純將下行SCL傳遞給上行SCL,如圖4所示,pin_A為PLD上用于連接主設備的管腳,pin_B為PLD上用于連接從設備的管腳,PLD只能通過賦值單純將上行SCL的信號通過pin_A傳遞給pin_B,或將下行SCL的信號通過pin_B單純傳遞給pin_A,pin_A與pin_B沒有直連在一起。這就造成了主設備通過PLD訪問任一低速從設備的時候,若SCL線被該低速從設備保持為低電平,而主設備因為沒有與從設備的SCL直連而無法感知該低速從設備的等待請求,使得主設備繼續(xù)通過PLD將非低電平的SCL傳遞給該低速從設備,但該低速從設備此時處于等待狀態(tài),無法識別來自主設備的SCL信號,從而導致主設備對該低速從設備的訪問失敗。也就是說,使用現(xiàn)有的這種設計方法,無法匹配主設備與低速從設備之間的速度,無法滿足上述標準I2C規(guī)范。因此,目前在使用PLD連接I2C主設備和從設備的時鐘線SCL時,若遇到主設備訪問低速從設備的情況,由于PLD無法將主設備與從設備的SCL信號直連在一起,無法實現(xiàn)I2C規(guī)范要求的從設備將主設備SCL驅動為低電平的操作,無法對I2C主設備與低速從設備之間的速度進行匹配,從而會導致主設備對低速從設備的訪問失敗。
發(fā)明內(nèi)容
有鑒于此,本申請?zhí)岢鲆环NI2C主設備與從設備之間串行時鐘線SCL控制的方法,在使用PLD連接I2C主設備和從設備的時鐘線SCL時,可以匹配主設備與從設備之間的速度,實現(xiàn)主設備對低速從設備的成功訪問。本申請還提出一種可編程邏輯器件PLD裝置,在使用PLD連接I2C主設備和從設備的時鐘線SCL時,可以匹配主設備與從設備之間的速度,實現(xiàn)主設備對低速從設備的成功訪問。為達到上述目的,本申請實施例的技術方案是這樣實現(xiàn)的:一種I2C主設備與從設備之間串行時鐘線SCL控制的方法,應用于一可編程邏輯器件PLD,所述PLD連接I2C主設備和從設備的I2C串行時鐘線SCL,所述主設備的一 I2C接口通過PLD擴展出至少兩條SCL ;該方法包括:當所述主設備需要訪問任一從設備時,待所述主設備產(chǎn)生SCL下降沿后,PLD同時驅動所述主設備SCL和所述從設備SCL為低電平,并同時進行計時;當計時時間達到時長閾值時,PLD釋放對所述從設備SCL的控制并進一步在所述從設備SCL為高電平時,釋放對所述主設備SCL的控制。一種可編程邏輯器件PLD,所述PLD連接I2C主設備和從設備的I2C串行時鐘線SCL,所述主設備的一 I2C接口通過PLD擴展出至少兩條SCL ;所述PLD包括:電平驅動模塊和計時模塊,其中:電平驅動模塊,用于當所述主設備需要訪問任一從設備時,待所述主設備產(chǎn)生SCL下降沿后,同時驅動所述主設備SCL和所述從設備SCL為低電平;當計時模塊的計時時間達到時長閾值時,釋放對所述從設備SCL的控制并進一步在所述從設備SCL為高電平時,釋放對所述主設備SCL的控制;
計時模塊,用于電平驅動模塊驅動所述主設備SCL和所述從設備SCL為低電平的同時進行計時。本申請的有益效果為,在使用PLD連接I2C主設備和從設備的時鐘線SCL時,若高速主設備需要訪問低速從設備,通過PLD對高速主設備與低速從設備之間的速度進行匹配,可以實現(xiàn)高速主設備對低速從設備的成功訪問。
圖1為現(xiàn)有技術的低速從設備拉低時鐘線SCL請求主設備等待的原理示意圖;圖2為現(xiàn)有技術的從設備通過驅動SCL為低來使主設備等待的原理示意圖;圖3為現(xiàn)有技術的一種I2C總線拓撲示意圖;圖4為現(xiàn)有技術的可編程邏輯器件PLD通過賦值實現(xiàn)操作的原理示意圖;圖5為本申請實施例的方法流程圖;圖6為本申請實施例的主設備與多個從設備SCL雙向通道的邏輯示意圖;圖7為現(xiàn)有技術的主設備與多個從設備SCL單向通道的邏輯示意圖;圖8為本申請實施例的主設備訪問低速從設備時的SCL波形示意圖;圖9為本申請實施例的主設備訪問聞速從設備時的SCL波形不意圖;圖10為本申請實施例的裝置功能結構模塊示意圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下通過具體實施例并參見附圖,對本發(fā)明進行詳細說明。本申請?zhí)岢鲆环NI2C主設備與從設備之間串行時鐘線SCL控制的方法,應用于一可編程邏輯器件PLD,所述PLD連接I2C主設備和從設備的I2C串行時鐘線SCL,所述主設備的一 I2C接口通過PLD擴展出至少兩條I2C串行時鐘線SCL ;當所述主設備需要訪問任一從設備時,待所述主設備產(chǎn)生SCL下降沿后,PLD同時驅動所述主設備SCL和所述從設備SCL為低電平,并同時進行計時;當計時時間達到時長閾值時,PLD釋放對所述從設備SCL的控制并進一步在所述從設備SCL為高電平時,釋放對所述主設備SCL的控制。通過上述方法可知,在使用PLD連接I2C主設備和從設備的時鐘線SCL時,若主設備需要訪問低速從設備,通過PLD對主設備與低速從設備之間的速度進行匹配,可以實現(xiàn)主設備成功訪問低速從設備的目的。本申請實施例的方法流程如圖5所示,一種I2C主設備與從設備之間串行時鐘線SCL控制的方法,應用于一可編程邏輯器件PLD,PLD將主設備的一 I2C接口擴展出至少2條SCL,所述主設備通過所述SCL線和多條SDA線訪問和控制多個從設備,多個從設備掛接在不同的SCL和SDA上,如圖3所示;該方法包括以下步驟:步驟501:當所述主設備需要訪問任一從設備時,待所述主設備產(chǎn)生SCL下降沿后,PLD同時驅動所述主設備SCL和所述從設備SCL為低電平,并同時進行計時。主設備需要訪問任一從設備時,可以根據(jù)主設備上配置相應的SCL分組信息(每一條SCL線掛接哪些從設備),選通該從設備所在SCL,也就是建立所述主設備SCL與該從設備SCL之間的通道。本申請實施例中,可以通過所述PLD中的選通寄存器建立所述主設備SCL與待訪問的從設備SCL之間的雙向通道。步驟50廣502的動作均發(fā)生在所述建立的雙向通道中。本申請實施例中,對于單個I2C主設備掛接多個I2C從設備的情況,使用選通的方法來實現(xiàn)主設備與從設備之間的雙向通道,實現(xiàn)方式是:如圖6所示,主設備控制從設備SCL輸出低電平時,由選通寄存器(即圖6中的輸出選通模塊)來選通具體是哪一路從設備SCL輸出低電平;主設備獲取從設備SCL電平狀態(tài)時,也由選通寄存器(即圖6中的輸入選通模塊)來選通具體去獲取哪一路從設備SCL的電平狀態(tài)。而現(xiàn)有技術中,由于只建立了從主設備到從設備的單向通道,只能實現(xiàn):如圖7所示,主設備控制從設備SCL輸出低電平時,由選通寄存器(即圖7中的輸出選通模塊)來選通具體是哪一路從設備SCL輸出低電平。無法實現(xiàn)主設備獲取從設備的SCL電平狀態(tài)。在建立所述主設備SCL與待訪問的從設備SCL之間的雙向通道之后,所述主設備對從設備進行訪問時,會產(chǎn)生SCL下降沿,PLD能夠根據(jù)其外部管腳上升沿的變化獲取到這一信息,此時,PLD會接管時鐘線SCL,由PLD與所述從設備及主設備進行對話,PLD首先會驅動所述主設備SCL和從設備SCL為低電平,并同時進行計時。可以通過寫寄存器的方式設置計時器進行計時。步驟502:當計時時間達到時長閾值時,PLD釋放對所述從設備SCL的控制并進一步在所述從設備SCL為高電平時,釋放對所述主設備SCL的控制。所述時長閾值可以根據(jù)實際情況設置,不同I2C主設備的速度不同,則所設置的計時器的時長閾值也不同。作為較佳實施例,所述時長閾值可以設置為所述主設備上預先設定的SCL低電平時間。當所述計時時間小于所述預設的時長閾值時,PLD會等待計時時間達到時長閾值,等待期間繼續(xù)驅動所述主設備SCL和所述從設備SCL為低電平。當計時時間達到時長閾值時,PLD釋放所述從設備SCL,但不釋放主設備SCL。PLD在釋放所述從設備SCL之后,在所述從設備變?yōu)楦唠娖綍r,釋放所述主設備SCL,使得所述主設備SCL被拉高為高電平,而在所述從設備仍為低電平時,PLD保持驅動所述主設備SCL為低電平。本申請實施例方案中,之所以要建立主設備SCL與待訪問的從設備SCL之間的雙向通道,是因為需要實現(xiàn)主設備SCL與從設備SCL之間的交互,不僅主設備SCL可以影響從設備SCL,而且從設備SCL也可以影響主設備SCL。而現(xiàn)有技術中,僅有主設備至從設備方向的單向通道,只有主設備SCL可以對從設備SCL產(chǎn)生影響,從設備SCL無法影響主設備SCL。本申請實施例方案不僅適用于I2C主設備(主設備一般均為高速)和低速I2C從設備之間進行速度匹配,也同樣適用于I2C主設備和高速I2C從設備之間進行速度匹配,即可以適用于主設備對各種不同速度等級的從設備的訪問。下面按照這兩種情況分別對本申請實施例方案進行舉例說明。當主設備需要訪問任一低速從設備時,主設備產(chǎn)生SCL下降沿,如圖8所示的波形①,然后,PLD同時驅動主設備SCL和從設備SCL為低電平,如圖8中的波形②和⑤,經(jīng)過一定時間的計數(shù)器延遲,即計時時間達到預設的時長閾值(可以設定為與主設備驅動SCL低電平的時間一致)時,PLD釋放從設備SCL,但不釋放主設備SCL,并等待從設備也釋放SCL,此時由于低速從設備速度較慢,從設備SCL仍然被從設備驅動為低,如圖8中的波形③,等到從設備釋放SCL時,從設備SCL變?yōu)楦唠娖剑瑥脑O備SCL的實際波形如圖8的波形④所示。此時PLD釋放主設備SCL,如圖8中的波形⑤,使得主設備SCL被拉高為高電平,整個b it的傳輸至此結束。主設備SCL的實際波形如圖8中的⑥所示。所以主設備能夠感知到從設備SCL的低電平,會認為需要等待從設備,于是進行等待。由上述過程來完成高速主設備與低速從設備之間的速度匹配。當主設備需要訪問任一高速從設備時,使用本申請實施例方案也是可以正常通信的,如圖9所示,主設備產(chǎn)生SCL下降沿,如圖9所示的波形①,PLD同時驅動主設備SCL和從設備SCL為低電平,如圖9中的波形②和⑤,高速從設備在下拉SCL后很快就準備好傳輸,并且在PLD計時完成前釋放從設備SCL,如圖9中的波形③,然后,當PLD計時完成并釋放從設備SCL后,從設備SCL立即變?yōu)楦唠娖?,從設備SCL的實際波形如圖9中的波形④所示,接下來PLD釋放主設備SCL,主設備SCL變?yōu)楦唠娖?,如圖9中的波形⑤,一個SCL周期結束。主設備SCL的實際波形如圖9中的⑥所示。上述時長閾值設置為所述主設備上預先設定的SCL低電平時間時,使得在主設備的SCL低電平時間結束后就釋放從設備SCL,從而可以在從設備SCL變?yōu)楦唠娖胶?,立即釋放主設備SCL,不影響主設備的工作效率和性能。目前在使用PLD連接主設備與從設備的SCL時,若遇到主設備訪問低速從設備的情況,存在如下三種方案來實現(xiàn)高速主設備對低速從設備的訪問:方案一:主設備更改時鐘設置,使用較慢的速度去訪問I2C總線,即無論從設備是低速還是高速,都使用較慢的速度去訪問,以適應低速從設備,但在實際應用中,當主設備使用較慢的速度去訪問高速從設備時,可能會因為這種速度的不匹配而導致讀寫錯誤,從而會造成訪問高速從設備出錯的問題。方案二:主設備訪問低速從設備時更改時鐘設置,使用較慢的速度去訪問,當主設備訪問完該低速從設備后,再更改時鐘設置,恢復之前的速度去訪問其它高速從設備,這無疑會增加總體設計及軟件設計的工作量。方案三:如果預先知道哪一個從設備是低速從設備,則額外增加模擬開關等器件將主設備和該低速從設備單獨直連,如此會增加硬件設計的復雜度,也會增加模擬開關器件的使用,并增加器件管理的難度。而采用本申請實施例方案,主設備可以成功訪問低速從設備的同時不影響對高速從設備的訪問,且無需更改時鐘設置,無需減慢訪問頻率,即可良好地兼容高速I2C從設備和低速I2C從設備,可實現(xiàn)一個主設備對多個不同速度等級的從設備的訪問,可以提高訪問效率,顯著減少軟件設計工作量,此外,可在硬件上減少模擬開關器件的使用,提高硬件設計的簡潔度。本申請實施例的裝置功能結構示意圖如圖10所示,一種可編程邏輯器件PLD,所述PLD連接I2C主設備和從設備的I2C串行時鐘線SCL,所述主設備的一 I2C接口通過PLD擴展出至少兩條SCL ;所述PLD包括:電平驅動模塊和計時模塊,其中:電平驅動模塊,用于當所述主設備需要訪問任一從設備時,待所述主設備產(chǎn)生SCL下降沿后,同時驅動所述主設備SCL和所述從設備SCL為低電平;當計時模塊的計時時間達到時長閾值時,釋放對所述從設備SCL的控制并進一步在所述從設備SCL為高電平時,釋放對所述主設備SCL的控制;計時模塊,用于電平驅動模塊驅動所述主設備SCL和所述從設備SCL為低電平的同時進行計時。較佳地,所述電平驅動模塊還用于在所述主設備產(chǎn)生SCL下降沿之前,通過所述PLD中的選通寄存器建立所述主設備SCL與待訪問的從設備SCL之間的雙向通道。較佳地,所述時長閾值為所述主設備上預先設定的SCL低電平時間。較佳地,當所述計時時間小于時長閾值時,所述電平驅動模塊保持驅動所述主設備SCL和所述從設備SCL為低電平。本申請實施例方案通過在可編程邏輯器件PLD上實現(xiàn)I2C的串行時鐘線SCL的雙向傳輸,可實現(xiàn)主設備對低速從設備的成功訪問,且不影響主設備對高速I2C從設備的正常訪問,適用于I2C總線掛載不同速度從設備的應用,且具有反應速度快、邏輯資源占用小的優(yōu)勢。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內(nèi)。
權利要求
1.一種I2C主設備與從設備之間串行時鐘線SCL控制的方法,應用于一可編程邏輯器件PLD,所述PLD連接I2C主設備和從設備的I2C串行時鐘線SCL,所述主設備的一 I2C接口通過PLD擴展出至少兩條SCL ;其特征在于,該方法包括: 當所述主設備需要訪問任一從設備時,待所述主設備產(chǎn)生SCL下降沿后,PLD同時驅動所述主設備SCL和所述從設備SCL為低電平,并同時進行計時; 當計時時間達到時長閾值時,PLD釋放對所述從設備SCL的控制并進一步在所述從設備SCL為高電平時,釋放對所述主設備SCL的控制。
2.根據(jù)權利要求1所述的方法,其特征在于,所述主設備產(chǎn)生SCL下降沿之前進一步包括: 通過所述PLD中的選通寄存器建立所述主設備SCL與待訪問的從設備SCL之間的雙向通道。
3.根據(jù)權利要求1所述的方法,其特征在于,所述時長閾值為所述主設備上預先設定的SCL低電平時間。
4.根據(jù)權利要求1所述的方法,其特征在于,當所述計時時間小于時長閾值時,PLD保持驅動所述主設備SCL和所述從設備SCL為低電平。
5.一種可編程邏輯器件PLD,所述PLD連接I2C主設備和從設備的I2C串行時鐘線SCL,所述主設備的一 I2C接口通過PLD擴展出至少兩條SCL ;其特征在于,所述PLD包括:電平驅動模塊和計時模塊,其中: 電平驅動模塊,用于當所述主設備需要訪問任一從設備時,待所述主設備產(chǎn)生SCL下降沿后,同時驅動所述主設備SCL和所述從設備SCL為低電平;當計時模塊的計時時間達到時長閾值時,釋放對所述從設備SCL的控制并進一步在所述從設備SCL為高電平時,釋放對所述主設備SCL的控制; 計時模塊,用于電平驅動模塊驅動所述主設備SCL和所述從設備SCL為低電平的同時進行計時。
6.根據(jù)權利要求5所述的可編程邏輯器件,其特征在于,所述電平驅動模塊還用于在所述主設備產(chǎn)生SCL下降沿之前,通過所述PLD中的選通寄存器建立所述主設備SCL與待訪問的從設備SCL之間的雙向通道。
7.根據(jù)權利要求5所述的可編程邏輯器件,其特征在于,所述時長閾值為所述主設備上預先設定的SCL低電平時間。
8.根據(jù)權利要求5所述的可編程邏輯器件,其特征在于,當所述計時時間小于時長閾值時,所述電平驅動模塊保持驅動所述主設備SCL和所述從設備SCL為低電平。
全文摘要
本發(fā)明公開了I2C主設備與從設備之間串行時鐘線SCL控制的方法,應用于一可編程邏輯器件PLD,PLD連接I2C主設備和從設備的I2C串行時鐘線SCL,主設備的I2C接口通過PLD擴展出至少兩條SCL;該方法包括主設備訪問從設備時,待所述主設備產(chǎn)生SCL下降沿后,PLD同時驅動主設備SCL和從設備SCL為低電平并進行計時;當計時時間達到時長閾值時,PLD釋放所述從設備SCL并進一步在所述從設備SCL為高電平時,釋放所述主設備SCL。本發(fā)明還公開了可編程邏輯器件PLD。本發(fā)明在使用PLD連接I2C主設備和從設備的SCL時,可匹配主設備與從設備之間的速度,實現(xiàn)主設備對低速從設備的成功訪問。
文檔編號G05B19/418GK103092175SQ201310023350
公開日2013年5月8日 申請日期2013年1月21日 優(yōu)先權日2013年1月21日
發(fā)明者孫廣, 慕長林 申請人:杭州華三通信技術有限公司