亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種多級(jí)I2C總線控制方法與流程

文檔序號(hào):11691019閱讀:351來源:國知局
本發(fā)明涉及微電子通信控制領(lǐng)域,具體涉及標(biāo)準(zhǔn)i2c總線控制技術(shù)。
背景技術(shù)
::i2c(inter-integratedcircuit)總線是由philips公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備,對(duì)各個(gè)節(jié)點(diǎn)的尋址是軟尋址方式,節(jié)省了片選線,標(biāo)準(zhǔn)的尋址字節(jié)slam為7位,可以尋址127個(gè)單元。但多數(shù)i2c從設(shè)備的總線地址相當(dāng)固定,比如在通信設(shè)備中常用的sfp,其i2c總線地址固定為0x50,當(dāng)需要使用多個(gè)這種設(shè)備時(shí),則需要用到i2c總線擴(kuò)展技術(shù),同時(shí)i2c總線拓?fù)鋵⒆儚?fù)雜,對(duì)軟件控制技術(shù)提出了挑戰(zhàn)?,F(xiàn)有的控制方式,比如linux中的i2c-mux,能夠以樹的形式記錄這種i2c總線拓?fù)洌瑯涞拿總€(gè)節(jié)點(diǎn)代表一條i2c總線并反映總線間的父子關(guān)系,i2c-mux提供了一種智能訪問這個(gè)拓?fù)渲忻織l總線的方式,但每次訪問都必須經(jīng)歷選通總線、訪問總線、關(guān)閉總線3個(gè)步驟,以保證整個(gè)拓?fù)淠鼙徽_訪問,這種方式雖然邏輯上相對(duì)簡(jiǎn)單,但訪問效率非常低下。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有i2c總線控制方案在訪問效率上的缺陷,本發(fā)明的目的在于提供一種能夠有效提高訪問效率的i2c總線控制方案。為了達(dá)到上述目的,本采用如下的技術(shù)方案:一種多級(jí)i2c總線控制方法,所述控制方法將關(guān)閉總線、選通總線的操作延遲到訪問總線之前。優(yōu)選的,所述控制方法中將i2c多路選通通道的切換延時(shí)到下次操作同一多路選通的其它i2c總線時(shí)才進(jìn)行;將i2c多路選通通道的關(guān)閉延時(shí)到下次操作同一上級(jí)總線的其它多路選通的下級(jí)總線時(shí)才進(jìn)行。優(yōu)選的,所述控制方法根據(jù)已知i2c總線索引,選通i2c總線。優(yōu)選的,所述控制方法選通i2c總線包括以下步驟:1)如果存在上級(jí)i2c總線則先選通上級(jí)i2c總線,轉(zhuǎn)(3);2)如果上級(jí)i2c總線存在某條其他的下級(jí)總線沒有關(guān)閉,則關(guān)閉上級(jí)i2c總線下的這條下級(jí)總線;且將i2c多路選通通道的關(guān)閉延時(shí)到下次操作同一上級(jí)總線的其它多路選通的下級(jí)總線時(shí)才進(jìn)行;3)如果這條i2c總線的多路選通未選通則用這條i2c總線的多路選通方法進(jìn)行選通;且將i2c多路選通通道的切換延時(shí)到下次操作同一多路選通的其它i2c總線時(shí)才進(jìn)行。本發(fā)明提供的多級(jí)i2c總線控制方法能夠有效提高對(duì)i2c總線控制的智能性、便捷性、準(zhǔn)確性、高效性,能夠廣泛適用于各種多級(jí)i2c總線拓?fù)浣Y(jié)構(gòu)。附圖說明以下結(jié)合附圖和具體實(shí)施方式來進(jìn)一步說明本發(fā)明。圖1為本發(fā)明方案中i2c總線控制系統(tǒng)框圖;圖2為本發(fā)明方案中i2c總線拓?fù)鋱D;圖3為本發(fā)明實(shí)例中i2c總線拓?fù)鋱D;圖4為本發(fā)明實(shí)例中注冊(cè)i2c總線流程圖;圖5為本發(fā)明實(shí)例中關(guān)閉i2c總線流程圖;圖6為本發(fā)明實(shí)例中選通i2c總線流程圖;圖7為本發(fā)明實(shí)例中訪問i2c總線流程圖。具體實(shí)施方式為了使本發(fā)明實(shí)現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合具體圖示,進(jìn)一步闡述本發(fā)明。參見圖1,本方案中的i2c總線控制系統(tǒng)100主要包括i2c總線控制模塊110和i2c總線操作接口120兩部分。其中,i2c總線控制模塊110與相應(yīng)的應(yīng)用程序數(shù)據(jù)連接,并通過i2c總線操作接口120連接到對(duì)應(yīng)的i2c主設(shè)備130,而i2c主設(shè)備130通過相應(yīng)的i2c總線拓?fù)?40連接到若干的i2c從設(shè)備150。參見圖2,這里的i2c總線拓?fù)?40為多級(jí)i2c總線,i2c主設(shè)備130通過一級(jí)總線連接至i2c多路選通設(shè)備141、142以及i2c從設(shè)備151。i2c多路選通設(shè)備141的通道a通過二級(jí)總線連接至i2c從設(shè)備152,i2c多路選通設(shè)備141的通道b通過二級(jí)總線連接至i2c從設(shè)備153。i2c多路選通設(shè)備142的通道a通過二級(jí)總線連接至i2c多路選通設(shè)備143,i2c多路選通設(shè)備142的通道b通過二級(jí)總線連接至i2c從設(shè)備154。i2c多路選通設(shè)備143的通道b通過三級(jí)總線連接至i2c從設(shè)備155。在該控制系統(tǒng)中,i2c總線控制模塊110負(fù)責(zé)管理i2c拓?fù)?,并向?yīng)用模塊提供智能高效的訪問i2c從設(shè)備的方法。i2c總線控制模塊具體包括以下單元:(1)注冊(cè)總線單元,用于已知上級(jí)i2c總線(或根總線)、多路選通設(shè)備及選通方法,向i2c總線拓?fù)渥?cè)這條i2c總線,并得到i2c總線索引。該注冊(cè)總線單元注冊(cè)一條i2c總線包括以下步驟:1)向i2c總線拓?fù)渥?cè)數(shù)據(jù)結(jié)構(gòu)。2)關(guān)閉這條i2c總線。3)得到這條i2c總線的索引。(2)關(guān)閉總線單元,用于已知i2c總線索引,關(guān)閉這條i2c總線。該關(guān)閉總線單元關(guān)閉一條i2c總線包括以下步驟:1)如果存在上級(jí)i2c總線則先選通上級(jí)i2c總線,轉(zhuǎn)(3)。2)如果這條i2c總線的多路選通未關(guān)閉則用這條i2c總線的多路選通方法進(jìn)行關(guān)閉。(3)選通總線單元,用于已知i2c總線索引,選通這條i2c總線。該選通總線單元選通一條i2c總線包括以下步驟:1)如果存在上級(jí)i2c總線則先選通上級(jí)i2c總線,轉(zhuǎn)(3)。2)如果上級(jí)i2c總線存在某條其他的下級(jí)總線沒有關(guān)閉,則關(guān)閉上級(jí)i2c總線下的這條下級(jí)總線。這步將i2c多路選通通道的關(guān)閉延時(shí)到下次操作同一上級(jí)總線的其它多路選通的下級(jí)總線時(shí)才進(jìn)行。3)如果這條i2c總線的多路選通未選通則用這條i2c總線的多路選通方法進(jìn)行選通。這步將i2c多路選通通道的切換延時(shí)到下次操作同一多路選通的其它i2c總線時(shí)才進(jìn)行。(4)訪問從設(shè)備單元,用于已知i2c總線索引,訪問這條i2c總線上的從設(shè)備。該訪問從設(shè)備單元訪問一條i2c總線上的從設(shè)備包括以下步驟:1)選通這條i2c總線,轉(zhuǎn)(1)。2)調(diào)用i2c總線操作接口訪問從設(shè)備。據(jù)此構(gòu)成的i2c總線控制模塊110中的各功能單元間通過預(yù)定義的接口(如下述應(yīng)用實(shí)例中的選通i2c總線的接口i2c_mux_select)進(jìn)行交互,實(shí)現(xiàn)i2c總線控制模塊的各項(xiàng)功能。在該控制系統(tǒng)中,i2c總線操作接口120用于把i2c驅(qū)動(dòng)所提供的接口規(guī)整后向i2c總線控制模塊提供規(guī)整后的接口。規(guī)整后的接口包括i2c主設(shè)備對(duì)從設(shè)備的讀訪問操作、寫訪問操作、組合訪問操作等。在此基礎(chǔ)上,本方案中通過采用延遲通道切換技術(shù),在保證i2c總線拓?fù)淠鼙徽_訪問的前提下,將總線關(guān)閉、總線選通的操作延遲到訪問總線之前,且僅在確有必要的情況下才操作。針對(duì)上述方案,下面以圖3所示的i2c總線拓?fù)錇槔M(jìn)一步說明本控制方案的具體實(shí)施過程,具體如下:1、本實(shí)例中i2c總線拓?fù)渲懈鲾?shù)據(jù)結(jié)構(gòu)如下:(1)i2c總線操作接口(2)本實(shí)例中i2c多路選通設(shè)備數(shù)據(jù)結(jié)構(gòu)如下:(3)本實(shí)例中i2c總線數(shù)據(jù)結(jié)構(gòu)如下:2、基于上述的方案,本實(shí)例中注冊(cè)一條i2c選通設(shè)備包括以下步驟:inti2c_mux_dev_register(int*dev_index,i2c_mux_dev_t*dev);i2c_mux_dev_register為注冊(cè)i2c選通設(shè)備的接口。(1)注冊(cè)并保存這個(gè)i2c選通設(shè)備的數(shù)據(jù)結(jié)構(gòu)。(2)得到這個(gè)i2c選通設(shè)備的索引。3、本實(shí)例中注冊(cè)一條i2c總線包括以下步驟,如圖4所示:inti2c_mux_register(int*mux_index,i2c_mux_t*i2c_mux);i2c_mux_register為注冊(cè)i2c總線的接口。(1)向i2c總線拓?fù)渥?cè)數(shù)據(jù)結(jié)構(gòu)。index=find_free_index();i2c_mux_table[index]=i2c_mux;(2)關(guān)閉這條i2c總線。_i2c_mux_close(index);(3)得到這條i2c總線索引。*mux_index=index。4、本實(shí)例中關(guān)閉一條i2c總線包括以下步驟,如圖5所示:(1)確定是否存在上級(jí)i2c總線則先選通上級(jí)i2c總線,如果不存在轉(zhuǎn)入步驟(3);若存在轉(zhuǎn)入步驟(2);(2)先選通上級(jí)i2c總線;(3)確定該條i2c總線的多路選通是否關(guān)閉,若關(guān)閉,轉(zhuǎn)入步驟(5),若沒有關(guān)閉,轉(zhuǎn)入步驟(4);(4)用這條i2c總線的多路選通方法進(jìn)行關(guān)閉;(5)結(jié)束。據(jù)此,本實(shí)例中關(guān)閉一條i2c總線的具體實(shí)施過程如下:staticint_i2c_mux_close(intmux_index);_i2c_mux_close為關(guān)閉i2c總線的接口。(1)如果存在上級(jí)i2c總線則先選通上級(jí)i2c總線。i2c_mux=i2c_mux_table[mux_index];if(temp->parent_index!=-1)_i2c_mux_select(temp->parent_index);(2)如果這條i2c總線的多路選通未關(guān)閉則用這條i2c總線的多路選通方法進(jìn)行關(guān)閉。5、本實(shí)例中選通一條i2c總線包括以下步驟,如圖6所示:(1)判斷是否存在上級(jí)i2c總線,若存在轉(zhuǎn)入步驟(2);若不存在轉(zhuǎn)入步驟(3);(2)優(yōu)先選通上級(jí)i2c總線;(3)判斷上級(jí)i2c總線是否存在旁級(jí)總線沒有關(guān)閉;若旁級(jí)總線關(guān)閉,轉(zhuǎn)入步驟(5);若存在旁級(jí)總線沒有關(guān)閉,則轉(zhuǎn)入步驟(4);這里的旁級(jí)總線是指同一上級(jí)總線的非同多路選通設(shè)備下的下級(jí)總線。(4)關(guān)閉上級(jí)i2c總線下的這條下級(jí)總線;(5)判斷這條i2c總線的多路選通是否選通;若選通,轉(zhuǎn)入步驟(7);若沒有選通,轉(zhuǎn)入步驟(6);(6)用這條i2c總線的多路選通方法進(jìn)行選通;(7)結(jié)束。據(jù)此,本實(shí)例中選通一條i2c總線的具體實(shí)施過程如下:staticint_i2c_mux_select(intcurrent_index);_i2c_mux_select為選通i2c總線的接口。(1)如果存在上級(jí)i2c總線則先選通上級(jí)i2c總線;current=i2c_mux_table[current_index];if(current->parent_index!=-1)_i2c_mux_select(current->parent_index);(2)如果上級(jí)i2c總線存在其他多路選通設(shè)備的下級(jí)總線沒有關(guān)閉,則關(guān)閉上級(jí)i2c總線下的這條下級(jí)總線;(3)如果這條i2c總線的多路選通未選通則用這條i2c總線的多路選通方法進(jìn)行選通;6、本實(shí)例中訪問一條i2c總線包括以下步驟,如圖7所示:inti2c_mux_read(intmux_index,uint32addr,uint8*buf,intlen);inti2c_mux_write(intmux_index,uint32addr,uint8*buf,intlen);inti2c_mux_combine(intmux_index,uint32addr,uint8*tx_data,inttx_len,uint8*rx_data,intrx_len);i2c_mux_xxx為訪問i2c總線的接口。(1)選通這條i2c總線;_i2c_mux_select(mux_index);(2)調(diào)用標(biāo)準(zhǔn)i2c總線操作接口訪問從設(shè)備;i2c_mux=i2c_mux_table[mux_index];i2c_mux->bus->i2c_xxx(addr,......)。7、本實(shí)例中注冊(cè)i2c總線拓?fù)洳襟E如下:(1)注冊(cè)一級(jí)總線bus0;i2c_simulate_host為模擬i2c控制器操作總線的接口。bus0.bus=i2c_simulate_host;bus0.parent_index=-1;bus0.dev_index=-1;i2c_mux_register_new(&bus0_index,&bus0);(2)注冊(cè)i2c多路選通設(shè)備;pca9547_select為pca9547的選通方法,默認(rèn)選通通道0。mux0.select=pca9547_select;mux0.current=0;mux0.arg=0x70;i2c_mux_dev_register(&mux0_index,&mux0);mux1.select=pca9547_select;mux1.current=0;mux1.arg=0x71;i2c_mux_dev_register(&mux1_index,&mux1);(3)注冊(cè)二級(jí)總線bus1-4;bus1.parent_index=bus0_index;bus1.dev_index=mux0_index;bus1.dev_channel=0;i2c_mux_register_new(&bus1_index,&bus1);bus2.parent_index=bus0_index;bus2.dev_index=mux0_index;bus2.dev_channel=1;i2c_mux_register_new(&bus2_index,&bus2);bus3.parent_index=bus0_index;bus3.dev_index=mux1_index;bus3.dev_channel=0;i2c_mux_register_new(&bus3_index,&bus3);bus4.parent_index=bus0_index;bus4.dev_index=mux1_index;bus4.dev_channel=1;i2c_mux_register_new(&bus4_index,&bus4)。8、本實(shí)例中訪問i2c總線示例如下:(1)訪問一級(jí)總線下的設(shè)備;i2c_mux_xxx(bus0_index,0x4c,...);(2)訪問二級(jí)總線下的設(shè)備;i2c_mux_xxx(bus1_index,0x50,...);i2c_mux_xxx(bus2_index,0x50,...);i2c_mux_xxx(bus3_index,0x50,...);i2c_mux_xxx(bus4_index,0x50,...)。由上可知,本實(shí)例中i2c多路選通通道的切換被延時(shí)到下次操作同一多路選通的其他i2c總線時(shí)才進(jìn)行,i2c多路選通通道的關(guān)閉被延時(shí)到下次操作同一上級(jí)總線的其他多路選通的下級(jí)總線時(shí)才進(jìn)行,以上技術(shù)稱為延時(shí)切換技術(shù),有效提高了訪問效率。以兩級(jí)總線為例,兩級(jí)總線時(shí)最大能減少2/3的無效操作,n級(jí)總線時(shí)最大能減少(2n-2)/(2n-1)的無效操作,有效提高訪問效率。再者基于上述實(shí)例方案,能實(shí)現(xiàn)對(duì)所有類型的i2c主設(shè)備、從設(shè)備、多路選通設(shè)備組成的任意級(jí)數(shù)的i2c總線拓?fù)涞母咝гL問,其原理都如上所述,此處不加以贅述。以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1