本發(fā)明涉及計算機(jī)通信領(lǐng)域,尤其是一種實現(xiàn)i2c重復(fù)讀寫控制的裝置。
背景技術(shù):
在i2c(inter-integratedcircuit內(nèi)部集成電路,一種標(biāo)準(zhǔn)接口電路,是由philips公司提出發(fā)明的)的某些應(yīng)用場合比如面板控制(包括led顯示和按鍵掃描),需要主控制器按照一定間隔讀取i2c面板的按鍵輸入值,判斷是否有按鍵輸入,由此必然大量耗費主控制器的處理時間。
鑒于上述技術(shù)問題,現(xiàn)有技術(shù)實現(xiàn)了“一種實現(xiàn)自動讀寫內(nèi)部集成電路設(shè)備的裝置和方法”(公開號cn1558332),其公布了一種用硬件實現(xiàn)而非cpu模擬的方式讀寫i2c設(shè)備。該現(xiàn)有技術(shù)如果需要按照一定間隔重復(fù)讀寫i2c設(shè)備通常做法如下:主控制器每隔一定時間向i2c控制器發(fā)送讀寫命令,等待i2c控制器返回操作完成狀態(tài),如果i2c控制器返回出錯狀態(tài),則執(zhí)行錯誤處理。如果該操作是讀操作,主控制器還需判斷i2c控制器返回的數(shù)據(jù)是否有效以便觸發(fā)下一個事務(wù)處理。由于i2c設(shè)備為慢速設(shè)備,此方法占用主控制器大量處理時間,間隔越小,則占用的處理時間越多。
技術(shù)實現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明的目的是提供占有cpu時間極少的一種實現(xiàn)i2c重復(fù)讀寫控制裝置。
本發(fā)明采用的技術(shù)方案是:
一種實現(xiàn)i2c重復(fù)讀寫控制的裝置,包括主控制器、重復(fù)讀寫控制器、i2c控制器,該重復(fù)讀寫控制器連接在主控制器與i2c控制器之間;
主控制器通過重復(fù)讀寫控制器向i2c控制器發(fā)送讀寫命令,i2c控制器直接關(guān)聯(lián)外部i2c設(shè)備以執(zhí)行所述讀寫命令;
i2c控制器根據(jù)執(zhí)行結(jié)果向重復(fù)讀寫控制器反饋完成狀態(tài)信號、錯誤狀態(tài)信號以及所采集的數(shù)據(jù);
重復(fù)讀寫控制器對i2c控制器反饋的信號進(jìn)行識別且僅僅反饋有效信號給主控制器。
其中,所述重復(fù)讀寫控制器包括寄存器模塊以及與該寄存器模塊電連接的中斷控制器、數(shù)據(jù)比較器、啟動次數(shù)計數(shù)器、定時器、啟動信號產(chǎn)生器、有效狀態(tài)計數(shù)器;
該寄存器模塊通過內(nèi)部總線與主控制器電連接以用于接收主控制器發(fā)來的配置寄存器以及返回寄存器內(nèi)容給主控制器;
啟動次數(shù)計數(shù)器、定時器、啟動信號產(chǎn)生器依次連接,中斷控制器、數(shù)據(jù)比較器、啟動信號產(chǎn)生器、有效狀態(tài)計數(shù)器、寄存器模塊皆與i2c控制器連接,中斷控制器輸出端用于輸出中斷信號給主控制器。
進(jìn)一步,所述寄存器模塊包括啟動次數(shù)寄存器、啟動寄存器、間隔寄存器;
該啟動次數(shù)寄存器與啟動次數(shù)計數(shù)器連接,啟動次數(shù)寄存器用于設(shè)置發(fā)送次數(shù),每發(fā)送成功一次啟動次數(shù)計數(shù)器會自動加一,如果達(dá)到啟動次數(shù)寄存器設(shè)置的次數(shù),則停止發(fā)送啟動信號;如果計數(shù)寄存器為0,則一直循環(huán)發(fā)送;
該啟動寄存器分別與啟動次數(shù)計數(shù)器、定時器連接,啟動寄存器用于控制產(chǎn)生啟動信號;間隔寄存器與定時器連接以用于設(shè)置start信號的發(fā)送周期,定時器根據(jù)此間隔寄存器配置產(chǎn)生周期性的使能信號給啟動信號產(chǎn)生器。
進(jìn)一步,所述寄存器模塊包括中斷狀態(tài)寄存器,中斷狀態(tài)寄存器分別與中斷控制器、有效狀態(tài)計數(shù)器連接,該中斷狀態(tài)寄存器包含三個中斷信息:分別是讀到有效狀態(tài),操作出錯以及計數(shù)次數(shù)滿。
進(jìn)一步,所述寄存器模塊包括讀寫寄存器,讀寫寄存器分別與i2c控制器、有效狀態(tài)計數(shù)器連接,用于指示當(dāng)前操作是寫操作還是讀操作。
進(jìn)一步,所述寄存器模塊包括期望數(shù)據(jù)寄存器,期望數(shù)據(jù)寄存器與所述數(shù)據(jù)比較器連接,用于比較i2c控制器讀回數(shù)據(jù),如果比較成功,由中斷控制器產(chǎn)生中斷信號給主控制器。
進(jìn)一步,所述寄存器模塊包括讀回數(shù)據(jù)寄存器,讀回數(shù)據(jù)寄存器與i2c控制器連接,用于主控制器未及時響應(yīng)中斷的情況下可以存儲i2c設(shè)備的連續(xù)有效狀態(tài)。
進(jìn)一步,所述寄存器模塊包括有效狀態(tài)數(shù)寄存器,該有效狀態(tài)數(shù)寄存器與有效狀態(tài)計數(shù)器連接,以用于記錄有效狀態(tài)計數(shù)器所存儲的有效狀態(tài)數(shù)目。
本發(fā)明的有益效果:
本發(fā)明通過在主控制器和i2c控制器之間增加了一個重復(fù)讀寫控制器,來代替主控制器等待和處理對i2c控制器的讀寫命令,僅僅反饋有效信號給主控制器,即不會浪費主控制器的處理時間,大大解放主控制器的負(fù)荷。
附圖說明
下面結(jié)合附圖對本發(fā)明的具體實施方式做進(jìn)一步的說明。
圖1是本發(fā)明的原理框圖;
圖2是重復(fù)讀寫控制器的內(nèi)部結(jié)構(gòu)圖;
圖3是本發(fā)明的流程圖。
具體實施方式
如圖1所示,為本發(fā)明的一種實現(xiàn)i2c重復(fù)讀寫控制的裝置,包括主控制器、重復(fù)讀寫控制器、i2c控制器,該重復(fù)讀寫控制器連接在主控制器與i2c控制器之間。
本發(fā)明的工作原理為:主控制器通過重復(fù)讀寫控制器向i2c控制器發(fā)送讀寫命令,i2c控制器直接關(guān)聯(lián)外部i2c設(shè)備以執(zhí)行所述讀寫命令;
i2c控制器根據(jù)執(zhí)行結(jié)果向重復(fù)讀寫控制器反饋完成狀態(tài)信號、錯誤狀態(tài)信號以及所采集的數(shù)據(jù);
重復(fù)讀寫控制器對i2c控制器反饋的信號進(jìn)行識別且僅僅反饋有效信號給主控制器。
作為本發(fā)明的重要發(fā)明點,在于重復(fù)讀寫控制器的結(jié)構(gòu)設(shè)計,重復(fù)讀寫控制器包括寄存器模塊以及與該寄存器模塊電連接的中斷控制器、數(shù)據(jù)比較器、啟動次數(shù)計數(shù)器、定時器、啟動信號產(chǎn)生器、有效狀態(tài)計數(shù)器;如圖2所示。
該寄存器模塊通過內(nèi)部總線與主控制器電連接以用于接收主控制器發(fā)來的配置寄存器以及返回寄存器內(nèi)容給主控制器;
啟動次數(shù)計數(shù)器、定時器、啟動信號產(chǎn)生器依次連接,中斷控制器、數(shù)據(jù)比較器、啟動信號產(chǎn)生器、有效狀態(tài)計數(shù)器、寄存器模塊皆與i2c控制器連接,中斷控制器輸出端用于輸出中斷信號給主控制器。
作為本技術(shù)方案的進(jìn)一步細(xì)化,所述寄存器模塊包括啟動次數(shù)寄存器、啟動寄存器、間隔寄存器;
該啟動次數(shù)寄存器與啟動次數(shù)計數(shù)器連接,啟動次數(shù)寄存器用于設(shè)置發(fā)送次數(shù),主控制器只需設(shè)置一次即可。每發(fā)送成功一次啟動次數(shù)計數(shù)器會自動加一,如果達(dá)到啟動次數(shù)寄存器設(shè)置的次數(shù),則停止發(fā)送啟動信號;如果計數(shù)寄存器為0,則一直循環(huán)發(fā)送;
該啟動寄存器分別與啟動次數(shù)計數(shù)器、定時器連接,啟動寄存器用于控制產(chǎn)生啟動信號;間隔寄存器與定時器連接以用于設(shè)置start信號的發(fā)送周期,定時器根據(jù)此間隔寄存器配置產(chǎn)生周期性的使能信號給啟動信號產(chǎn)生器。
作為本技術(shù)方案的進(jìn)一步完善,所述寄存器模塊包括中斷狀態(tài)寄存器,中斷狀態(tài)寄存器分別與中斷控制器、有效狀態(tài)計數(shù)器連接,該中斷狀態(tài)寄存器包含三個中斷信息:分別是讀到有效狀態(tài),操作出錯以及計數(shù)次數(shù)滿。
作為本技術(shù)方案的進(jìn)一步完善,所述寄存器模塊包括讀寫寄存器,讀寫寄存器分別與i2c控制器、有效狀態(tài)計數(shù)器連接,用于指示當(dāng)前操作是寫操作還是讀操作。
作為本技術(shù)方案的進(jìn)一步完善,所述寄存器模塊包括期望數(shù)據(jù)寄存器,期望數(shù)據(jù)寄存器與所述數(shù)據(jù)比較器連接,用于比較i2c控制器讀回數(shù)據(jù),如果比較成功,由中斷控制器產(chǎn)生中斷信號給主控制器。
作為本技術(shù)方案的進(jìn)一步完善,所述寄存器模塊包括讀回數(shù)據(jù)寄存器,讀回數(shù)據(jù)寄存器個數(shù)為n,n為大于等于1的正整數(shù),n的大小由系統(tǒng)設(shè)計中根據(jù)需要自行定義。讀回數(shù)據(jù)寄存器與i2c控制器連接,用于主控制器未及時響應(yīng)中斷的情況下可以存儲i2c設(shè)備的連續(xù)有效狀態(tài)。
作為本技術(shù)方案的進(jìn)一步完善,所述寄存器模塊包括有效狀態(tài)數(shù)寄存器,該有效狀態(tài)數(shù)寄存器與有效狀態(tài)計數(shù)器連接,以用于記錄有效狀態(tài)計數(shù)器所存儲的有效狀態(tài)數(shù)目。
如圖3所示,本發(fā)明的工作流程為,上電初始化,先配置i2c控制器,再配置重復(fù)讀寫控制器,并設(shè)置好啟動寄存器,中斷控制器檢測i2c控制器是否有中斷信號產(chǎn)生,沒有中斷信號產(chǎn)生就循環(huán)檢測,如果有中斷信號產(chǎn)生則進(jìn)一步判斷讀操作是否正確完成,沒有完成則判定出錯,若讀操作正確完成則進(jìn)一步對讀取的數(shù)據(jù)與期望數(shù)據(jù)寄存器存儲的數(shù)據(jù)進(jìn)行比較,比較不成功就返回檢測前述中斷信號,比較成功則讀取該有效狀態(tài),并判斷有效狀態(tài)是否已讀完,未讀完就繼續(xù)讀取有效狀態(tài),若已讀完則執(zhí)行下一個事務(wù),并返回檢測前述中斷信號。
以上所述僅為本發(fā)明的優(yōu)先實施方式,本發(fā)明并不限定于上述實施方式,只要以基本相同手段實現(xiàn)本發(fā)明目的的技術(shù)方案都屬于本發(fā)明的保護(hù)范圍之內(nèi)。