專利名稱:動態(tài)配置i的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種配置I2C地址的系統(tǒng)及方法,特別是涉及一種動態(tài)配置多臺從機的I2C地址的系統(tǒng)及方法。
背景技術(shù):
I2C(Inter Integrated Circuit)接口是雙線式串聯(lián)總線接口,該技術(shù)為飛利浦公司所研發(fā)。其I2C裝置的線路主要為一時脈腳位(SCL)、一數(shù)據(jù)腳位(SDA)、一接地腳位(GND)、一應(yīng)用線路及一應(yīng)用線路所用的電源(VCC)所組合而成。I2C總線(I2CBus)是雙向、兩線、串行以及多主控(Multi-master)接口標(biāo)準(zhǔn),具有總線仲裁機制,適合在器件之間進行近距離、非經(jīng)常性的數(shù)據(jù)通信。由于其使用兩線簡單的硬件接口,I2C總線的應(yīng)用越來越廣泛。實現(xiàn)I2C總線通信協(xié)議主要有兩種方法其一是利用微控制器(MCU)對兩根I/O端口進行軟件編程,模擬I2C總線的SCL和SDA的時序要求;其二是使用專用I2C總線控制核,但受主機(Host)接口方式和時鐘頻率的限制,在有些場合應(yīng)用并不方便。
I2C接口有完善的協(xié)議來確保發(fā)送與接收數(shù)據(jù)的可靠性。當(dāng)發(fā)送數(shù)據(jù)時,一個設(shè)備作為主機(Host),控制總線傳輸和產(chǎn)生時鐘信號,而其它設(shè)備作為從機(Slave)。除了通用呼叫支持外,所有從機協(xié)議部分都有一硬件模塊實現(xiàn),而主機協(xié)議部分需要由軟件實現(xiàn)。該硬件模塊可以實現(xiàn)所有的I2C主機協(xié)議、通用呼叫地址以及高達1Mpbs的數(shù)據(jù)傳輸率。
在I2C的協(xié)議中,每一設(shè)備都有一個I2C地址。當(dāng)主機開始一次數(shù)據(jù)傳輸時,它首先發(fā)送需“通話”從機的地址,所有從機都“接聽”該地址,并判斷該地址是否與自己的地址匹配。然而由于主機只有一條I2C總線,可卻要與許多從機進行通信。根據(jù)上述I2C的協(xié)議,主機必需分配不同的I2C地址給每一設(shè)備,否則主機與多臺從機進行通信時會發(fā)生很多問題,例如主機原本對一從機存取,卻變成對另一從機存取。因此必須解決配置每一從機的I2C地址問題,以確保主機與多臺從機之間正常進行通信。
關(guān)于主機與多臺從機通過I2C總線進行通信的技術(shù)曾揭露于2004年11月01日公告的專利號為223159的中國臺灣專利,其專利名稱為“使用集成電路聯(lián)機總線為接口的數(shù)據(jù)傳輸方法及電子系統(tǒng)”。該專利揭露了一種通過一主控裝置與具有相同I2C地址的多臺從屬裝置進行數(shù)據(jù)傳輸,包括一集成電路聯(lián)機總線,具有一數(shù)據(jù)信號線以及一時脈信號線;多臺從屬裝置,均具有相同的一I2C地址,上述每個從屬裝置均具有一第一端以及一第二端,其中上述第一端耦接至上述總線的數(shù)據(jù)信號線;一主控裝置,具有一第一端、第二端分別耦接至上述集成電路聯(lián)機總線的數(shù)據(jù)信號線以及時脈信號線;一選擇器,具有多臺輸出端分別耦接至上述多臺從屬裝置的第二端,一輸入端耦接至上述總線的時脈信號線;其中當(dāng)上述主控裝置欲進行數(shù)據(jù)傳輸時,上述主控裝置會輸出一選擇信號至上述選擇器,并且上述主控裝置會先接至上述數(shù)據(jù)信號線的準(zhǔn)位,接著再接至上述時脈信號線的準(zhǔn)位,而上述選擇器是依據(jù)上述選擇信號,選擇出上述多臺從屬裝置的一者,并且接至上述被選擇到的多臺從屬裝置的第二端的準(zhǔn)位,致使上述被選擇到的從屬裝置與上述主控裝置進行數(shù)據(jù)傳輸。
上述技術(shù)的不足處在于,需在主機與多臺從機之間增加一選擇器來實現(xiàn)主機與多臺從機之間數(shù)據(jù)傳輸,從而增加了硬件成本;并且主機在同一時間內(nèi)只能與一臺從機進行數(shù)據(jù)傳輸,而不能實現(xiàn)主機與多臺從機之間進行同步地數(shù)據(jù)傳輸。為克服上述先前技術(shù)的不足,需提供一種動態(tài)配置I2C地址的系統(tǒng)及方法,通過主機判斷并指定不同的地址來動態(tài)配置多臺從機的I2C地址,從而確保主機與多臺從機之間正常通信。
發(fā)明內(nèi)容本發(fā)明的主要目的在于提供一種動態(tài)配置I2C(Inter IntegratedCircuit)地址的系統(tǒng),一主機通過延遲時間來給每一從機動態(tài)配置不同的I2C地址,以達到主機與多臺從機之間能正常通信的目的。
本發(fā)明的另一目的在于提供一種動態(tài)配置I2C地址的方法,一主機通過延遲時間來給每一從機動態(tài)配置不同的I2C地址,以達到主機與多臺從機之間能正常通信的目的。
為達成上述發(fā)明目的,本發(fā)明提供一種動態(tài)配置I2C地址的系統(tǒng)。該系統(tǒng)包括一主機、多臺從機及一I2C總線。所述的主機包括一微處理器,用于與多臺從機建立通信機制;一I2C接口,用于將所述主機的I2C信號透過所述I2C總線傳送給第一從機。每一從機包括一微處理器以及芯片J3、J5及J6。其中,每一微處理器至少有一信號輸入腳位P1以及一信號輸出腳位P7,其中信號輸入腳位P1透過一提升電阻R1連接一信號電源(VCC),信號輸出腳位P7連接下一從機的信號輸入腳位P1;所述的第一從機的芯片J3,用于將主機的I2C信號(SCL、SDA及GND)傳送給芯片J5,除第一從機以外的芯片J3均未接至主機的I2C總線上;所述的芯片J5,用于主機的I2C信號或第一從機輸出的I2C信號傳送給芯片J6;所述的芯片J6,用于將該從機的芯片J5的信號傳送給下一從機的芯片J5。每一從機的微處理器均裝載有一I2C地址配置程序,該I2C地址配置程序包括一信號設(shè)定模塊,用于設(shè)定第一從機的信號輸出腳位P7的信號,并判斷每一從機的信號輸入腳位P1的信號;一延時控制模塊,用于控制多臺從機之間沒有同步開機的誤差時間,以及配置I2C地址所需的安全時間;一I2C地址運算模塊,用于計算每一從機的I2C地址,并輸出該I2C地址至主機,從而使主機與多臺從機能正常通信。
本發(fā)明還提供一種動態(tài)配置I2C地址的方法,一主機通過延遲時間來給每一從機動態(tài)配置不同的I2C地址,該方法包括如下步驟(a)設(shè)定計數(shù)變量i,并初始化該計數(shù)變量i=0;(b)將第一從機的信號輸出腳位P7的輸出信號值設(shè)置為“0”;(c)延時控制模塊延遲T1時間(例如70ms),以便控制多臺從機之間沒有同步開機的誤差時間;(d)I2C地址運算模塊作計數(shù)變量i=i+1運算;(e)信號設(shè)定模塊判斷信號輸入腳位P1的輸入信號值是否為“1”;(f)若該信號輸入腳位P1的輸入信號不為“1”,則延時控制模塊每延遲T2時間(例如1000ms)即檢查P1的輸入信號值是否為“1”,并作計數(shù)變量i=i+1運算;若該信號輸入腳位P1的輸入信號值為“1”,則將該計數(shù)變量i的值作為該從機的I2C地址,并將該I2C地址通知主機;(g)延時控制模塊延遲T3時間(例如50ms),以確保配置I2C地址所需的安全時間;將信號輸出腳位P7的信號設(shè)定為“1”;(h)主機判斷所有從機的I2C地址是否配置完畢;若還有其它從機未配置I2C地址,則繼續(xù)配置其它從機的I2C地址;若所有從機的I2C地址均配置完畢,則結(jié)束I2C地址配置流程。
實施本發(fā)明動態(tài)配置I2C地址的系統(tǒng)及方法,一主機與多臺從機之間利用延遲時間的機制,實現(xiàn)主機判斷并動態(tài)指定不同的地址來配置多臺從機的I2C地址,從而使主機與多臺從機之間能進行正常通信。
圖1是本發(fā)明動態(tài)配置I2C地址的系統(tǒng)硬件架構(gòu)圖。
圖2是本發(fā)明動態(tài)配置I2C地址的系統(tǒng)信號流向圖。
圖3是本發(fā)明動態(tài)配置I2C地址的系統(tǒng)的從機功能模塊圖。
圖4是本發(fā)明動態(tài)配置I2C地址的方法流程圖。
具體實施方式圖1所示,是本發(fā)明動態(tài)配置I2C(Inter Integrated Circuit)地址的系統(tǒng)硬件架構(gòu)圖。該動態(tài)配置I2C地址的系統(tǒng)包括一主機(Host)1、多臺從機(Slave)2及I2C總線(I2C Bus)3。其中,主機1包括一微處理器(CPU)10及一I2C接口11。該微處理器10用于動態(tài)分配不同的I2C地址給多臺從機2,從而使主機1與多臺從機2建立通信機制;該I2C接口11用于將主機1的I2C信號透過I2C總線3傳送給從機2,所述的I2C信號包括一時脈信號(SCL)、一數(shù)據(jù)信號(SDA)及一接地信號(GND)。每一從機2至少需一微處理器20、以及芯片J3、J5及J6。該微處理器20包括一信號輸入腳位P1以及一信號輸出腳位P7,其中信號輸入腳位P1透過一提升電阻R1連接一電源腳位(VCC),信號輸出腳位P7連接下一個從機2的微處理器20的信號輸入腳位P1。所述的提升電阻R1用于當(dāng)微處理器20的信號輸入腳位P1沒有接收到信號輸出腳位P7的信號時,通過VCC給信號輸入腳位P1一個高電壓。第一從機2的芯片J3通過SCL腳位、SDA腳位及GND腳位連接到主機1端的I2C總線3上,其用于將主機1的I2C信號(SCL、SDA及GND)傳送給芯片J5的信號腳位(C0、D0及G0),除第一從機2以外的芯片J3均未接至I2C總線3上。芯片J5用于將主機1的I2C信號(SCL、SDA及GND)或上一個從機2的信號腳位(C0、D0及G0)輸出的I2C信號傳送給芯片J6的信號腳位(C1、D1及G1)。芯片J6用于將芯片J5的信號腳位(C0、D0及G0)傳送給下一個從機2的芯片J5的信號腳位(C0、D0及G0)。
圖2所示,是本發(fā)明動態(tài)配置I2C地址的系統(tǒng)的信號流向圖。主機1的I2C接口11透過I2C總線3將I2C信號輸出至第一從機2的芯片J3,芯片J3將該I2C信號透過芯片J5傳送給芯片J6,芯片J6再將該I2C信號傳送給第二從機2的芯片J5。由于第二從機2的芯片J3沒有連接至主機1的I2C接口11上,所以第二從機2只能接收到第一從機2的芯片J6輸出的信號。由該信號流可以看出第一從機2、第二從機2及其它從機2所接收到的I2C信號都是由主機1發(fā)出的I2C信號,其共享同一I2C總線3,因此該多臺從機2與主機1進行通信時需要不同的I2C地址。
圖3所示,是本發(fā)明動態(tài)配置I2C地址的系統(tǒng)的從機功能模塊圖。每一從機2的微處理器20均裝載有一I2C地址配置程序200,其通過該I2C地址配置程序200及相應(yīng)的硬件與主機1進行動態(tài)配置I2C地址。該I2C地址配置程序200包括一信號設(shè)定模塊201、一延時控制模塊202及一I2C地址運算模塊203。其中,信號設(shè)定模塊201用于設(shè)定每一從機2的信號輸出腳位P7的信號值,并判斷每一從機2的信號輸入腳位P1的信號值。所述的腳位P1及腳位P7的信號值“1”表示高電壓信號,信號值“0”表示低電壓信號。延時控制模塊202用于控制多臺從機2之間沒有同步開機的誤差時間,以及配置I2C地址所需的安全時間。I2C地址運算模塊203是用于計算每一從機2的I2C地址,并輸出該I2C地址至主機1以便與主機1建立一通信信道,從而確保多臺從機2能與主機1正常通信。
圖4所示,是本發(fā)明動態(tài)配置I2C地址的方法流程圖。該動態(tài)配置I2C地址的方法是在I2C地址配置程序200及相應(yīng)的硬件基礎(chǔ)上,通過延遲時間來給多臺從機2配置不同的I2C地址,從而使主機1與多臺從機2之間建立安全通信信道。其具體實施步驟如下當(dāng)每一從機2在打開電源時,從機2的微處理器20設(shè)定計數(shù)變量i,并初始化該計數(shù)變量i=0(步驟S10)。此時所有從機2的信號輸入腳位P1并沒有接收到主機1所給的信號,只有提升電阻R1給其信號輸入腳位P1一個高電壓信號,即其信號輸入腳位P1的輸入信號為“1”。每一從機2的信號設(shè)定模塊201則將其信號輸出腳位P7的輸出信號設(shè)置為“0”,此時所有與信號輸出腳位P7連接的信號輸入腳位P1的輸入信號均為“0”(步驟S11)。延時控制模塊202延遲T1時間(例如70ms的延遲時間),以便控制多臺從機2之間沒有同步開機的誤差時間(步驟S12)。I2C地址運算模塊203作計數(shù)變量i=i+1運算(步驟S13)。信號設(shè)定模塊201判斷一從機2的信號輸入腳位P1的信號值是否為“1”(步驟S14)。若該信號輸入腳位P1的信號不為“1”,說明主機1的I2C還未到達該從機2,則延時控制模塊202每延遲T2時間(例如1000ms)即檢查一次P1的輸入信號值是否為“1”(步驟S15);若該信號輸入腳位P1的信號值為“1”,說明主機1的I2C已經(jīng)到達該從機2,則I2C地址運算模塊203計算從機2的I2C地址值,即將計數(shù)變量i的值作為該從機2的I2C地址值(步驟S16)。延時控制模塊202再延遲T3時間(例如50ms),以確保配置I2C地址所需的安全時間(步驟S17)。信號設(shè)定模塊201將信號輸出腳位P7的信號設(shè)定為“1”(步驟S18)。主機1的微處理器10判斷所有從機2的I2C地址是否配置完畢(步驟S19)。若還有其它從機2未配置I2C地址,則轉(zhuǎn)向步驟S13繼續(xù)配置其它從機2的I2C地址;若所有從機2的I2C地址均配置完畢,則結(jié)束I2C地址的配置流程。
以下舉一個具體實例來說明如何配置每一從機2的I2C地址當(dāng)每一從機2在打開電源時,從機2的微處理器20設(shè)定計數(shù)變量i,并初始化該計數(shù)變量i=0。此時所有從機2的信號輸入腳位P1并沒有接收到主機1所給的I2C信號,只有提升電阻R1給每一信號輸入腳位P1一個高電壓,即信號輸入腳位P1的信號為“1”。接著每一從機2的信號設(shè)定模塊201將從機2的信號輸出腳位P7的輸出信號設(shè)置為“0”,此時所有與信號輸出腳位P7連接的信號輸入腳位P1的輸入信號均為“0”。延時控制模塊202延遲70ms的時間,信號設(shè)定模塊201判斷信號輸入腳位P1的輸入信號值是否為“1”,因第一從機2的信號輸入腳位P1只有提升電阻R1給的高電壓,其信號輸入腳位P1的信號始終為“1”,則I2C地址運算模塊203作計數(shù)變量i=i+1=0+1=1,并計算第一從機2的I2C地址值等于i=1,因此第一從機2的I2C地址值為1。當(dāng)?shù)诙臋C2開機后,信號設(shè)定模塊201判斷第二從機2的信號輸入腳位P1的輸入信號值是否為“1”,假設(shè)只延遲1000ms后,第二從機2的信號輸入腳位P1的輸入信號就為“1”,此時作計數(shù)變量i=i+1=1+1=2,并計算第二從機2的I2C地址值等于i=2,因此第二從機2的I2C地址為2。依次類推第三從機2的I2C地址為3,第四從機2的I2C地址為4,直至配置完所有從機2的I2C地址。
權(quán)利要求
1.一種動態(tài)配置I2C(Inter Integrated Circuit)地址的系統(tǒng),包括一主機、多臺從機及一I2C總線,其特征在于,所述的主機通過延遲時間來給每一從機動態(tài)配置不同的I2C地址,其中所述的主機包括一微處理器,用于與多臺從機建立通信機制;一I2C接口,用于將所述的主機的I2C信號透過所述的I2C總線傳送給第一從機;每一從機包括一微處理器、以及芯片J3、J5及J6,其中所述的微處理器至少有一信號輸入腳位P1以及一信號輸出腳位P7,信號輸入腳位P1透過一提升電阻R1連接一信號電源(VCC),信號輸出腳位P7連接下一從機的信號輸入腳位P1;所述的第一從機的芯片J3,用于將主機的I2C信號傳送給本從機的芯片J5,除第一從機以外的芯片J3均沒有接至主機的I2C總線上;所述的芯片J5,用于主機的I2C信號或第一從機輸出的I2C信號傳送給芯片J6;所述的芯片J6,用于將該從機的芯片J5的信號傳送給下一從機的芯片J5;所述從機的微處理器均裝載有一I2C地址配置程序,該I2C地址配置程序包括一信號設(shè)定模塊,用于設(shè)定每一從機的信號輸出腳位P7的信號值,并判斷每一從機的信號輸入腳位P1的信號值;一延時控制模塊,用于控制多臺從機之間沒有同步開機的誤差時間,以及配置I2C地址所需的安全時間;一I2C地址運算模塊,用于計算每一從機的I2C地址,并輸出該I2C地址至主機。
2.如權(quán)利要求1所述的動態(tài)配置I2C地址的系統(tǒng),其特征在于,所述的I2C信號包括一時脈信號(SCL)、一數(shù)據(jù)信號(SDA)以及一接地信號(GND)。
3.如權(quán)利要求1所述的動態(tài)配置I2C地址的系統(tǒng),其特征在于,所述的提升電阻R1用于當(dāng)從機的信號輸入腳位P1沒有接收到信號輸出腳位P7的信號時,通過連接一信號電源(VCC)給信號輸入腳位P1一個高電壓。
4.如權(quán)利要求1所述的動態(tài)配置I2C地址的系統(tǒng),其特征在于,所述的信號設(shè)定模塊,在每一從機打開電源后,就將其信號輸出腳位P7的信號值設(shè)定為“0”。
5.如權(quán)利要求4所述的動態(tài)配置I2C地址的系統(tǒng),其特征在于,所述的信號設(shè)定模塊通過判斷每一從機的信號輸入腳位P1的信號值是否為“1”,來判定I2C信號是否到達該從機。
6.一種動態(tài)配置I2C(Inter Integrated Circuit)地址的方法,其特征在于,由一主機通過延遲時間來給每一從機動態(tài)配置不同的I2C地址,該方法包括如下步驟當(dāng)每一從機打開電源時,設(shè)定計數(shù)變量i,并初始化該計數(shù)變量i=0;將每一從機的信號輸出腳位P7的輸出信號值設(shè)置為“0”;延遲T1時間;作計數(shù)變量i=i+1運算;判斷信號輸入腳位P1的輸入信號值是否為“1”;若該信號輸入腳位P1的輸入信號不為“1”,則每延遲T2時間就檢查輸入腳位P1的輸入信號值是否為“1”,并作計數(shù)變量i=i+1運算一次;若該信號輸出腳位P1的輸入信號值為“1”,則將該計數(shù)變量i的值作為該從機的I2C地址值;延遲T3時間;將信號輸出腳位P7的輸出信號設(shè)定為“1”;判斷所有從機的I2C地址是否配置完畢;若還有其它從機未配置I2C地址,則從作計數(shù)變量i=i+1運算的步驟開始繼續(xù)配置其它從機的I2C地址;若所有從機的I2C地址均配置完畢,則結(jié)束I2C地址配置流程。
7.如權(quán)利要求6所述的動態(tài)配置I2C地址的方法,其特征在于,所述的初始化計數(shù)變量i的步驟還包括一步驟提升電阻R1給每一從機的信號輸入腳位P1一個高電壓,此時每一信號輸入腳位P1的輸入信號均為“1”。
8.如權(quán)利要求6所述的動態(tài)配置I2C地址的方法,其特征在于,所述的I2C信號包括一時脈信號(SCL)、一數(shù)據(jù)信號(SDA)及一接地信號(GND)。
9.如權(quán)利要求6所述的動態(tài)配置I2C地址的方法,其特征在于,所述延遲T1時間是用于控制多臺從機之間沒有同步開機的誤差時間。
10.如權(quán)利要求6所述的動態(tài)配置I2C地址的方法,其特征在于,所述延遲T3時間是用于確保配置I2C地址所需的安全時間。
全文摘要
一種動態(tài)配置I
文檔編號G06F13/42GK1783050SQ20041007728
公開日2006年6月7日 申請日期2004年12月4日 優(yōu)先權(quán)日2004年12月4日
發(fā)明者楊勝宏 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司