本發(fā)明屬于電通信技術(shù)領(lǐng)域,更具體地涉及一種通過I2C接口讀寫內(nèi)部寄存器堆的裝置及方法。
背景技術(shù):
MIPI接口是一種新興的高速接口,具有低功耗、高傳輸速率等特點(diǎn),在移動(dòng)設(shè)備中有著廣泛的應(yīng)用。MPHY IP是MIPI設(shè)計(jì)中最關(guān)鍵的部分,MPHY由于可以靈活的配置多種可選模式和屬性,因而相比其他串行PHY具有顯著的優(yōu)勢(shì)。這一靈活性是通過MPHY的配置區(qū)域來實(shí)現(xiàn)的,MPHY的配置區(qū)域由寄存器堆構(gòu)成,其中的每個(gè)寄存器都具有特定的ID號(hào)。增強(qiáng)配置區(qū)域的可測(cè)試性和可觀測(cè)性對(duì)MPHY的設(shè)計(jì)和驗(yàn)證至關(guān)重要。
然而,在芯片設(shè)計(jì)過程中,面積、功耗、外部接口的數(shù)量等制約因素,一定程度上限制了可測(cè)試方案。I2C接口作為各種總線中使用信號(hào)線最少的總線,僅通過SCL和SDA兩根線就可以實(shí)現(xiàn)數(shù)據(jù)的傳輸,因此,I2C接口成為了常用的解決方案。在芯片設(shè)計(jì)當(dāng)中,出于測(cè)試用途考慮,常常在芯片的設(shè)計(jì)中加入I2C從機(jī),將需要觀測(cè)的片內(nèi)信號(hào)寄存在I2C寄存器中,通過片外I2C主機(jī)對(duì)片內(nèi)I2C從機(jī)發(fā)起讀請(qǐng)求的方式來觀測(cè)片內(nèi)信號(hào),同樣的,也可以將需要強(qiáng)制改寫的片內(nèi)信號(hào)的改寫值和改寫使能寄存在I2C寄存器中,通過片外I2C主機(jī)對(duì)片內(nèi)I2C從機(jī)發(fā)起寫請(qǐng)求的方式來強(qiáng)制改寫片內(nèi)信號(hào)。而對(duì)于內(nèi)部寄存器堆而言,由于寄存器數(shù)目眾多,將每個(gè)寄存器中存儲(chǔ)的數(shù)值分別寄存到I2C寄存器中來實(shí)現(xiàn)可測(cè)試和可觀測(cè)的方式,會(huì)消耗大量的I2C寄存器資源,進(jìn)而影響功耗、面積等性能指標(biāo)。因此,如何在不額外增加外部接口開銷和內(nèi)部存儲(chǔ)資源消耗的前提下,實(shí)現(xiàn)對(duì)芯片內(nèi)部寄存器堆的讀寫,對(duì)可測(cè)試性設(shè)計(jì)有著重要意義。
技術(shù)實(shí)現(xiàn)要素:
基于以上問題,本發(fā)明的主要目的在于提出一種通過I2C接口讀寫內(nèi)部寄存器堆的裝置及方法,用于解決上述技術(shù)問題中的至少之一。
為了實(shí)現(xiàn)上述目的,作為本發(fā)明的一個(gè)方面,本發(fā)明提出了一種通過I2C接口讀寫內(nèi)部寄存器堆的裝置,包括I2C主機(jī)、I2C從機(jī)、讀寫使能控制單元和讀寫操作單元,其中:
I2C主機(jī)用于向I2C從機(jī)和讀寫使能控制模塊發(fā)送信號(hào),并讀取I2C從機(jī)中的數(shù)據(jù);
I2C從機(jī),包括第一I2C讀寫寄存器、第二I2C讀寫寄存器和I2C只讀寄存器,用于分別接收I2C主機(jī)的發(fā)送信號(hào)并分別存儲(chǔ)I2C主機(jī)讀寫的寫ID和寫數(shù)據(jù)、讀ID及讀數(shù)據(jù);
讀寫操作單元用于對(duì)內(nèi)部寄存器堆進(jìn)行讀寫操作;
讀寫使能控制單元用于根據(jù)I2C主機(jī)的發(fā)送信號(hào)產(chǎn)生讀或?qū)懯鼓苄盘?hào)并置1來控制讀寫操作單元,當(dāng)寫使能信號(hào)為1時(shí),讀寫操作單元根據(jù)寫ID和寫數(shù)據(jù)進(jìn)行寫操作;當(dāng)讀使能信號(hào)為1時(shí),讀寫操作單元根據(jù)讀ID進(jìn)行讀操作,并將讀取的讀數(shù)據(jù)反饋至I2C只讀寄存器。
進(jìn)一步地,上述讀寫操作單元還用于在完成寫操作或讀操作后產(chǎn)生寫完成信號(hào)或讀完成信號(hào)并置1反饋至讀寫使能控制單元,寫完成信號(hào)和讀完成信號(hào)在保持一個(gè)周期后置0。
進(jìn)一步地,上述讀寫使能控制單元包括一傳送過程判斷模塊、一從機(jī)地址及傳送方向判斷模塊、一寫使能產(chǎn)生模塊和一讀使能產(chǎn)生模塊。
進(jìn)一步地,上述I2C主機(jī)向讀寫使能控制單元發(fā)送的信號(hào)為SCL和SDA線上狀態(tài)的變化,傳送過程判斷模塊根據(jù)此信號(hào)來判斷I2C主機(jī)是否進(jìn)行I2C操作并在檢測(cè)到I2C起始信號(hào)后,產(chǎn)生傳送過程指示信號(hào)并置1;在檢測(cè)到I2C終止信號(hào)后,將傳送過程指示信號(hào)置0。
進(jìn)一步地,上述從機(jī)地址及傳送方向判斷模塊在傳送過程指示信號(hào)為1時(shí),判斷操作為寫操作或者讀操作,并在進(jìn)行寫操作時(shí),產(chǎn)生預(yù)寫使能信號(hào)并置1;在進(jìn)行讀操作時(shí),產(chǎn)生預(yù)讀使能信號(hào)并置1。
進(jìn)一步地,上述從機(jī)地址及傳送方向判斷模塊還用于接收寫完成信號(hào)或讀使能信號(hào)并將預(yù)寫使能信號(hào)或預(yù)讀使能信號(hào)置0。
進(jìn)一步地,上述寫使能產(chǎn)生模塊,用于在預(yù)寫使能信號(hào)為1且傳送過程指示信號(hào)為0時(shí),產(chǎn)生寫使能信號(hào)并置1傳輸至讀寫操作單元,還用于接收寫完成信號(hào)并將所述寫使能信號(hào)置0;
進(jìn)一步地,上述讀使能產(chǎn)生模塊,用于在預(yù)讀使能信號(hào)為1且傳送過程指示信號(hào)為0時(shí),產(chǎn)生讀使能信號(hào)并置1傳輸至讀寫操作單元,還用于接收讀完成信號(hào)并將讀使能信號(hào)置0。
進(jìn)一步地,上述讀寫操作單元包括一寫操作模塊和一讀操作模塊。
進(jìn)一步地,上述寫操作模塊接收寫ID、寫數(shù)據(jù)和寫使能信號(hào),并在寫使能信號(hào)為1時(shí)對(duì)內(nèi)部寄存器堆中相應(yīng)的寄存器進(jìn)行改寫操作,并在完成改寫操作后產(chǎn)生寫完成信號(hào)并置1反饋至從機(jī)地址及傳送方向判斷模塊和寫使能產(chǎn)生模塊。
進(jìn)一步地,上述讀操作模塊接收讀ID并在讀使能信號(hào)為1時(shí),對(duì)內(nèi)部寄存器堆中相應(yīng)的寄存器進(jìn)行讀取操作,并在完成讀取操作后產(chǎn)生讀完成信號(hào)并置1反饋至從機(jī)地址及傳送方向判斷模塊和讀使能產(chǎn)生模塊,同時(shí)將讀取的讀數(shù)據(jù)發(fā)送至I2C只讀寄存器存儲(chǔ)。
為了實(shí)現(xiàn)上述目的,作為本發(fā)明的另一個(gè)方面,本發(fā)明提出一種通過I2C接口改寫內(nèi)部寄存器堆的方法,該方法通過如下裝置實(shí)現(xiàn),該裝置包括I2C主機(jī)、I2C從機(jī)、讀寫使能控制單元和讀寫操作單元;該方法包括以下步驟:
步驟11、I2C主機(jī)向讀寫使能控制單元發(fā)送I2C操作開始信號(hào)及數(shù)據(jù)改寫信號(hào),并向I2C從機(jī)發(fā)送進(jìn)行數(shù)據(jù)改寫的寫ID和寫數(shù)據(jù);
步驟12、讀寫使能控制單元根據(jù)I2C操作開始信號(hào)及數(shù)據(jù)改寫信號(hào),產(chǎn)生預(yù)寫使能信號(hào)并置1;
步驟13、I2C主機(jī)向所述讀寫使能控制單元發(fā)送I2C操作停止信號(hào);
步驟14、讀寫使能控制單元根據(jù)I2C操作停止信號(hào)及為1的預(yù)寫使能信號(hào),產(chǎn)生寫使能信號(hào)并置1;
步驟15、讀寫操作單元根據(jù)寫ID及寫數(shù)據(jù),接收為1的寫使能信號(hào),對(duì)內(nèi)部寄存器堆進(jìn)行改寫操作,在完成改寫操作后產(chǎn)生寫完成信號(hào)并置1反饋給讀寫使能控制單元;
步驟16、讀寫使能控制單元接收為1的寫完成信號(hào)將預(yù)寫使能信號(hào)和寫使能信號(hào)置0,完成對(duì)內(nèi)部寄存器堆的改寫。
本發(fā)明另一方面還提出一種通過I2C接口讀取內(nèi)部寄存器堆的方法,該方法通過如下裝置實(shí)現(xiàn),該裝置包括I2C主機(jī)、讀寫使能控制單元和讀寫操作單元;該方法包括以下步驟:
步驟21、I2C主機(jī)向讀寫使能控制單元發(fā)送I2C操作開始信號(hào)及數(shù)據(jù)讀取信號(hào),并向I2C從機(jī)發(fā)送進(jìn)行數(shù)據(jù)讀取的讀ID;
步驟22、讀寫使能控制單元根據(jù)I2C操作開始信號(hào)及數(shù)據(jù)讀取信號(hào),產(chǎn)生預(yù)讀使能信號(hào)并置1;
步驟23、I2C主機(jī)向讀寫使能控制單元傳輸I2C操作停止信號(hào);
步驟24、讀寫使能控制單元根據(jù)I2C操作停止信號(hào)及為1的預(yù)讀使能信號(hào),產(chǎn)生讀使能信號(hào)并置1;
步驟25、讀寫操作單元根據(jù)讀ID,接收為1的讀使能信號(hào),對(duì)內(nèi)部寄存器堆進(jìn)行讀取操作,在完成讀取操作后產(chǎn)生讀完成信號(hào)并置1反饋給讀寫使能控制單元,并將讀取的讀數(shù)據(jù)傳輸至I2C從機(jī);
步驟26、讀寫使能控制單元接收為1的讀完成信號(hào)將預(yù)讀使能信號(hào)和讀使能信號(hào)置0;
步驟27、I2C主機(jī)向I2C從機(jī)發(fā)送信號(hào),讀取讀數(shù)據(jù),完成對(duì)內(nèi)部寄存器堆的讀取。
基于上述方案可知,本發(fā)明提供的通過I2C接口讀寫內(nèi)部寄存器堆的裝置及方法,只需兩個(gè)I2C讀寫寄存器和一個(gè)I2C只讀寄存器,I2C從機(jī)不需與內(nèi)部寄存器堆的寄存器一一對(duì)應(yīng),通過讀寫使能控制模塊和讀寫操作模塊進(jìn)行讀寫操作,則在不額外增加外部接口開銷和內(nèi)部存儲(chǔ)資源消耗的前提下,可以有效地實(shí)現(xiàn)對(duì)內(nèi)部寄存器堆的讀寫,進(jìn)而有效地增加了內(nèi)部寄存器堆的可測(cè)試性和可觀測(cè)性。
附圖說明
圖1是本發(fā)明一實(shí)施例示出的通過I2C接口讀寫內(nèi)部寄存器堆的裝置結(jié)構(gòu)示意圖;
圖2是本發(fā)明一實(shí)施例示出的讀寫使能控制模塊的結(jié)構(gòu)示意圖;
圖3是本發(fā)明一實(shí)施例示出的讀寫操作模塊的結(jié)構(gòu)示意圖;
圖4是本發(fā)明一實(shí)施例示出的通過I2C接口改寫指定內(nèi)部寄存器的信號(hào)關(guān)系圖;
圖5是本發(fā)明另一實(shí)施例示出的通過I2C接口讀取指定內(nèi)部寄存器的信號(hào)關(guān)系圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。
本發(fā)明一方面公開了一種通過I2C接口讀寫內(nèi)部寄存器堆的裝置,包括I2C主機(jī)、I2C從機(jī)、讀寫使能控制單元和讀寫操作單元,其中:
I2C主機(jī)用于向I2C從機(jī)和讀寫使能控制模塊發(fā)送信號(hào),并讀取I2C從機(jī)中的數(shù)據(jù);
I2C從機(jī),主要包括第一I2C讀寫寄存器、第二I2C讀寫寄存器和I2C只讀寄存器,用于分別接收I2C主機(jī)的發(fā)送信號(hào)并分別存儲(chǔ)I2C主機(jī)讀寫的寫ID和寫數(shù)據(jù)、讀ID及讀數(shù)據(jù);其中作為優(yōu)選,該I2C從機(jī)主要由第一I2C讀寫寄存器、第二I2C讀寫寄存器和I2C只讀寄存器組成,僅通過這三個(gè)寄存器即可實(shí)現(xiàn)對(duì)內(nèi)部寄存器堆中的若干個(gè)寄存器進(jìn)行讀寫操作。
讀寫操作單元用于對(duì)內(nèi)部寄存器堆進(jìn)行讀寫操作;
讀寫使能控制單元用于根據(jù)I2C主機(jī)的發(fā)送信號(hào)產(chǎn)生讀或?qū)懯鼓苄盘?hào)并置1來控制讀寫操作單元,當(dāng)寫使能信號(hào)為1時(shí),讀寫操作單元根據(jù)寫ID和寫數(shù)據(jù)進(jìn)行寫操作;當(dāng)讀使能信號(hào)為1時(shí),讀寫操作單元根據(jù)讀ID進(jìn)行讀操作,并將讀取的讀數(shù)據(jù)反饋至I2C只讀寄存器。
其中,上述讀寫操作單元還用于在完成寫操作或讀操作后產(chǎn)生寫完成信號(hào)或讀完成信號(hào)并置1反饋至讀寫使能控制單元,寫完成信號(hào)和讀完成信號(hào)在保持一個(gè)周期后置0。
優(yōu)選地,上述讀寫使能控制單元包括一傳送過程判斷模塊、一從機(jī)地址及傳送方向判斷模塊、一寫使能產(chǎn)生模塊和一讀使能產(chǎn)生模塊。I2C主機(jī)向讀寫使能控制單元發(fā)送的信號(hào)為SCL和SDA線上狀態(tài)的變化,
傳送過程判斷模塊根據(jù)此信號(hào)來判斷I2C主機(jī)是否進(jìn)行I2C操作并在檢測(cè)到I2C起始信號(hào)后,產(chǎn)生傳送過程指示信號(hào)并置1;在檢測(cè)到I2C終止信號(hào)后,將傳送過程指示信號(hào)置0。
從機(jī)地址及傳送方向判斷模塊在傳送過程指示信號(hào)為1時(shí),判斷操作為寫操作或者讀操作,并在進(jìn)行寫操作時(shí),產(chǎn)生預(yù)寫使能信號(hào)并置1;在進(jìn)行讀操作時(shí),產(chǎn)生預(yù)讀使能信號(hào)并置1;優(yōu)選地,從機(jī)地址及傳送方向判斷模塊還用于接收寫完成信號(hào)或讀使能信號(hào)并將預(yù)寫使能信號(hào)或預(yù)讀使能信號(hào)置0。
寫使能產(chǎn)生模塊,用于在預(yù)寫使能信號(hào)為1且傳送過程指示信號(hào)為0時(shí),產(chǎn)生寫使能信號(hào)并置1傳輸至讀寫操作單元,還用于接收寫完成信號(hào)并將所述寫使能信號(hào)置0;
讀使能產(chǎn)生模塊,用于在預(yù)讀使能信號(hào)為1且傳送過程指示信號(hào)為0時(shí),產(chǎn)生讀使能信號(hào)并置1傳輸至讀寫操作單元,還用于接收讀完成信號(hào)并將讀使能信號(hào)置0。
優(yōu)選地,上述讀寫操作單元包括一寫操作模塊和一讀操作模塊。
寫操作模塊接收寫ID、寫數(shù)據(jù)和寫使能信號(hào),并在寫使能信號(hào)為1時(shí)對(duì)內(nèi)部寄存器堆中相應(yīng)的寄存器進(jìn)行改寫操作,并在完成改寫操作后產(chǎn)生寫完成信號(hào)并置1反饋至從機(jī)地址及傳送方向判斷模塊和寫使能產(chǎn)生模塊。
讀操作模塊接收讀ID并在讀使能信號(hào)為1時(shí),對(duì)內(nèi)部寄存器堆中相應(yīng)的寄存器進(jìn)行讀取操作,并在完成讀取操作后產(chǎn)生讀完成信號(hào)并置1反饋至從機(jī)地址及傳送方向判斷模塊和讀使能產(chǎn)生模塊,同時(shí)將讀取的讀數(shù)據(jù)發(fā)送至I2C只讀寄存器存儲(chǔ)。
本發(fā)明另一方面公開了一種通過I2C接口改寫內(nèi)部寄存器堆的方法,該方法通過如下裝置實(shí)現(xiàn),該裝置包括I2C主機(jī)、I2C從機(jī)、讀寫使能控制單元和讀寫操作單元;該方法包括以下步驟:
步驟11、I2C主機(jī)向讀寫使能控制單元發(fā)送I2C操作開始信號(hào)及數(shù)據(jù)改寫信號(hào),并向I2C從機(jī)發(fā)送進(jìn)行數(shù)據(jù)改寫的寫ID和寫數(shù)據(jù);
步驟12、讀寫使能控制單元根據(jù)I2C操作開始信號(hào)及數(shù)據(jù)改寫信號(hào),產(chǎn)生預(yù)寫使能信號(hào)并置1;
步驟13、I2C主機(jī)向所述讀寫使能控制單元發(fā)送I2C操作停止信號(hào);
步驟14、讀寫使能控制單元根據(jù)I2C操作停止信號(hào)及為1的預(yù)寫使能信號(hào),產(chǎn)生寫使能信號(hào)并置1;
步驟15、讀寫操作單元根據(jù)寫ID及寫數(shù)據(jù),接收為1的寫使能信號(hào),對(duì)內(nèi)部寄存器堆進(jìn)行改寫操作,在完成改寫操作后產(chǎn)生寫完成信號(hào)并置1反饋給讀寫使能控制單元;
步驟16、讀寫使能控制單元接收為1的寫完成信號(hào)將預(yù)寫使能信號(hào)和寫使能信號(hào)置0,完成對(duì)內(nèi)部寄存器堆的改寫。
本發(fā)明還公開了一種通過I2C接口讀取內(nèi)部寄存器堆的方法,該方法通過如下裝置實(shí)現(xiàn),該裝置包括I2C主機(jī)、讀寫使能控制單元和讀寫操作單元;該方法包括以下步驟:
步驟21、I2C主機(jī)向讀寫使能控制單元發(fā)送I2C操作開始信號(hào)及數(shù)據(jù)讀取信號(hào),并向I2C從機(jī)發(fā)送進(jìn)行數(shù)據(jù)讀取的讀ID;
步驟22、讀寫使能控制單元根據(jù)I2C操作開始信號(hào)及數(shù)據(jù)讀取信號(hào),產(chǎn)生預(yù)讀使能信號(hào)并置1;
步驟23、I2C主機(jī)向讀寫使能控制單元傳輸I2C操作停止信號(hào);
步驟24、讀寫使能控制單元根據(jù)I2C操作停止信號(hào)及為1的預(yù)讀使能信號(hào),產(chǎn)生讀使能信號(hào)并置1;
步驟25、讀寫操作單元根據(jù)讀ID,接收為1的讀使能信號(hào),對(duì)內(nèi)部寄存器堆進(jìn)行讀取操作,在完成讀取操作后產(chǎn)生讀完成信號(hào)并置1反饋給讀寫使能控制單元,并將讀取的讀數(shù)據(jù)傳輸至I2C從機(jī);
步驟26、讀寫使能控制單元接收為1的讀完成信號(hào)將預(yù)讀使能信號(hào)和讀使能信號(hào)置0;
步驟27、I2C主機(jī)向I2C從機(jī)發(fā)送信號(hào),讀取讀數(shù)據(jù),完成對(duì)內(nèi)部寄存器堆的讀取。
以下通過具體實(shí)施例對(duì)本發(fā)明提出的通過I2C接口讀寫內(nèi)部寄存器堆的裝置及方法進(jìn)行詳細(xì)描述。
實(shí)施例1
如圖1所示,為本實(shí)施例1提出的通過I2C接口讀寫內(nèi)部寄存器堆的裝置結(jié)構(gòu)示意圖,本裝置包括I2C主機(jī)、包括三個(gè)I2C寄存器的I2C從機(jī)、讀寫使能控制模塊和讀寫操作模塊,以下分別說明各部分的具體功能。
I2C主機(jī)用于向I2C從機(jī)和讀寫使能控制模塊發(fā)送信號(hào),并讀取I2C從機(jī)中的數(shù)據(jù);
三個(gè)I2C寄存器,具體包括:
第一I2C讀寫寄存器,用于存儲(chǔ)需要進(jìn)行改寫的內(nèi)部寄存器的ID值及改寫后的數(shù)據(jù),簡(jiǎn)稱寫ID和寫數(shù)據(jù),其值是讀寫操作單元在進(jìn)行寫操作時(shí)的依據(jù),12C主機(jī)可以對(duì)第一I2C讀寫寄存器進(jìn)行讀寫控制;
第二I2C讀寫寄存器,用于存儲(chǔ)需要讀取的內(nèi)部寄存器的ID值,簡(jiǎn)稱讀ID,其值可被讀寫操作單元在進(jìn)行讀操作的時(shí)候使用,I2C主機(jī)可以對(duì)第二I2C讀寫寄存器進(jìn)行讀寫控制;
12C只讀寄存器,用于存儲(chǔ)讀寫操作單元返回的指定讀ID寄存器中的數(shù)據(jù),簡(jiǎn)稱讀數(shù)據(jù),I2C主機(jī)只能對(duì)I2C只讀寄存器進(jìn)行讀操作。
讀寫使能控制模塊,用于根據(jù)SCL和SDA總線的起始、從機(jī)地址、傳送方向以及終止?fàn)顟B(tài),和讀寫操作模塊輸出的讀寫操作完成反饋,來產(chǎn)生讀寫使能信號(hào)。
讀寫操作模塊,用于實(shí)現(xiàn)對(duì)內(nèi)部寄存器堆的讀寫操作,在寫使能信號(hào)有效時(shí),對(duì)指定寫ID的內(nèi)部寄存器寫入指定的寫內(nèi)容,并在完成本次寫操作后返回寫操作完成信號(hào);在讀使能信號(hào)有效的時(shí)刻,將指定讀ID的內(nèi)部寄存器中存儲(chǔ)的內(nèi)容反饋到I2C只讀寄存器中,并在完成本次讀操作后返回讀操作完成信號(hào)。
如圖2所示,為本實(shí)施例1所述的讀寫使能控制模塊的結(jié)構(gòu)示意圖,具體包括:
傳送過程判斷模塊,用于根據(jù)SCL和SDA線上狀態(tài)的變化,來判斷I2C主機(jī)是否正在進(jìn)行I2C操作,并在檢測(cè)到I2C起始信號(hào)后,將傳送過程指示信號(hào)置1,直到檢測(cè)到I2C終止信號(hào),再將其置0;
從機(jī)地址及傳送方向判斷模塊,用于根據(jù)傳送過程指示信號(hào)有效之后的前七個(gè)比特的值,來判斷從機(jī)地址,再根據(jù)傳送過程指示信號(hào)有效之后的第八個(gè)比特的值,來判斷當(dāng)前I2C操作的傳送方向?yàn)樽x操作還是寫操作,并在檢測(cè)到當(dāng)前I2C操作的傳送方向?yàn)閷懖僮鲿r(shí),將預(yù)寫使能信號(hào)置1,并保持直至讀寫操作單元輸出的寫操作完成信號(hào)有效后再重新置0;在檢測(cè)到當(dāng)前I2C操作的傳送方向?yàn)樽x操作時(shí),將預(yù)讀使能信號(hào)置1,并保持直至讀寫操作單元輸出的讀操作完成信號(hào)有效時(shí)重新置0;
寫使能產(chǎn)生模塊,用于根據(jù)傳送過程指示信號(hào)、預(yù)寫使能信號(hào)和讀寫操作單元輸出的寫操作完成信號(hào),來產(chǎn)生寫使能控制信號(hào),并在預(yù)寫使能信號(hào)有效且傳送過程指示信號(hào)無效時(shí),將寫使能控制信號(hào)置1,并保持直到寫操作完成信號(hào)有效后再重新置0;
讀使能產(chǎn)生模塊,用于根據(jù)傳送過程指示信號(hào)、預(yù)讀使能信號(hào)和讀寫操作單元輸出的讀操作完成信號(hào),來產(chǎn)生讀使能控制信號(hào),并在預(yù)讀使能信號(hào)有效且傳送過程指示信號(hào)無效時(shí),將讀使能控制信號(hào)置1,并保持直到讀操作完成信號(hào)有效后再重新置0。
如圖3所示,為本實(shí)施例1所述的讀寫操作模塊的結(jié)構(gòu)示意圖,具體包括:
寫操作模塊,用于根據(jù)第一I2C讀寫寄存器中存儲(chǔ)的寫ID和寫數(shù)據(jù),在寫使能信號(hào)有效時(shí),將寫數(shù)據(jù)寫入到指定寫ID的內(nèi)部寄存器中,并在完成本次寫操作后將寫操作完成信號(hào)置1,保持一個(gè)周期后重新置0;
讀操作模塊,用于根據(jù)第二I2C讀寫寄存器中存儲(chǔ)的讀ID,在讀使能信號(hào)有效時(shí),將指定讀ID的內(nèi)部寄存器的值寫入到I2C只讀寄存器中,并在完成本次讀操作后將讀操作完成信號(hào)置1,保持一個(gè)周期后重新置0。
實(shí)施例2
如圖4所示,為本實(shí)施例提出的通過I2C接口改寫內(nèi)部寄存器堆的方法的信號(hào)關(guān)系圖,其改寫的具體步驟如下描述:
步驟11、讀寫使能控制模塊中的傳送過程判斷模塊,根據(jù)SCL和SDA線上狀態(tài)的變化,來判斷I2C傳送的起始標(biāo)志,SDA信號(hào)在SCL信號(hào)為高電平時(shí)出現(xiàn)下降沿即表示I2C傳送開始,傳送過程判斷模塊在檢測(cè)到此變化時(shí)將傳送過程指示信號(hào)置1;
步驟12、讀寫使能控制模塊中的從機(jī)地址及傳送方向判斷模塊,根據(jù)傳送過程指示信號(hào)有效之后的前七個(gè)比特的從機(jī)地址值和第八個(gè)比特的傳送方向值進(jìn)行判斷,并在檢測(cè)到當(dāng)前I2C操作是對(duì)第一I2C讀寫寄存器的寫操作時(shí),將預(yù)寫使能信號(hào)置1;
步驟13、讀寫使能控制模塊中的傳送過程判斷模塊,根據(jù)SCL和SDA線上狀態(tài)的變化,來判斷I2C傳送的終止標(biāo)志,SDA信號(hào)在SCL信號(hào)為高電平時(shí)出現(xiàn)上升沿即表示I2C傳送終止,傳送過程判斷模塊在檢測(cè)到此變化時(shí)將傳送過程指示信號(hào)置0;步驟14、讀寫使能控制模塊中的寫使能產(chǎn)生模塊,在預(yù)寫使能信號(hào)為1且傳送過程指示信號(hào)為0時(shí),將寫使能信號(hào)置1;
步驟15、讀寫操作模塊中的寫操作模塊,根據(jù)第一I2C讀寫寄存器中存儲(chǔ)的寫ID和寫數(shù)據(jù),將寫數(shù)據(jù)寫入到指定寫ID的內(nèi)部寄存器中,并在完成本次寫操作后將寫完成信號(hào)置1反饋給讀寫使能控制模塊的從機(jī)地址及傳送方向判斷模塊和寫使能產(chǎn)生模塊;
步驟16、讀寫使能控制模塊中的從機(jī)地址及傳送方向判斷模塊和寫使能產(chǎn)生模塊,在寫操作完成信號(hào)為1后,分別將預(yù)寫使能信號(hào)和寫使能控制信號(hào)重新置0,完成對(duì)內(nèi)部寄存器堆的改寫。
實(shí)施例3
如圖5所示,為本實(shí)施例提出的通過I2C接口讀取內(nèi)部寄存器堆的方法的信號(hào)關(guān)系圖,其讀取的具體步驟如下描述:
步驟21、讀寫使能控制模塊中的傳送過程判斷模塊,根據(jù)SCL和SDA線上狀態(tài)的變化,來判斷I2C傳送的起始標(biāo)志,SDA信號(hào)在SCL信號(hào)為高電平時(shí)出現(xiàn)下降沿即表示I2C傳送開始,傳送過程判斷模塊在檢測(cè)到此變化時(shí)將傳送過程指示信號(hào)置1;
步驟22、讀寫使能控制模塊中的從機(jī)地址及傳送方向判斷模塊,根據(jù)傳送過程指示信號(hào)有效之后的前七個(gè)比特的從機(jī)地址值和第八個(gè)比特的傳送方向值進(jìn)行判斷,并在檢測(cè)到當(dāng)前I2C操作是對(duì)第二I2C讀寫寄存器的寫操作時(shí),將預(yù)讀使能信號(hào)置1;
步驟23、讀寫使能控制模塊中的傳送過程判斷模塊,根據(jù)SCL和SDA線上狀態(tài)的變化,來判斷I2C傳送的終止標(biāo)志,SDA信號(hào)在SCL信號(hào)為高電平時(shí)出現(xiàn)上升沿即表示I2C傳送終止,傳送過程判斷模塊在檢測(cè)到此變化時(shí)將傳送過程指示信號(hào)置0;
步驟24、讀寫使能控制模塊中的讀使能產(chǎn)生模塊,在預(yù)讀使能信號(hào)為1且傳送過程指示信號(hào)為0時(shí),將讀使能信號(hào)置1;
步驟25、讀寫操作模塊中的讀操作模塊,根據(jù)第二I2C讀寫寄存器中存儲(chǔ)的讀ID,在讀使能信號(hào)為1時(shí),將指定讀ID的內(nèi)部寄存器的值寫入到I2C只讀寄存器中,并在完成本次讀操作后將讀完成信號(hào)置1并反饋給讀寫使能控制模塊中的從機(jī)地址及傳送方向判斷模塊和讀使能產(chǎn)生模塊;
步驟26、讀寫使能控制模塊中的從機(jī)地址及傳送方向判斷模塊和讀使能產(chǎn)生模塊,在讀完成信號(hào)為1時(shí),分別將預(yù)讀使能信號(hào)和讀使能信號(hào)重新置0;
步驟27、I2C主機(jī)對(duì)I2C只讀寄存器發(fā)起讀操作,進(jìn)而獲取指定讀ID的內(nèi)部寄存器的值,完成對(duì)內(nèi)部寄存器堆的讀取。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。