專利名稱:一種i2c設(shè)備的訪問方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊技術(shù)領(lǐng)域,尤其涉及一種集成線路(I2C, Inter-IntegratedCircuit)設(shè)備的訪問方法及裝置。
背景技術(shù):
I2C(也可以表示為1 或者IIC)總線是一種兩線式串行總線,用于連接微控制器 及其外圍設(shè)備。目前,I2C總線主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。 例如,管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和 系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便
了管理。其中,采用I2C總線管理的設(shè)備,稱為I2C設(shè)備。在目前的通訊技術(shù)等領(lǐng)域中,I2C 設(shè)備得到了越來越廣泛的應(yīng)用。所謂I2C設(shè)備,例如無源光網(wǎng)絡(luò)(PON,Passive Optical Networks)中的可拔插 光模塊(SFP,Small Form Factor Pluggable)。在很多PON系統(tǒng)中,有多個(gè)SFP光模塊需 要被進(jìn)行頻繁的訪問,以便及時(shí)獲取收發(fā)光功率、電流電壓、溫度等信息,另外,還需要實(shí)時(shí) 監(jiān)控信號(hào)丟失(LOS, Loss of Signal)信號(hào),等等。而現(xiàn)有技術(shù)中,僅僅是簡(jiǎn)單地通過CPU,或者僅通過可編程邏輯器件,來實(shí)現(xiàn)對(duì) I2C設(shè)備的訪問。因此,上述對(duì)SFP光模塊等進(jìn)行頻繁地訪問操作,無疑會(huì)給I2C設(shè)備的訪 問系統(tǒng)造成不小的負(fù)擔(dān),從而減弱了系統(tǒng)的訪問效率、可靠性以及其他性能等。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種I2C設(shè)備的訪問方法及裝置,用以提高對(duì)I2C設(shè)備的訪 問效率,以及訪問的穩(wěn)定性,降低CPU的負(fù)擔(dān)。本發(fā)明實(shí)施例提供的一種I2C設(shè)備的訪問方法包括自動(dòng)輪詢模塊按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問的特定I2C設(shè)備 進(jìn)行周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果;主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù),或者對(duì)特 定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問。本發(fā)明實(shí)施例提供的一種I2C設(shè)備的訪問裝置包括自動(dòng)輪詢模塊,用于按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問的特定I2C 設(shè)備進(jìn)行周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果;主動(dòng)訪問模塊,用于根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù),或者 對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問。本發(fā)明實(shí)施例,自動(dòng)輪詢模塊按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問 的特定I2C設(shè)備進(jìn)行周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果;主動(dòng)訪 問模塊根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù),或者對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問。從而避免了簡(jiǎn)單地單靠CPU或者可編程邏輯器件來實(shí)現(xiàn)對(duì)I2C設(shè)備的 訪問,而是結(jié)合兩者的特點(diǎn),將訪問頻繁的設(shè)備寄存器交由自動(dòng)輪詢模塊來訪問,從而大大 降低了主動(dòng)訪問模塊(CPU)的負(fù)擔(dān),提高對(duì)I2C設(shè)備的訪問效率,以及訪問的穩(wěn)定性,保證 了整個(gè)系統(tǒng)的高效、穩(wěn)定地運(yùn)作。
圖1為本發(fā)明實(shí)施例提供的各個(gè)模塊之間的連接關(guān)系示意圖;圖2為本發(fā)明實(shí)施例提供的一種I2C設(shè)備的訪問裝置的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例提供的用CPLD作為I2C時(shí)序?qū)崿F(xiàn)模塊的邏輯實(shí)現(xiàn)示意圖;圖4為本發(fā)明實(shí)施例提供的用CPLD實(shí)現(xiàn)的各個(gè)模塊工作切換時(shí)的狀態(tài)轉(zhuǎn)換示意 圖;圖5為本發(fā)明實(shí)施例提供的一種I2C設(shè)備的訪問方法的流程示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供了一種I2C設(shè)備的訪問方法及裝置,用以提高對(duì)I2C設(shè)備的訪 問效率,以及訪問的穩(wěn)定性,降低CPU的負(fù)擔(dān)。本發(fā)明實(shí)施例提供的技術(shù)方案,應(yīng)用于對(duì)I2C設(shè)備的訪問,要求穩(wěn)定性高、可靠性 高,高效性的系統(tǒng)設(shè)備中。本發(fā)明實(shí)施例提供的技術(shù)方案,針對(duì)包括多個(gè)I2C設(shè)備,并且需要頻繁訪問這些 I2C設(shè)備,以獲取大量實(shí)時(shí)數(shù)據(jù)的系統(tǒng),提供一種靈活、高效、可靠的訪問方法和裝置,從而 減小系統(tǒng)的復(fù)雜度,節(jié)約CPU資源,更好地保證系統(tǒng)的高效、穩(wěn)定和可靠性。本發(fā)明實(shí)施例提供的裝置,主要由主動(dòng)訪問模塊、自動(dòng)輪詢模塊、I2C時(shí)序?qū)崿F(xiàn)模 塊組成,該裝置中各模塊相互之間的連接關(guān)系,以及與I2C設(shè)備的連接關(guān)系,參見圖1。其 中,主動(dòng)訪問模塊,可以由CPU、單片機(jī)、數(shù)字信號(hào)處理(DSP,Digital SignalProcessing)器等實(shí)現(xiàn),用于根據(jù)用戶請(qǐng)求,調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊訪問I2C設(shè)備。自動(dòng)輪詢模塊,可以由可編程邏輯器件實(shí)現(xiàn),主要用于自動(dòng)輪詢一些I2C設(shè)備,獲 取這些I2C設(shè)備的實(shí)時(shí)數(shù)據(jù)信息??筛鶕?jù)用戶需求,靈活配置該模塊需要頻繁訪問的I2C 設(shè)備,以及I2C設(shè)備中的寄存器,從而使得這些寄存器的頻繁訪問都由自動(dòng)輪詢模塊實(shí)現(xiàn)。本發(fā)明實(shí)施例中,將自動(dòng)輪詢模塊訪問的I2C設(shè)備,稱為特定I2C設(shè)備。除此之外 的I2C設(shè)備,可以稱為普通I2C設(shè)備。I2C時(shí)序?qū)崿F(xiàn)模塊,是I2C協(xié)議規(guī)范具體時(shí)序的實(shí)現(xiàn)模塊,用于根據(jù)自動(dòng)輪詢模塊 或主動(dòng)訪問模塊的控制,訪問I2C設(shè)備。所有I2C設(shè)備的訪問最終都是通過I2C時(shí)序?qū)崿F(xiàn) 模塊進(jìn)行。用戶可以靈活選擇上述自動(dòng)輪詢模塊中需要輪詢的特定I2C設(shè)備,以及特定I2C 設(shè)備中的特定寄存器,即確定哪些I2C設(shè)備中的哪些寄存器需要由自動(dòng)輪詢模塊自動(dòng)訪 問。例如,一些訪問頻繁的寄存器,都可以設(shè)置由自動(dòng)輪詢模塊進(jìn)行訪問。一般情況下,自動(dòng)輪詢模塊會(huì)不間斷地輪詢用戶確定的需要頻繁訪問的特定I2C 設(shè)備,并將訪問結(jié)果反饋到特定的數(shù)據(jù)緩存(buffer)中。主動(dòng)訪問模塊當(dāng)需要訪問自動(dòng)輪詢模塊訪問的這些I2C設(shè)備時(shí),則可以直接從自動(dòng)輪詢模塊中的數(shù)據(jù)buffer中獲取相應(yīng)的 訪問結(jié)果。另外,主動(dòng)訪問模塊如果需要訪問自動(dòng)輪詢模塊訪問的特定I2C設(shè)備的特定寄存 器以外的其他寄存器時(shí),則自動(dòng)輪詢模塊可以釋放I2C總線,將I2C總線交給主動(dòng)訪問模 塊,等主動(dòng)訪問模塊訪問完成以后,自動(dòng)輪詢模塊再次接管I2C總線,并繼續(xù)進(jìn)行輪詢。這 樣就可以實(shí)現(xiàn)主動(dòng)訪問模塊和自動(dòng)輪詢模塊的靈活切換。具體地,參見圖2,本發(fā)明實(shí)施例提供的一種I2C設(shè)備的訪問裝置包括自動(dòng)輪詢模塊101,用于按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問的特定 I2C設(shè)備進(jìn)行周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果。主動(dòng)訪問模塊102,用于根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù), 或者對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問。較佳地,所述主動(dòng)訪問模塊102包括普通I2C設(shè)備訪問單元201,用于根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備之外的I2C設(shè)備 進(jìn)行訪問。特定I2C設(shè)備訪問單元202,用于根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備進(jìn)行訪問。較佳地,所述特定I2C設(shè)備訪問單元202,根據(jù)用戶請(qǐng)求,從自動(dòng)輪詢模塊101的緩 存中獲取特定I2C設(shè)備的訪問結(jié)果,并反饋給用戶。較佳地,該裝置還包括I2C時(shí)序?qū)崿F(xiàn)模塊103,用于根據(jù)自動(dòng)輪詢模塊101或主動(dòng)訪問模塊102的控制, 訪問I2C設(shè)備。所述普通I2C設(shè)備訪問單元201,通知自動(dòng)輪詢模塊101釋放I2C總線,并確定自 動(dòng)輪詢模塊101暫停調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)所有特定I2C設(shè)備的訪問;通過I2C總線調(diào) 用I2C時(shí)序?qū)崿F(xiàn)模塊103對(duì)用戶需要訪問的特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問,并獲 取訪問結(jié)果;通知自動(dòng)輪詢模塊101I2C總線可用;所述自動(dòng)輪詢模塊101,當(dāng)收到主動(dòng)訪問模塊102發(fā)送的釋放I2C總線的通知時(shí), 暫停調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊103對(duì)所有特定I2C設(shè)備的訪問;當(dāng)收到主動(dòng)訪問模塊102發(fā) 送的I2C總線可用的通知時(shí),恢復(fù)調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊103對(duì)所有特定I2C設(shè)備的訪問。較佳地,所述主動(dòng)訪問模塊102,為CPU、單片機(jī)或數(shù)字信號(hào)處理器;所述自動(dòng)輪詢 模塊101和I2C時(shí)序?qū)崿F(xiàn)模塊103,為可編程邏輯器件。下面結(jié)合附圖,以PON系統(tǒng)中對(duì)多路SFP光模塊的訪問為例,對(duì)本發(fā)明實(shí)施例提供 的I2C設(shè)備的訪問方法進(jìn)行詳細(xì)說明。例如,由CPU實(shí)現(xiàn)主動(dòng)訪問模塊,由復(fù)合的可編程邏輯器件(CPLD,Comp 1 ex Programmable Logic Device)實(shí)現(xiàn)本發(fā)明實(shí)施例所述的自動(dòng)輪詢模塊和I2C時(shí)序?qū)崿F(xiàn)模 塊。需要訪問的I2C設(shè)備,為SFP光模塊。其中,自動(dòng)輪詢模塊主要用于輪詢SFP光模塊的 LOS告警{曰息。當(dāng)用戶想獲取一些普通SFP光模塊的寄存器信息的時(shí)候,只需通過主動(dòng)訪問模塊 和I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)相應(yīng)的SFP光模塊的寄存器進(jìn)行訪問即可,其流程與現(xiàn)有流程相類 似。當(dāng)自動(dòng)輪詢模塊訪問SFP光模塊時(shí),自動(dòng)輪詢模塊可以預(yù)先配置好需要訪問的SFP光模塊編號(hào)、SFP光模塊寄存器地址、SFP光模塊地址AO或A2、讀操作碼和寫操作碼、以 及訪問周期。對(duì)于每一次的訪問,參見圖3,具體包括自動(dòng)輪詢模塊確定本次訪問的起始寄存器地址、本次訪問的數(shù)據(jù)長(zhǎng)度、要寫入的 數(shù)據(jù)值(僅用于寫操作中)等信息。自動(dòng)輪詢模塊判斷本次訪問是讀操作還是寫操作;如果是讀操作,則自動(dòng)輪詢模塊確定本次訪問的SFP光模塊地址AO或A2,以及讀 操作標(biāo)志;啟動(dòng)I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)SFP光模塊訪問;自動(dòng)輪詢模塊判斷本次訪問是否完成,如果是,則判斷本次訪問是否成功,如果成 功,則讀取SFP光模塊的數(shù)據(jù)信息,若沒有成功,則獲取失敗原因,并向用戶返回失敗的原 因;若本次訪問沒有完成,則繼續(xù)等待;如果是寫操作,則自動(dòng)輪詢模塊確定本次訪問的SFP光模塊地址AO或A2,以及寫 操作標(biāo)志;自動(dòng)輪詢模塊確定要寫入的數(shù)據(jù);啟動(dòng)I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)SFP光模塊訪問;自動(dòng)輪詢模塊判斷本次訪問是否完成,如果是,則判斷本次訪問是否成功,如果成 功,則結(jié)束本次訪問,若沒有成功,則獲取失敗原因,并向用戶返回失敗的原因;若本次訪問 沒有完成,則繼續(xù)等待。其中,可以專門設(shè)置一個(gè)CPLD寄存器,用于存儲(chǔ)本次訪問是否成功的信息,以及 如果訪問失敗的話,記錄訪問失敗的原因。當(dāng)用戶想訪問SFP光模塊的LOS信息時(shí),由于預(yù)先配置了自動(dòng)輪詢模塊主要用于 輪詢SFP光模塊的LOS告警信息。因此,可以直接訪問自動(dòng)輪詢模塊中的緩存。因?yàn)樽詣?dòng) 輪詢模塊會(huì)不間斷的訪問SFP光模塊,并將訪問結(jié)果數(shù)據(jù)更新到對(duì)應(yīng)的緩存中,即每一 SFP 光模塊對(duì)應(yīng)一個(gè)緩存,自動(dòng)輪詢模塊讀取每一 SFP光模塊的LOS信息,并將讀取到的數(shù)據(jù)寫 入該SFP光模塊對(duì)應(yīng)的緩存中。自動(dòng)輪詢模塊和主動(dòng)訪問模塊之間的狀態(tài)轉(zhuǎn)換,如圖4所示,具體包括步驟一、一般狀態(tài)下,I2C總線被自動(dòng)輪詢模塊占用,自動(dòng)輪詢模塊處于自動(dòng)工作 狀態(tài)(STATE_AUT0_W0RK)。步驟二、當(dāng)用戶啟動(dòng)主動(dòng)訪問模塊進(jìn)行訪問的時(shí)候,自動(dòng)輪詢模塊停止一切訪問 動(dòng)作,釋放I2C總線,此時(shí)自動(dòng)輪詢模塊處于自動(dòng)停止?fàn)顟B(tài)(STATE_AUT0_ST0P)。步驟三、主動(dòng)訪問模塊得到I2C總線使用權(quán)以后,就進(jìn)入主要工作狀態(tài)(STATE_ MAIN_W0RK),開始訪問I2C設(shè)備。步驟四、等步驟三完成,主動(dòng)訪問模塊重新將I2C總線交給自動(dòng)輪詢模塊,又進(jìn)入 步驟一。如此循環(huán)。綜上所述,參見圖5,本發(fā)明實(shí)施例提供的一種I2C設(shè)備的訪問方法包括步驟SlOU自動(dòng)輪詢模塊按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問的特定I2C 設(shè)備進(jìn)行周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果。S102、主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù)(例如直接讀取特定光模塊的特定寄存器的值),或者對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問。較佳地,該方法還包括主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備進(jìn)行訪問。較佳地,所述主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備進(jìn)行訪問,包括主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,從自動(dòng)輪詢模塊的緩存中獲取特定I2C設(shè)備的訪問 結(jié)果,并反饋給用戶。較佳地,所述主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪 問,包括主動(dòng)訪問模塊通知自動(dòng)輪詢模塊釋放I2C總線,并確定自動(dòng)輪詢模塊暫停調(diào)用 I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)所有特定I2C設(shè)備的訪問;主動(dòng)訪問模塊通過I2C總線調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)用戶需要訪問的特定I2C設(shè) 備之外的I2C設(shè)備進(jìn)行訪問,并獲取訪問結(jié)果;主動(dòng)訪問模塊通知自動(dòng)輪詢模塊I2C總線可用。較佳地,所述主動(dòng)訪問模塊,為CPU、單片機(jī)或數(shù)字信號(hào)處理器;所述自動(dòng)輪詢模塊和I2C時(shí)序?qū)崿F(xiàn)模塊,為可編程邏輯器件。本發(fā)明實(shí)施例提供的技術(shù)方案,避免了簡(jiǎn)單地單靠CPU或者可編程邏輯器件來實(shí) 現(xiàn)對(duì)I2C設(shè)備的訪問,而是結(jié)合兩者的特點(diǎn),將訪問頻繁的設(shè)備寄存器交由可編程邏輯器 件來訪問,從而大大降低了 CPU的負(fù)擔(dān),提高對(duì)I2C設(shè)備的訪問效率,以及訪問的穩(wěn)定性,保 證了整個(gè)系統(tǒng)的高效、穩(wěn)定地運(yùn)作。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序 產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí) 施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī) 可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形 式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程 圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一 流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算 機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理 器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生 用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能 的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特 定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指 令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或 多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì) 算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或 其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖 一個(gè)方框或多個(gè)方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種I2C設(shè)備的訪問方法,其特征在于,該方法包括自動(dòng)輪詢模塊按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問的特定I2C設(shè)備進(jìn)行 周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果;主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù),或者對(duì)特定I2C 設(shè)備之外的I2C設(shè)備進(jìn)行訪問。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括 主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備進(jìn)行訪問。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,對(duì)特定 I2C設(shè)備進(jìn)行訪問,包括主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,從自動(dòng)輪詢模塊的緩存中獲取特定I2C設(shè)備的訪問結(jié) 果,并反饋給用戶。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求, 對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問,包括主動(dòng)訪問模塊通知自動(dòng)輪詢模塊釋放I2C總線,并確定自動(dòng)輪詢模塊暫停調(diào)用I2C時(shí) 序?qū)崿F(xiàn)模塊對(duì)所有特定I2C設(shè)備的訪問;主動(dòng)訪問模塊通過I2C總線調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)用戶需要訪問的特定I2C設(shè)備之 外的I2C設(shè)備進(jìn)行訪問,并獲取訪問結(jié)果;主動(dòng)訪問模塊通知自動(dòng)輪詢模塊I2C總線可用。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述主動(dòng)訪問模塊,為CPU、單片機(jī)或數(shù)字信號(hào)處理器; 所述自動(dòng)輪詢模塊和I2C時(shí)序?qū)崿F(xiàn)模塊,為可編程邏輯器件。
6.一種I2C設(shè)備的訪問裝置,其特征在于,該裝置包括自動(dòng)輪詢模塊,用于按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問的特定I2C設(shè) 備進(jìn)行周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果;主動(dòng)訪問模塊,用于根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù),或者對(duì)特 定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述主動(dòng)訪問模塊包括普通I2C設(shè)備訪問單元,用于根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問;特定I2C設(shè)備訪問單元,用于根據(jù)用戶請(qǐng)求,對(duì)特定I2C設(shè)備進(jìn)行訪問。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述特定I2C設(shè)備訪問單元,根據(jù)用戶請(qǐng) 求,從自動(dòng)輪詢模塊的緩存中獲取特定I2C設(shè)備的訪問結(jié)果,并反饋給用戶。
9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,該裝置還包括I2C時(shí)序?qū)崿F(xiàn)模塊,用于根據(jù)自動(dòng)輪詢模塊或主動(dòng)訪問模塊的控制,訪問I2C設(shè)備; 所述普通I2C設(shè)備訪問單元,通知自動(dòng)輪詢模塊釋放I2C總線,并確定自動(dòng)輪詢模塊暫 停調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)所有特定I2C設(shè)備的訪問;通過I2C總線調(diào)用I2C時(shí)序?qū)崿F(xiàn)模 塊對(duì)用戶需要訪問的特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問,并獲取訪問結(jié)果;通知自動(dòng)輪 詢模塊I2C總線可用;所述自動(dòng)輪詢模塊,當(dāng)收到主動(dòng)訪問模塊發(fā)送的釋放I2C總線的通知時(shí),暫停調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)所有特定I2C設(shè)備的訪問;當(dāng)收到主動(dòng)訪問模塊發(fā)送的I2C總線可用的通 知時(shí),恢復(fù)調(diào)用I2C時(shí)序?qū)崿F(xiàn)模塊對(duì)所有特定I2C設(shè)備的訪問。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述主動(dòng)訪問模塊,為CPU、單片機(jī)或數(shù)字信號(hào)處理器; 所述自動(dòng)輪詢模塊和I2C時(shí)序?qū)崿F(xiàn)模塊,為可編程邏輯器件。
全文摘要
本發(fā)明公開了一種I2C設(shè)備的訪問方法及裝置,用以提高對(duì)I2C設(shè)備的訪問效率,以及訪問的穩(wěn)定性,降低CPU的負(fù)擔(dān)。本發(fā)明提供的一種I2C設(shè)備的訪問方法包括自動(dòng)輪詢模塊按照預(yù)設(shè)的訪問周期,對(duì)預(yù)先確定的需要頻繁訪問的特定I2C設(shè)備進(jìn)行周期性訪問,緩存并實(shí)時(shí)更新對(duì)每一特定I2C設(shè)備的訪問結(jié)果;主動(dòng)訪問模塊根據(jù)用戶請(qǐng)求,直接從緩存區(qū)讀取特定I2C設(shè)備的數(shù)據(jù),或者對(duì)特定I2C設(shè)備之外的I2C設(shè)備進(jìn)行訪問。
文檔編號(hào)G06F11/30GK102081570SQ201110024049
公開日2011年6月1日 申請(qǐng)日期2011年1月21日 優(yōu)先權(quán)日2011年1月21日
發(fā)明者李建鋒 申請(qǐng)人:中興通訊股份有限公司