專利名稱:I2c地址轉(zhuǎn)換的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的諸實施例總地涉及用于內(nèi)部集成電路總線(I2C-總線)的系統(tǒng)、設(shè)備和方法。
背景技術(shù):
內(nèi)部集成電路總線(I2C-總線)是經(jīng)常用來將低速外設(shè)附連于主板、嵌入式系統(tǒng)或蜂窩電話之中或之上的串行總線。如圖1所示,I2C-總線101僅包括兩條雙向總線,該雙向總線包括串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL)。另外如圖1所示,拉高電阻器(Rp)連接在每條數(shù)據(jù)線和供電電壓干線(VDD)之間。用于VDD的常見電壓是+5V或+3. 3V,盡管也允許具有其它(例如更高或更低)供電電壓干線的系統(tǒng)。當(dāng)總線空閑時,拉高電阻器(Rp) 將SDA和SCL線兩者拉為高(HIGH)。在圖1中,一個主機(jī)設(shè)備102 (例如微控制器)和三個隸屬設(shè)備104(分別標(biāo)示為104a、104b和104c)圖示為連接于I2C總線101。電子系統(tǒng)越來越多地使用由I2C總線互連的集成電路(IC)。這些IC由于與I2C 總線的兼容性而通常被稱為I2C兼容芯片,或更具體地稱為I2C兼容設(shè)備。示例性I2C兼容設(shè)備包括,但不局限于,微控制器、液晶顯示器(LCD)、LED驅(qū)動器、輸入/輸出端口、隨機(jī)存取存儲器(RAM)、模數(shù)轉(zhuǎn)換器(ADC)、數(shù)模轉(zhuǎn)換器(DAC)、溫度傳感器和數(shù)字信號處理器 (DSP)。這類I2C兼容設(shè)備的輸出級——它們是漏極開路或集電極開路的——可用來有選擇地拉低SDA和SCL線,由此提供數(shù)據(jù)和時鐘信號。對給定的I2C兼容設(shè)備存在四種潛在的工作模式,盡管多數(shù)設(shè)備僅使用單功能 (主機(jī)或隸屬)及其兩個模式(發(fā)送和接收)。這些模式包括主機(jī)發(fā)送——主機(jī)設(shè)備將數(shù)據(jù)發(fā)送至隸屬;主機(jī)接收——主機(jī)設(shè)備從隸屬接收數(shù)據(jù);隸屬發(fā)送——隸屬設(shè)備將數(shù)據(jù)發(fā)送至主機(jī);以及隸屬接收——隸屬設(shè)備從主機(jī)接收數(shù)據(jù)。主機(jī)一開始通過發(fā)送起始位后面跟隨想要與之通信的隸屬的7位地址(這可被稱為I2C地址),而后是代表是否希望從隸屬讀(1)或?qū)?0)至隸屬的單個讀/寫位而處于主機(jī)發(fā)送模式。起始位通知與總線連接的全部IC以偵聽總線的輸入地址。當(dāng)每個IC接收地址時,IC將該地址與其本身的地址比較。如果接收的地址與IC地址不匹配,則IC知道它未被尋址。如果接收的地址與IC地址匹配,則IC知道它正被尋址,響應(yīng)于此,IC產(chǎn)生確
5認(rèn)(ACK)位(確認(rèn)為低電平有效)。換句話說,如果總線上存在所尋址的隸屬,則該隸屬對該地址響應(yīng)以ACK位。主機(jī)隨后繼續(xù)發(fā)送或接收模式(根據(jù)其發(fā)送的讀/寫位),并且隸屬繼續(xù)其互補(bǔ)模式(分別為接收或發(fā)送)。地址和數(shù)據(jù)字節(jié)首先送出最高有效位。起始位由 SCL高電平下的SDA高-低跳變指示,停止位由SCL高電平下的SDA低-高跳變指示。如果主機(jī)設(shè)備想要對隸屬設(shè)備寫入,則它隨著隸屬發(fā)送ACK位而反復(fù)發(fā)送一個字節(jié)(在這種情形下,主機(jī)處于主機(jī)發(fā)送模式而隸屬處于隸屬接收模式)。如果主機(jī)設(shè)備想要從隸屬設(shè)備讀出,則它從隸屬反復(fù)接收一個字節(jié),主機(jī)在除了最后一個字節(jié)外的每個字節(jié)后發(fā)送一個ACK 位(在這種情形下,主機(jī)處于主機(jī)接收模式而隸屬處于隸屬發(fā)送模式)。主機(jī)隨后用終止位來結(jié)束發(fā)送,或者主機(jī)如果想要對另一次傳輸(“組合消息”)保留總線控制則可發(fā)送另一起始位。為說明的目的,由主機(jī)發(fā)送的包括起始位緊隨的7位地址然后是讀/寫位的多個位根據(jù)讀/寫位被稱為讀命令或?qū)懨?。由于只?個位用來指示隸屬的地址,因此只有2~7(即128)個可能的地址。然而,由于保留了 16個地址,通常可尋址最多112個不同的設(shè)備(即128-16= 112)。在一些情形下,要求同一 IC有多種應(yīng)用,這意味著許多相同IC (例如相同外設(shè)IC 的多個實例)可附連于同一 I2C總線。然而,由于每個設(shè)備必須具有唯一的I2C地址,因此使用具有同一 I2C地址的多個IC可能導(dǎo)致數(shù)據(jù)損壞。這種潛在問題的最常見解決方案是設(shè)計具有若干可選地址的外設(shè)I2C兼容設(shè)備。例如,I2C兼容設(shè)備可包括專用于選擇設(shè)備的地址并由此允許賦予設(shè)備四個不同地址之一的兩個引腳。然而,如果相同設(shè)備的數(shù)目超出可選地址的數(shù)目(在本例中為4),則存在相同地址重疊問題。從成本和空間角度看,單純地保持增加更多專用于選擇設(shè)備地址的引腳是不切實際的。存在幾百種當(dāng)前正在生產(chǎn)的不同I2C兼容設(shè)備。盡管其中的一些可設(shè)計成具有若干可選地址,但其它的設(shè)備設(shè)計成固定地址。由于僅可獲得112種不同的設(shè)備地址,因此很可能兩個提供完全不同功能的不同IC可具有相同地址并附連于同一 I2C總線。由于每個設(shè)備必須具有唯一的I2C地址,這能防止這兩個IC被分別尋址。如果兩個不同IC具有相同地址并連接于同一 I2C總線,這也會導(dǎo)致數(shù)據(jù)損壞。目前對前述I2C尋址局限性沒有方便的解決方案。最常見的解決方案是創(chuàng)建具有另一完全地址集的另一獨立I2C總線,但這需要在主機(jī)控制器上設(shè)置另一 I2C端口,這時不
合需的ο
發(fā)明內(nèi)容
本發(fā)明的實施例涉及轉(zhuǎn)換I2C地址的系統(tǒng)、設(shè)備和方法。這些系統(tǒng)、設(shè)備和方法可用來克服與尋址I2C兼容設(shè)備關(guān)聯(lián)的前述局限性的至少一些。根據(jù)某些實施例,用于轉(zhuǎn)換I2C地址的方法包括經(jīng)由第一 I2C兼容設(shè)備連接到的 I2C總線的主側(cè)從I2C兼容設(shè)備(例如主機(jī)設(shè)備)接收原始I2C地址。該方法還包括將原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址,并經(jīng)由第二 I 2C兼容設(shè)備連接至的I2C總線的次級側(cè)將經(jīng)轉(zhuǎn)換的I2C地址輸出至第二 I2C兼容設(shè)備(例如隸屬設(shè)備)。在某些實施例中,經(jīng)轉(zhuǎn)換的I2C地址的至少一部分轉(zhuǎn)換和至少一部分輸出是在接收到整個原始I2C地址前執(zhí)行的??赏ㄟ^從原始I2C地址減去(或加上)一偏移值來將原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的
6I2C地址,從而產(chǎn)生成經(jīng)轉(zhuǎn)換的I2C地址??墒褂靡_包扎或通過將偏移值以允許偏移值可經(jīng)由I2C總線編程的方式存儲來指定該偏移值?;蛘?,可使用可經(jīng)由I2C總線編程的查找表將原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址。在特定實施例中,這些方法可通過I2C地址轉(zhuǎn)換器來執(zhí)行。其它方法可由主機(jī)設(shè)備執(zhí)行,其中這些方法允許主機(jī)設(shè)備單獨地發(fā)送命令至均具有第一地址(例如同一地址)的兩個I2C兼容設(shè)備(例如相同類型或不同類型的兩個隸屬設(shè)備),其中兩個I2C可兼容設(shè)備中的第一個和主機(jī)設(shè)備連接于I2C總線的第一側(cè),而兩個 I2C兼容設(shè)備中的第二個連接于I2C總線的第二側(cè)。這種方法可包括通過將第一地址納入到第一命令而將第一命令發(fā)送至兩個I2C兼容設(shè)備中附連于I2C總線的第一側(cè)的第一個設(shè)備。該方法還可包括通過將第二地址納入到第二命令而將第二命令發(fā)送至兩個I2C兼容設(shè)備中附連于I2C總線的第二側(cè)的第二個設(shè)備,其中第二命令中的第二地址在兩個I2C兼容設(shè)備中的第二個接收到第二命令前被轉(zhuǎn)換成第一地址。根據(jù)實施例,I2C地址轉(zhuǎn)換器包括配置成經(jīng)由I2C總線接收原始I2C地址的電路以及配置成將接收的原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址的電路。另外,I2C地址轉(zhuǎn)換器包括配置成經(jīng)由I2C總線的次級側(cè)輸出經(jīng)轉(zhuǎn)換的I2C地址的電路。配置成將接收的原始 I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址的電路可包括自原始I2C地址減去一偏移值(或加上一偏移值)以由此產(chǎn)生經(jīng)轉(zhuǎn)換的I2C地址的電路。該電路也可包括例如存儲偏移值并允許對該偏移值編程的電路,例如寄存器。在替代實施例中,配置成將接收的原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址的電路包括可編程查找表,該可編程查找表存儲一個或多個原始I2C地址以及針對一個或多個原始I2C的每一個的經(jīng)轉(zhuǎn)換地址。根據(jù)本發(fā)明實施例的系統(tǒng)可包括I2C總線的主側(cè),且多個設(shè)備連接于I2C總線的主側(cè)。另外,該系統(tǒng)可包括I2C總線的次級側(cè),且多個設(shè)備連接于I2C總線的次級側(cè)。I2C 地址轉(zhuǎn)換器連接在I2C總線的主側(cè)和I2C總線的次級側(cè)。I2C地址轉(zhuǎn)換器配置成經(jīng)由I2C 總線的主側(cè)從連接于I2C總線主側(cè)的多個設(shè)備之一接收原始I2C地址。另外,I2C轉(zhuǎn)換器配置成將原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址,并經(jīng)由I2C總線的次級側(cè)發(fā)送經(jīng)轉(zhuǎn)換的 I2C地址以使經(jīng)轉(zhuǎn)換的I2C地址可由連接于I2C總線次級側(cè)的多個設(shè)備之一接收。該概述無意于概括本發(fā)明的所有實施例。根據(jù)下面給出的詳細(xì)說明、附圖以及權(quán)利要求,本發(fā)明的其他和替代實施例以及實施例的特征、方面以及優(yōu)點將變得更為顯而易見。
具體實施例方式本發(fā)明的特定實施例涉及I2C地址轉(zhuǎn)換器,該I2C地址轉(zhuǎn)換器可實現(xiàn)為集成電路 (IC)或具有固件的微控制器,但不局限于此。參見圖2,根據(jù)本發(fā)明一個實施例的I2C地址轉(zhuǎn)換器210 —側(cè)(其上有總線主控器102以及第一多個隸屬外圍設(shè)備104a、104b)連接于主 I2C總線IOl1 (也簡稱為I2C總線),而另一側(cè)(該側(cè)連接于第二多個隸屬外圍設(shè)備104y、 I(Mz)上形成次級I2C總線1012。由于I2C地址轉(zhuǎn)換器210本質(zhì)上延長了主I2C總線IOl1, 因此主I2C總線也被稱為I2C總線的主側(cè),而由I2C地址轉(zhuǎn)換器210形成的次級I2C總線 IOl2也被稱為I2C總線的次級側(cè)。根據(jù)某些實施例,I2C地址轉(zhuǎn)換器210可被編程以轉(zhuǎn)換I2C地址,以使主機(jī)設(shè)備能
7獨立地與具有同一 I2C地址的一對I2C兼容設(shè)備通信(例如對其發(fā)送命令)。下面參照圖 3、圖4和圖5給出這個操作如何完成的進(jìn)一步細(xì)節(jié),其中I2C地址轉(zhuǎn)換器210的不同實施例分別標(biāo)示為210a、2IOb和210c。通過轉(zhuǎn)換I2C地址,根據(jù)本發(fā)明的一個實施例,具有相同地址的多對I2C兼容設(shè)備可獨立尋址,只要一對I2C兼容設(shè)備中的一個連接于I2C總線IOl1的主側(cè)而該對I2C兼容設(shè)備中的另一個連接于I2C總線IOl2的次級側(cè)。例如,假設(shè)第一 I2C兼容設(shè)備(例如DAC) 具有7位二進(jìn)制地址0101111,而第二 I2C兼容設(shè)備(例如LED驅(qū)動器)也具有7位二進(jìn)制地址0101111。如果I2C地址轉(zhuǎn)換器210被編程為減去4的偏移值(即二進(jìn)制值100), 則位于I2C總線IOl1的主側(cè)上的主機(jī)設(shè)備(例如102)可使用二進(jìn)制地址0101111對第一 I2C兼容設(shè)備(例如DAC)尋址;而主機(jī)設(shè)備(例如102)可使用二進(jìn)制地址0110011(它等于二進(jìn)制值0101111加上二進(jìn)制值100)對位于I2C總線IOl2的次級側(cè)上的第二 I2C兼容設(shè)備(例如LED驅(qū)動器)尋址。如此,當(dāng)I2C地址轉(zhuǎn)換器210從I2C總線IOl1主側(cè)上的主機(jī)設(shè)備(例如102)接收到二進(jìn)制地址0110011時,I2C地址轉(zhuǎn)換器210將在I2C總線IOl2 的次級側(cè)上輸出二進(jìn)制地址0101111,由此允許位于次級側(cè)上的第二 I2C兼容設(shè)備(例如 LED驅(qū)動器)被尋址。在剛才描述的例子中,共享共用地址的第一和第二 I2C兼容設(shè)備是不同類型的設(shè)備,例如一個是DAC而另一個是LED驅(qū)動器。替代地,第一和第二 I2C兼容設(shè)備可以是完全相同類型的設(shè)備,例如兩例具有相同部件號的完全相同類型DAC。I2C地址轉(zhuǎn)換器210的另一種使用如下。假設(shè)特定I2C兼容設(shè)備包括專用于選擇設(shè)備的地址并由此允許賦予設(shè)備四個不同地址之一的兩個引腳。在不使用本發(fā)明實施例的 I2C地址轉(zhuǎn)換器210的情況下,該特定I2C兼容設(shè)備的四個實例可通過使用兩個引腳各自附連于同一 I2C總線以對四個設(shè)備中的每一個賦予四個不同地址中的不同的一個地址。但是如果特定I2C兼容設(shè)備的第五實例附連于該I2C總線,則特定I2C兼容設(shè)備中的兩個需要共享同一地址(由于只有四個不同地址可用),這會導(dǎo)致數(shù)據(jù)損壞。然而,如果使用本發(fā)明實施例的I2C地址轉(zhuǎn)換器210,則可獨立地對特定I2C兼容的高達(dá)八個實例進(jìn)行尋址。更具體地,I2C地址轉(zhuǎn)換器210可用來將I2C總線的主側(cè)與I2C總線的次級側(cè)劃界。這允許特定I2C兼容設(shè)備的四個實例附連于I2C總線的主側(cè)(通過使用兩個引腳來對四個設(shè)備中的每一個賦予四個不同地址中的一個不同地址),并允許該特定I2C兼容設(shè)備的四個更多實例附連于I2C總線的次級側(cè)(同樣通過使用兩個引腳來對四個設(shè)備中的每個設(shè)備賦予四個不同地址中的一個不同地址)。繼續(xù)該示例,假設(shè)I2C地址轉(zhuǎn)換器210通過從接收的I2C 地址減去偏移值來執(zhí)行I2C地址轉(zhuǎn)換,如下面結(jié)合圖3和圖4描述的那樣。連接于I2C總線IOl1主側(cè)的主機(jī)設(shè)備可使用四個獨立的原始I2C地址以對連接于I2C總線IOl1主側(cè)的特定I2C兼容設(shè)備的四個實例作寫入和讀出,而主機(jī)設(shè)備可使用四個獨立的附加I2C地址對連接于I2C總線IOl2的次級側(cè)的特定I2C兼容設(shè)備的四個實例作寫入和讀出。在該示例中,這四個獨立的附加I2C地址(用來對連接于I2C總線IOl2的次級側(cè)的特定I2C兼容設(shè)備的四個實例尋址)將等于四個獨立原始I2C地址加上偏移值?,F(xiàn)在參考圖3、圖4和圖5描述I2C地址轉(zhuǎn)換器的各個不同實施例。如前所述,在圖3、圖4和圖5中,I2C地址轉(zhuǎn)換器210的不同實施例分別標(biāo)示為210a、2IOb和210c。盡管本文中描述了 I2C地址轉(zhuǎn)換器210的多種配置,然而本領(lǐng)域內(nèi)普通技術(shù)人員將理解落在
8本發(fā)明精神和范圍內(nèi)的其它實施例也是可能的。參見圖3,在某些實施例中,I2C地址轉(zhuǎn)換器210a可通過外部引腳(例如引腳包扎)從由I2C主機(jī)(圖2中的102)提供的地址減去一偏移值(例如1、2、4或8或一些其它值)來編程。例如,參見圖3的高級圖解,四個引腳302中的每一個可選擇地接地或連接于供電電壓干線(例如VDD)以經(jīng)由解碼器304選擇由求和器306從I2C主機(jī)接收到的地址值中減去的偏移值,由此產(chǎn)生經(jīng)轉(zhuǎn)換的地址。通過適當(dāng)配置轉(zhuǎn)換器210a,附連于I2C總線的次級側(cè)的外設(shè)IC的地址可映射至不由I2C總線的主側(cè)使用的I2C地址空間中的地址。還要注意,可類似地使用除引腳外的其它類型端子以對偏移值編程以供I2C地址轉(zhuǎn)換器210 使用。在其它實施例中,I2C地址轉(zhuǎn)換器210可經(jīng)由EEPR0M(電可擦除可編程只讀存儲器)、0ΤΡ (—次性可編程)存儲器等被編程,這些存儲器可通過最終用戶藉由微控制器(圖 1中的102)使用主I2C總線來尋址轉(zhuǎn)換器210并將尋址轉(zhuǎn)換信息寫至轉(zhuǎn)換器210而被寫入。這可通過對轉(zhuǎn)換器210賦予唯一的7位地址來達(dá)成,類似于當(dāng)前的標(biāo)準(zhǔn)I2C設(shè)備并可相應(yīng)地受到控制。在某些實施例中,轉(zhuǎn)換信息可被編程為用來產(chǎn)生經(jīng)轉(zhuǎn)換的I2C地址的偏移。例如, 參照圖4的高級圖解,標(biāo)準(zhǔn)I2C控制器402可用于響應(yīng)I2C地址轉(zhuǎn)換器210b被尋址和寫入而將偏移值寫至寄存器404。之后,當(dāng)轉(zhuǎn)換器210b不被明確尋址時,求和器406從經(jīng)由I2C 總線主側(cè)從I2C主機(jī)接收的地址值中減去存儲在寄存器404中的值,由此產(chǎn)生經(jīng)由I2C總線的次級側(cè)輸出的經(jīng)轉(zhuǎn)換的地址。這種偏移值可替代地以允許對偏移值編程的其它方式存儲。例如,可將偏移值存儲在I2C地址轉(zhuǎn)換器210的非易失性存儲器內(nèi),其中該非易失性存儲器經(jīng)由I2C地址轉(zhuǎn)換器210所連接至的I2C總線編程。在圖3和圖4中,求和器306、406描述為用來從接收的地址減去一偏移值。因此, 可將求和器306、406稱為“求差器”或“減法器”。在替代實施例中,求和器(例如306和 406)可用來將偏移值加至接收的地址。注意,如果接收地址和偏移值之和超出最大地址 (例如超出1111111),則可能發(fā)生上溢。同樣,在地址轉(zhuǎn)換器減去偏移值時,在接收到的地址減去偏移值是負(fù)數(shù)的情況下可能發(fā)生下溢。因此,應(yīng)當(dāng)將注意力放在理解上溢和/或下溢會如何影響地址轉(zhuǎn)換。在其它實施例中,轉(zhuǎn)換算法或查找表可用來實現(xiàn)將次級隸屬地址再映射至I2C總線的主側(cè)上的未使用地址。例如,參見圖5,標(biāo)準(zhǔn)I2C控制器502可用來對查找表504中的多個地址中的每一個的轉(zhuǎn)換值(例如存儲在多個寄存器中,但不僅限于此)進(jìn)行編程。此后,當(dāng)I2C地址轉(zhuǎn)換器210c不被明確尋址時,如果通過I2C地址轉(zhuǎn)換器210c接收到查找表 504中的地址,則I2C地址轉(zhuǎn)換器210c經(jīng)由I2C總線的次級側(cè)輸出相應(yīng)經(jīng)轉(zhuǎn)換的地址。通常參考圖2-5描述的I2C地址轉(zhuǎn)換器210的諸個實施例可涉及一旦最初產(chǎn)品制造和最初加電定序時即被編程。根據(jù)某些實施例,在執(zhí)行該編程操作前,次級總線上的隸屬設(shè)備是不可尋址的并且被禁用。I2C地址轉(zhuǎn)換器210可使用硬件來轉(zhuǎn)換地址。作為附加或替代,I2C地址轉(zhuǎn)換器 210可使用固件和/或軟件來轉(zhuǎn)換地址。例如,I2C地址轉(zhuǎn)換器210可包括使用算法來執(zhí)行地址轉(zhuǎn)換的固件。這種算法簡化為規(guī)定經(jīng)轉(zhuǎn)換的地址等于原始地址減去偏移值。然而,可使用替代類型的算法并仍然落在本發(fā)明的范圍內(nèi)。又如,如果原始地址落在第一范圍內(nèi),則算法可規(guī)定使用第一偏移值,而如果原始地址落在第二范圍內(nèi),則算法規(guī)定使用第二偏移值。 算法也可使用除減法以外的其它函數(shù),例如可使用加法。算法使用乘法和/或除法也落在本發(fā)明的實施例的范圍內(nèi),但使用這些函數(shù)比使用減法和/或加法更為復(fù)雜。參照圖25對I2C地址轉(zhuǎn)換器的各實施例進(jìn)行總括地描述,圖2_5示出I2C地址轉(zhuǎn)換器經(jīng)由I2C總線的主側(cè)的主SDA線從I2C主機(jī)接收地址,并經(jīng)由I2C總線的次級側(cè)的次級SDA線輸出經(jīng)轉(zhuǎn)換的地址。然而,I2C地址轉(zhuǎn)換器也可接收SCL線,并如下面描述的那樣, 在某些實施例中可對SCL線施加控制。I2C地址轉(zhuǎn)換器可利用I2C總線的同步特征從而以完全透明和遵照規(guī)范的方式執(zhí)行地址轉(zhuǎn)換。根據(jù)特定實施例,下面示出一個順序步驟1 :I2C地址轉(zhuǎn)換器(例如210)從主機(jī)(例如102)接收七個I2C地址位,如同任何附連的隸屬ic。I2C地址轉(zhuǎn)換器輸出保持無效(SDA和SCL輸出高)。步驟2:—旦I2C地址轉(zhuǎn)換器已接收到(例如暫存)七個地址位,則主側(cè)上的SCL 線由I2C地址轉(zhuǎn)換器保持低。此時,轉(zhuǎn)換地址(例如從存儲的地址中減去偏移值),并在次級側(cè)上串行地驅(qū)動輸出。主側(cè)上的總線活動掛起,同時SCL線通過I2C地址轉(zhuǎn)換器保持低。步驟3 —旦經(jīng)轉(zhuǎn)換的地址已完全移出隸屬側(cè),則次級側(cè)上的SDA線邏輯連接于主側(cè)上的SDA線。步驟4 在短晳延時后,隸屬側(cè)上的SCL線被釋放并邏輯連接于主側(cè)上的SCL線。 這將導(dǎo)致I2C地址轉(zhuǎn)換器兩側(cè)上的SCL線變高。步驟5:此時,I2C地址轉(zhuǎn)換器的主側(cè)上的SCL和SDA線邏輯連接于次級側(cè)上的SCL 和SDA線。剩下的I2C事務(wù)以透明方式完成,就像I2C地址轉(zhuǎn)換器簡單地由導(dǎo)線代替那樣 (但由于I2C地址轉(zhuǎn)換器內(nèi)的可選緩沖器電路而可能具有微小的延時)。圖6示出前述過程的示例性時序圖。也可使I2C地址轉(zhuǎn)換器調(diào)整隸屬側(cè)上的地址傳輸速度以使其粗略地匹配于主機(jī)側(cè)的速度。在最初主機(jī)地址傳輸過程中測量時鐘頻率提供必要的信息以調(diào)整I2C地址轉(zhuǎn)換器的內(nèi)部時鐘,以當(dāng)發(fā)送隸屬地址時粗略地匹配時鐘頻率。在某些實施例中,I2C地址轉(zhuǎn)換器210可配置成使用局限于值2~N(其中N = 1、2、 3、4、5或6)的偏移來執(zhí)行轉(zhuǎn)換。在這些實施例中,可使I2C地址轉(zhuǎn)換器210在從主機(jī)接收到全部七個地址前開始地址轉(zhuǎn)換,并在接收到全部七個地址位和/或完成地址轉(zhuǎn)換前開始輸出I2C總線的次級側(cè)上的經(jīng)轉(zhuǎn)換地址的一部分。當(dāng)與主側(cè)總線時序相比時,這樣做可減少連接于I2C總線次級側(cè)的隸屬作出響應(yīng)的等待時間。換句話說,如果轉(zhuǎn)換偏移值是2~N 值的二進(jìn)制加權(quán),則有一種情形是經(jīng)轉(zhuǎn)換的地址的最高有效位(MSB)在地址轉(zhuǎn)換器210(從主機(jī))接收擬轉(zhuǎn)換的全部7位I2C地址前可能開始移出地址轉(zhuǎn)換器210。這是因為如果偏移值的最低有效位(LSB)為零,則偏移值的任何減或加不影響擬轉(zhuǎn)換的I2C地址的至少一些LSB。對于特定例子,假設(shè)偏移值是十進(jìn)制數(shù)32 (即2~5 = 32),其二進(jìn)制值為0100000。 另外假設(shè)該主機(jī)正對十進(jìn)制地址53寫入,其二進(jìn)制值為0110101。假設(shè)I2C地址轉(zhuǎn)換器 210從接收自主機(jī)的I2C地址減去偏移值,則經(jīng)轉(zhuǎn)換的地址將是53-32 = 21,即二進(jìn)制值 0010101。注意I2C地址的五個LSB不受轉(zhuǎn)換影響,更具體地,一旦兩個MSB由I2C地址轉(zhuǎn)換器210接收,則轉(zhuǎn)換不再變化。因此,在I2C地址轉(zhuǎn)換器210接收擬轉(zhuǎn)換的整個I2C地址前(在本例中是在地址轉(zhuǎn)換器210接收擬轉(zhuǎn)換的地址的5個LSB前)地址轉(zhuǎn)換(在本例中通過減法來獲得)可以是完成的并且一部分得到的經(jīng)轉(zhuǎn)換地址可能開始移出(I2C總線的次級側(cè)上的)I2C地址轉(zhuǎn)換器210。圖7是用來概括方法的高級流程圖,該方法由I2C轉(zhuǎn)換器使用以根據(jù)本發(fā)明實施例轉(zhuǎn)換I2C地址。參見圖7,在步驟702,經(jīng)由第一 I2C兼容設(shè)備連接至的I2C總線的主側(cè)從第一 I2C兼容設(shè)備接收原始I2C地址。在步驟704,原始I2C地址被轉(zhuǎn)換至經(jīng)轉(zhuǎn)換的I2C 地址。在步驟706,經(jīng)轉(zhuǎn)換的I2C地址經(jīng)由第二 I2C兼容設(shè)備連接至的I2C總線的次級側(cè)輸出至第二 I2C兼容設(shè)備(例如隸屬設(shè)備)。根據(jù)實施例,在步驟704的地址轉(zhuǎn)換是通過從原始I2C地址減去(或加上)偏移值以產(chǎn)生經(jīng)轉(zhuǎn)換的I2C地址來完成的。該偏移值可使用一個或多個端子(例如引腳)來規(guī)定,其中每個端子有選擇地連接于供電電壓干線或接地,例如參考圖3描述的那樣。替代地,偏移值可存儲在寄存器或非易失存儲器中,例如前面參考圖4所述那樣。這種存儲的偏移值可經(jīng)由I2C總線編程,如同前面參考圖4描述的那樣。在一替代實施例中,在步驟704 的地址轉(zhuǎn)換是使用查找表完成的,例如前面參考圖5描述的那樣。該查找表可經(jīng)由I2C總線編程,就像前面參考圖5描述的那樣。使用如前所述除簡單減法或加法以外的算法執(zhí)行步驟704的地址轉(zhuǎn)換也落在本發(fā)明的范圍內(nèi)。圖8是用來概括方法的高級流程圖,該方法由主機(jī)設(shè)備使用,允許主機(jī)設(shè)備獨立地將命令發(fā)送至均具有相同地址的兩個I2C兼容設(shè)備,其中兩個I2C兼容設(shè)備中的第一個和主機(jī)設(shè)備連接于I2C總線的第一側(cè),而兩個I2C兼容設(shè)備的第二個連接于I2C總線的第二側(cè)。參照圖8,在步驟802,主機(jī)通過將第一地址納入第一命令而將第一命令送至兩個I2C 兼容設(shè)備中的第一個,該第一個I2C兼容設(shè)備附連于I2C總線的第一側(cè)。在步驟804,主機(jī)通過將第二地址納入第二命令而將第二命令發(fā)送至兩個I2C兼容設(shè)備中的第二個,該第二個I2C兼容設(shè)備附連于I2C總線的第二側(cè),其中第二命令中的第二地址在兩個I2C兼容設(shè)備中的第二個接收到第二命令前被轉(zhuǎn)換成第一地址。上述描述是本發(fā)明的優(yōu)選實施例。出于說明和描述目的提供這些實施例,但它們不旨在窮舉或?qū)⒈景l(fā)明限制在所公開的精確形式。許多改型和變化對本領(lǐng)域內(nèi)技術(shù)人員而言是明顯的。這些實施例的選擇和描述是為了最好地闡述本發(fā)明的原理及其實踐應(yīng)用,由此使本領(lǐng)域內(nèi)技術(shù)人員理解本發(fā)明。微小的修改和變化相信落在本發(fā)明的精神和范圍內(nèi)。 本發(fā)明的范圍旨在由下面的權(quán)利要求及其等效方案限定。
圖1是用來解釋I2C兼容設(shè)備通常如何與I2C總線中使用的另一 I2C兼容設(shè)備通信的高級方框圖。圖2是根據(jù)本發(fā)明實施例解釋I2C地址轉(zhuǎn)換器如何一側(cè)連接于主I2C總線而另一側(cè)形成次級I2C總線的高級框圖。圖3-5示出用于編程圖2中介紹的I2C轉(zhuǎn)換器的本發(fā)明各實施例。圖6是用來示出I2C地址轉(zhuǎn)換器如何利用I2C總線的同步特征來以透明和遵照規(guī)范的方式執(zhí)行地址轉(zhuǎn)換的示例性時序圖。圖7是用來概括根據(jù)本發(fā)明實施例的方法的高級流程圖,該方法由I2C轉(zhuǎn)換器使用以轉(zhuǎn)換I2C地址。
11
圖8是用來概括一方法的高級流程圖,該方法由主機(jī)設(shè)備使用,該方法允許主機(jī)設(shè)備獨立發(fā)送命令至均具有同一地址的兩個I2C兼容設(shè)備,其中兩個I2C兼容設(shè)備中的第一個和主機(jī)設(shè)備連接于I2C總線的第一側(cè),而兩個I2C兼容設(shè)備中的第二個連接于I2C總
線的第二二側(cè)。
附圖中主要組件的附圖標(biāo)記列表
101 內(nèi)部集成電路總線(I2C總:
IOl1 主I2C總線
IOl2次級I2C總線
102主設(shè)備
104a,104b,104c. · ·隸屬設(shè)備
104y,104z
210,210a,210b,210c12C地址轉(zhuǎn)換器
302引腳
304解碼器
306,406求和器
402,502I2C控制器
404寄存器
504查找表
702,704,708,802,804 步驟
Rp拉高電阻器
SCL串行時鐘線
SDA串行數(shù)據(jù)線
VDD供電電壓干線
1權(quán)利要求
1.一種方法,包括(a)接收原始I2C地址;(b)將所述原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址;以及(c)輸出所述經(jīng)轉(zhuǎn)換的I2C地址。
2.如權(quán)利要求1所述的方法,其特征在于步驟(a)包括經(jīng)由第一 I2C兼容設(shè)備連接至的I2C總線的主側(cè)從所述第一 I2C兼容設(shè)備接收所述原始I2C地址;以及步驟(c)包括經(jīng)由第二 I2C兼容設(shè)備連接至的I2C總線的次級側(cè)將經(jīng)轉(zhuǎn)換的I2C地址輸出至第二 I2C兼容設(shè)備。
3.如權(quán)利要求2所述的方法,其特征在于,所述第一I2C兼容設(shè)備包括主機(jī)設(shè)備,而所述第二 I2C兼容設(shè)備包括隸屬設(shè)備。
4.如權(quán)利要求1所述的方法,其特征在于步驟(b)包括從所述原始I2C地址減去或加上一偏移值以產(chǎn)生經(jīng)轉(zhuǎn)換的I2C地址。
5.如權(quán)利要求4所述的方法,其特征在于,所述偏移值是使用一個或多個端子規(guī)定的, 其中每個端子有選擇地連接于供電電壓干線或接地。
6.如權(quán)利要求4所述的方法,其特征在于,存儲所述偏移值。
7.如權(quán)利要求6所述的方法,其特征在于,所述存儲的偏移值是可經(jīng)由I2C總線編程的。
8.如權(quán)利要求1所述的方法,其特征在于步驟(b)包括使用查找表來基于所述原始I2C地址來產(chǎn)生經(jīng)轉(zhuǎn)換的I2C地址。
9.如權(quán)利要求8所述的方法,其特征在于,所述查找表是可經(jīng)由I2C總線編程的。
10.如權(quán)利要求1所述的方法,其特征在于步驟(b)包括使用算法來基于所述原始I2C地址來產(chǎn)生經(jīng)轉(zhuǎn)換的I2C地址。
11.如權(quán)利要求1所述的方法,其特征在于,在步驟(b)的至少一部分轉(zhuǎn)換和在步驟 (c)的至少一部分輸出是在步驟(a)接收到整個原始I2C地址前執(zhí)行的。
12.—種獨立地發(fā)送命令至均具有第一地址的兩設(shè)備的方法,所述方法包括(a)通過將第一地址納入第一命令而將第一命令送至兩設(shè)備中的第一設(shè)備;以及(b)通過將不同于所述第一地址的第二地址納入第二命令而將第二命令送至兩設(shè)備中的第二設(shè)備,其中所述第二命令中的第二地址在所述設(shè)備中的第二設(shè)備接收到第二命令前被轉(zhuǎn)換成第一地址。
13.如權(quán)利要求12所述的方法,其特征在于,所述方法由主機(jī)設(shè)備使用以允許主機(jī)設(shè)備獨立地將命令發(fā)送至均具有第一地址的兩個I2C兼容設(shè)備,其中所述兩個I2C兼容設(shè)備中的第一設(shè)備和所述主機(jī)設(shè)備連接于I2C總線的第一側(cè),而所述兩個I2C兼容設(shè)備中的第二設(shè)備連接于所述I2C總線的第二側(cè),且其中步驟(a)包括通過將第一地址納入第一命令而將第一命令送至兩I2C兼容設(shè)備中的第一設(shè)備,所述第一設(shè)備附連于I2C總線的第一側(cè);以及步驟(b)包括通過將第二地址納入第二命令而將第二命令發(fā)送至兩個I2C兼容設(shè)備中的第二設(shè)備,所述第二設(shè)備附連于I2C總線的第二側(cè),其中所述第二命令中的第二地址在兩個I2C兼容設(shè)備中的第二設(shè)備接收到第二命令前被轉(zhuǎn)換成第一地址。
14.一種I2C地址轉(zhuǎn)換器,包括配置成接收原始I2C地址的接收電路;配置成將接收的原始I2C地址轉(zhuǎn)換至經(jīng)轉(zhuǎn)換的I2C地址的轉(zhuǎn)換電路;以及配置成輸出經(jīng)轉(zhuǎn)換的I2C地址的輸出電路。
15.如權(quán)利要求14所述的I2C地址轉(zhuǎn)換器,其特征在于所述接收電路配置成經(jīng)由I2C總線的主側(cè)接收原始I2C地址;以及所述輸出電路配置成經(jīng)由I2C總線的次級側(cè)輸出經(jīng)轉(zhuǎn)換的I2C地址。
16.如權(quán)利要求14所述的I2C地址轉(zhuǎn)換器,其特征在于,所述轉(zhuǎn)換電路包括 基于偏移值修改原始I2C地址由此產(chǎn)生經(jīng)轉(zhuǎn)換的I2C地址的電路。
17.如權(quán)利要求16所述的I2C地址轉(zhuǎn)換器,其特征在于,所述轉(zhuǎn)換電路還包括存儲所述偏移值的電路。
18.如權(quán)利要求17所述的I2C地址轉(zhuǎn)換器,其特征在于,所述轉(zhuǎn)換電路還包括允許對所述偏移值編程的電路。
19.如權(quán)利要求14所述的I2C地址轉(zhuǎn)換器,其特征在于,所述轉(zhuǎn)換電路包括可編程查找表,所述可編程查找表存儲一個或多個原始I2C地址和針對一個或多個原始I2C地址中每一個的經(jīng)轉(zhuǎn)換的地址。
20.如權(quán)利要求14所述的I2C地址轉(zhuǎn)換器,其特征在于原始I2C地址通過轉(zhuǎn)換電路的轉(zhuǎn)換的至少一部分發(fā)生在接收電路接收到整個的原始 I2C地址前;以及至少一部分經(jīng)轉(zhuǎn)換的I2C地址在接收電路接收到整個的原始I2C地址前由輸出電路輸出。
21.—種系統(tǒng),包括 I2C總線的主側(cè);連接于所述I2C總線主側(cè)的多個設(shè)備; I2C總線的次級側(cè);連接于所述I2C總線次級側(cè)的多個設(shè)備;以及連接在所述I2C總線的主側(cè)和所述I2C總線的次級側(cè)之間的I2C地址轉(zhuǎn)換器; 其中,所述12C地址轉(zhuǎn)換器配置成經(jīng)由I2C總線的主側(cè)從連接于所述I2C總線主側(cè)的設(shè)備之一接收原始I2C地址; 將所述原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址;以及將經(jīng)轉(zhuǎn)換的I2C地址經(jīng)由所述I2C總線的次級側(cè)發(fā)送,以使所述經(jīng)轉(zhuǎn)換的I2C地址能由連接于I2C總線的次級側(cè)的設(shè)備接收。
22.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述I2C地址轉(zhuǎn)換器配置成通過從所述原始I2C地址減去偏移值或?qū)⑵浦导拥剿鲈糏2C地址來將所述原始I2C地址轉(zhuǎn)換至經(jīng)轉(zhuǎn)換的I2C地址。
23.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述I2C地址轉(zhuǎn)換器配置成使用查找表將所述原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址。
24.如權(quán)利要求21所述的系統(tǒng),其特征在于,連接于所述I2C總線的次級側(cè)的所述多個設(shè)備中的每個設(shè)備包括I2C地址;經(jīng)由所述I2C總線的次級側(cè)接收經(jīng)轉(zhuǎn)換的I2C地址;以及將所述經(jīng)轉(zhuǎn)換的I2C地址與其I2C地址比較。
全文摘要
本發(fā)明的實施例涉及轉(zhuǎn)換I2C地址的系統(tǒng)、設(shè)備和方法。根據(jù)實施例,轉(zhuǎn)換I2C地址的方法包括經(jīng)由第一I2C兼容設(shè)備連接到的I2C總線從第一I2C兼容設(shè)備接收原始I2C地址。該方法還包括將原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址,并經(jīng)由隸屬設(shè)備連接至的I2C總線的次級側(cè)將經(jīng)轉(zhuǎn)換的I2C地址輸出至第二I2C兼容設(shè)備。可通過從原始I2C地址減去(或加上)一偏移值來將原始I2C地址轉(zhuǎn)換成經(jīng)轉(zhuǎn)換的I2C地址,從而產(chǎn)生成經(jīng)轉(zhuǎn)換的I2C地址。該偏移值可使用引腳包扎來規(guī)定,或通過將偏移值存儲在可經(jīng)由I2C總線編程的寄存器或非易失存儲器中來規(guī)定。替代地,可經(jīng)由I2C總線編程的查找表可用來執(zhí)行I2C地址轉(zhuǎn)換。
文檔編號G06F13/42GK102339267SQ201110158929
公開日2012年2月1日 申請日期2011年5月30日 優(yōu)先權(quán)日2010年6月4日
發(fā)明者D·B·貝爾, P·J·班澤爾 申請人:英特賽爾美國股份有限公司