TWI731200B - 使用i2c匯流排與主機連接的從機及其通信方法 - Google Patents
使用i2c匯流排與主機連接的從機及其通信方法 Download PDFInfo
- Publication number
- TWI731200B TWI731200B TW106143261A TW106143261A TWI731200B TW I731200 B TWI731200 B TW I731200B TW 106143261 A TW106143261 A TW 106143261A TW 106143261 A TW106143261 A TW 106143261A TW I731200 B TWI731200 B TW I731200B
- Authority
- TW
- Taiwan
- Prior art keywords
- slave
- data
- byte
- state
- completion flag
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
本發明公開一種從機使用I2C匯流排與主機連接的通信方法,包括:在從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態;當檢測到所述位元組傳輸完成標誌位處於第一狀態,清除所述位元組傳輸完成標誌位以在所述發送模式中終止向所述主機發送資料;其中,所述第一狀態表示所述主機請求的所有資料已由所述從機發送完成。本發明還提供了採用上述通信方法的從機。本發明在兼容標準的I2C匯流排協議的基礎上,配置簡單,且從機處於發送狀態時,在完成最後一位元組資料的傳輸時無需切換從機的工作模式來停止從機繼續傳輸資料,響應快速,同時,無需額外空讀資料寄存器或者寫入空資料來停止從機繼續傳輸資料,可靠性高。
Description
本發明涉及通信技術領域,尤其涉及一種使用I2C匯流排與主機連接的從機及其通信方法。
I2C串列(serial)匯流排由兩根串列線構成,資料信號線(SDA)與時鐘信號線(SCL),分別負責傳輸資料與時鐘。其通信方式為主從模式,主機發起通信(讀或寫請求),並提供匯流排時鐘。從機對主機的請求進行響應,其中,及時判斷主機發送的各種位址、命令位、資料、響應位等,然後根據不同模式通過軟體配置控制寄存器來調整自身的模式,以配合完成通信。
在傳統的I2C設計中,由資料寄存器的空和滿來觸發下一次的資料傳輸。因此,當從機處於發送狀態時,發送最後一次資料後,資料寄存器變空,此時,依然會觸發傳輸請求標誌信號而再向資料寄存器填入資料,如第1圖中的虛線框所示。主機提供時鐘信號給從機,每次9個週期。在從機發送模式中,資料寄存器空時會觸發中斷,應及時填入資料;否則,可能造成下溢。而在從機接收模式中,資料寄存器滿時會觸發中斷,應及時讀取資料;否則,可能造成上溢。當從機在發送模式中發送完所需傳輸的資料的最後一位元組資料後,主機已經獲取全部資料,但由 於從機處於發送模式,資料寄存器空依然會再次觸發中斷響應以指示從機再向資料寄存器填入欲發送的資料,但此時從機並不應該再向資料寄存器填入新的資料。
為了防止從機傳送完主機所請求的資料後繼續向主機傳輸資料,需要在最後一筆資料傳輸後想辦法停止觸發傳輸,目前現有技術中有以下幾種方式: 1、鑒於從機發送模式下,最後一位元組資料傳輸後的缺陷(一直等待填入新資料),可以關閉發送資料寄存器空(TxE)中斷,但是,此方法需要硬件支持獨立關閉發送資料寄存器空的中斷,並且,在關閉該發送資料寄存器空中斷後,何時打開該發送資料寄存器空中斷將成為新問題。例如,通常當從機發送完所有資料後便切換到接收模式,此時若接收到主機發送來的再次請求從機發送資料的命令,則從機需要在接收資料寄存器滿(RxF)中斷中加入邏輯判斷來打開發送其資料寄存器空中斷再次進入發送模式; 2、將從機的模式切換到接收狀態,通過再額外空讀一次接收資料寄存器來使接收資料寄存器滿中斷不被觸發,從而停止中斷響應以終止從機向主機發送資料,但是程序的流程繁瑣且行為不易於理解,並且在從機與主機多次進行資料傳輸時,需要判斷繁瑣的狀態位,反覆在發送模式和接收模式之間切換從機的工作模式; 3、通過寫入空(dummy)資料來填滿發送資料寄存器空,進而防止宕在發送資料寄存器空中斷中,但是,寫入空資料可能導致再次傳輸時發送的資料錯誤,影響傳輸。
有鑑於此,有必要提供一種使用I2C匯流排與 主機連接的從機及其通信方法。
本發明解決上述技術問題所採用的技術方案是提供了一種從機使用I2C匯流排與主機連接的通信方法,包括:在從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態;當檢測到所述位元組傳輸完成標誌位處於第一狀態,清除所述位元組傳輸完成標誌位以在所述發送模式中終止向所述主機發送資料;其中,所述第一狀態表示所述主機請求的所有資料已由所述從機發送完成。
其中,所述通信方法還包括:當檢測到所述位元組傳輸完成標誌位處於第二狀態,則繼續向所述主機發送資料,其中,所述第二狀態表示所述主機請求發送的部分資料已發送完成。
其中,所述向所述主機發送資料,包括:向所述從機的發送資料寄存器寫入新的資料。
其中,所述第一狀態和所述第二狀態根據所述位元組傳輸完成標誌位的數值以及其數值的時長來確定。
其中,所述第一狀態的時長大於所述第二狀態的時長。
其中,所述位元組傳輸完成標誌位在發送模式下,每完成發送一位元組資料則被設置為所述第二狀態,且當所述主機請求發送的所有資料發送完成時被設置為所述第一狀態。
其中,還包括:在處於接收模式時,接收所述主機當前發送的資料;當完成接收所述主機當前發送的資料時,所述位元組傳輸完成標誌位處於第二狀態,則繼續獲取所述主機發送的資料。
其中,所述接收所述主機當前發送的資料,包括:將所接收的所述主機當前發送的資料寫入所述從機的 接收資料寄存器中。
其中,所述位元組傳輸完成標誌位在接收模式下,每完成接收一位元組資料則被設置為所述第二狀態。
其中,還包括:硬件自動識別所接收到的所述主機的讀寫命令信號且在所接收的從機位址與自身位址匹配時,根據所述讀寫命令信號自動配置所述從機的工作模式為所述發送模式或接收模式。
其中,所述根據所述讀寫命令信號自動配置所述從機的工作模式為所述發送模式或接收模式包括:獲取對應於所述從機位址的讀寫命令位;在所述讀寫命令位為第一符號時,將所述從機的驅動程序配置為發送模式,在所述讀寫命令位為第二符號時,將所述從機的驅動程序配置為接收模式。
本發明解決上述技術問題所採用的另一技術方案是提供了一種使用I2C匯流排與主機連接的從機,包括:檢測模組,用於在所述從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態;處理模組,耦接於所述檢測模組,用於當所述檢測模組檢測到所述位元組傳輸完成標誌位處於第一狀態時,清除所述位元組傳輸完成標誌位以在所述發送模式中終止向所述主機發送資料;其中,所述第一狀態表示所述主機請求的所有資料已由所述從機發送完成。
其中,所述處理模組還用於:當所述檢測模組檢測到所述位元組傳輸完成標誌位處於第二狀態,則繼續向所述主機發送資料,其中,所述位元組傳輸完成標誌位的第二狀態用於在所述從機處於發送模式時表示所述主機請求發送的部分資料已發送完成。
本發明解決上述技術問題所採用的又一技術 方案是提供了一種使用I2C匯流排與主機連接的從機,包括:運算邏輯電路,用於在所述從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態;控制電路,耦接於所述運算邏輯電路,用於當檢測模組檢測到所述位元組傳輸完成標誌位處於第一狀態時,清除所述位元組傳輸完成標誌位以在所述發送模式中終止向所述主機發送資料;其中,所述第一狀態表示所述主機請求的所有資料已由所述從機發送完成。
本發明的有益效果有:相對于傳統的I2C設計,在兼容標準的I2C匯流排協議的基礎上,配置簡單,且從機處於發送狀態時,在完成最後一位元組資料的傳輸時無需切換從機的工作模式來停止從機繼續傳輸資料,響應快速。此外,也無需額外空讀資料寄存器或者寫入空資料來停止從機繼續傳輸資料,可靠性高。
S202,S204,S406,S408,S610,S620‧‧‧步驟
SDA‧‧‧資料信號線
SCL‧‧‧時鐘信號線
BND‧‧‧位元組傳輸完成標誌位
Empty‧‧‧狀態位
Full‧‧‧狀態位
600,700‧‧‧從機
610‧‧‧檢測模組
620‧‧‧處理模組
710‧‧‧運算邏輯電路
720‧‧‧寄存器
730‧‧‧匯流排
740‧‧‧控制電路
第1圖是傳統的I2C設計中從機的波形圖;第2圖是本發明第一實施例的從機的通信方法的流程圖;第3圖是本發明上述第一實施例的I2C設計中從機的波形圖;第4圖是本發明第二實施例的從機的通信方法的部分流程圖;第5圖是本發明上述第二實施例的I2C設計中從機的波形圖;第6圖是本發明第一實施例的從機的結構示意圖;第7圖是本發明第二實施例的從機的結構示意圖。
為使所屬領域的具有通常知識者更好地理解本發明的技術方案,下面結合附圖和具體實施方式對本發明的技術方案做進一步詳細描述。
為便於理解本發明,先對本發明在從機中新設置的位元組傳輸完成標誌位(byte end,英文簡稱:BND)進行說明。
該位元組傳輸完成標誌位BND用於標識資料傳輸的狀態。
在從機處於發送模式過程中,該位元組傳輸完成標誌位BND至少可以為第一字元或第二字元。其中,該第一字元用於觸發從機繼續發送資料,例如,用於觸發從機的處理器向從機的發送資料寄存器寫入資料;第二字元用於觸發從機停止發送資料,例如,用於觸發從機的處理器停止向從機的發送資料寄存器寫入資料。該位元組傳輸完成標誌位BND的值可由從機的硬件設置,例如由其寄存器設置。在具體應用中,該第一字元可為1,第二字元可為0,或者該第一字元可為0,第二字元可為1。
該位元組傳輸完成標誌位BND還包括有第一狀態和第二狀態,分別表示主機請求的所有資料已由從機發送完成和主機請求的部分資料已由從機發送完成。具體地,該第一狀態和第二狀態可根據該位元組傳輸完成標誌位的數值以及其數值的時長進行劃分。例如,在一實施例中,當位元組傳輸完成標誌位為第一字元的時長大于一時間值時確定為處於第一狀態,當位元組傳輸完成標誌位為第一字元的時長不大於該時間值時確定為處於第二狀態。或者說,當位元組傳輸完成標誌位為第一字元時,第一狀態的時長大於第二狀態的時長,該時間值或時長可以根據從機的讀寫速度、執行指令的速度等具體應用進行設定。
如第2圖所示,是本發明第一實施例的從機通信方法的流程圖,其中,從機使用I2C匯流排與主機連接。該方法包括以下步驟:
步驟S202:在從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態。
本實施例的執行主體為從機,該從機相對主機而言。主機和從機分別為含有I2C匯流排介面的器件,例如處理器。
從機的工作模式包括發送模式和接收模式,發送模式是指從機向主機向發送資料,接收模式是指從機從主機接收資料。在本實施例中,通過硬件自動識別所接收到的主機的讀寫命令信號且在所接收的從機位址與自身位址匹配時,根據讀寫命令信號自動配置從機的工作模式為發送模式或接收模式。具體地,獲取對應於從機位址的讀寫命令位;在讀寫命令位為第一符號時,將從機的驅動程序配置為發送模式,在讀寫命令位為第二符號時,將從機的驅動程序配置為接收模式。在本實施例中,第一符號和第二符號採用不同的符號來區別以配置不同的工作模式,其中第一符號可以為1,第二符號可以為0,從機位址為7位,在本發明中,第一符號和第二符號不作限定,可根據開發需求和習慣來設置。
位元組傳輸完成標誌位BND的狀態的設置由硬件實現,例如寄存器,在從機處於發送模式時,其包括第一狀態和第二狀態,其中第一狀態用於表示主機請求的所有資料已由從機發送完成,第二狀態用於表示主機請求的部分資料已由從機發送完成。
步驟S204:當檢測到位元組傳輸完成標誌位處於第一狀態,清除位元組傳輸完成標誌位以在發送模式中 終止向主機發送資料。
向主機發送資料包括向從機的發送資料寄存器寫入新的需發送的資料。清除位元組傳輸完成標誌位BND表示將該位元組傳輸完成標誌位BND上的數值設置為第二字元,在本實施例中,第二字元為0,即將該位元組傳輸完成標誌位上的數值清零,此時,該位元組傳輸完成標誌位為第二字元,從機停止發送資料,不再向從機的發送資料寄存器寫入新的資料。在位元組傳輸完成標誌位BND處於第一狀態時,主機請求的所有資料已由從機發送完成,即最後一位元組資料傳輸完成,此時,從機清除位元組傳輸完成標誌位BND,以觸發從機不再向從機的發送資料寄存器寫入新的資料,而無需切換從機的工作模式,從機即終止向主機發送資料。在本實施例中,向設置該位元組傳輸完成標誌位BND的硬件內寫入1/0來實現清除位元組傳輸完成標誌位BND,在其他實施例中,還可以通過其他方式來實現清除位元組傳輸完成標誌位BND,例如,讀取設置位元組傳輸完成標誌位BND的硬件內的數值,進而來實現清除位元組傳輸完成標誌位BND。
相對于傳統的I2C設計,上述實施例通過位元組傳輸完成標誌位來標記從機處於發送狀態時的資料發送情況,在兼容標準的I2C匯流排協議的基礎上,配置簡單,且從機處於發送狀態時,在完成最後一位元組資料的傳輸時無需切換從機的工作模式來停止從機繼續傳輸資料,響應快速。同時,無需額外空讀資料寄存器或者寫入空資料來停止從機繼續傳輸資料,可靠性高且配置簡單。對於開發者,無需判斷眾多繁瑣的狀態位(例如第1圖的empty和full),無需反復切換傳輸方向(例如發送模式和接收模式),可以簡化驅動程序開發流程,更提高了系統響應速 度。為進一步提升I2C匯流排的傳輸速率提供可能,擴展了I2C匯流排的應用場景。
在一實施例中,當檢測到位元組傳輸完成標誌位BND處於第二狀態,則繼續向主機發送資料。
第二狀態表示主機請求的部分資料已由從機發送完成,即還存在主機請求發送的資料沒有由從機發送完,此時,從機需繼續向主機發送資料,其中向主機發送資料包括向從機的發送資料寄存器寫入新的資料。新的資料是指從機需要發送給主機的資料,也即主機請求的資料。具體地,從機處於發送模式時,從機向主機發送資料的過程中,即資料傳輸的過程中,每完成發送一位元組資料,則位元組傳輸完成標誌位BND被設置為第二狀態,直到主機請求發送的所有資料均發送完成,此時,位元組傳輸完成標誌位BND被設置為第一狀態。
下面結合第3圖中的波形圖對從機處於發送模式時的通信過程進行詳細說明。具體以第一字元為1,第二字元為0以及讀寫命令位的第一符號為1進行舉例說明。
從機檢測到開始信號start時,位元組傳輸完成標誌位BND被設置為0。從機接收位址位元組,此時,從機處於位址匹配階段,位元組傳輸完成標誌位BND一直保持為0,在該位址位元組傳輸匹配完成時,位元組傳輸完成標誌位BND保持為0,繼而向從機的發送資料寄存器寫入新的資料,初始時間t0後,位元組傳輸完成標誌位BND仍然為0,其中,位址位元組包括從機位址和讀寫命令位,且由於讀寫命令位為第一符號,硬件可判斷從機處於發送模式。
隨後,從機發送一位元組資料,具體地,在發送該位元組資料的過程中,位元組傳輸完成標誌位BND保持為0,在該位元組資料傳輸完成時,位元組傳輸完成標誌 位BND被置起為1,此時,觸發從機繼續向從機的發送資料寄存器寫入新的資料,即寫入要發送的下一位元組資料,第一時間t1後,完成向發送資料寄存器寫入下一位元組資料,此時,位元組傳輸完成標誌位BND由於發送資料寄存器中被填入了新的資料而被清零,即位元組傳輸完成標誌位BND的數值由1變為0,此時指示停止向發送資料寄存器寫入資料,進而從機開始發送該新被填入的下一位元組資料以進入下一發送階段。在此階段中,位元組傳輸完成標誌位BND被置起為1的時長為第一時間t1,不大於預設時間值,即位元組傳輸完成標誌位BND處於第二狀態。
在從機完成發送上述新的一位元組資料後,位元組傳輸完成標誌位BND的數值再次變成0,從機繼續發送其發送資料寄存器內寫入的後續下一位元組資料,其過程與上一位元組資料發送的過程相同,在此不再說明。
直到從機完成發送最後一位元組資料時,主機請求的所有資料傳輸完成,位元組傳輸完成標誌位BND被置起為1,會觸發從機再嘗試寫入新的資料,但是此時,主機請求的所有資料已發送完成,沒有新的資料可以寫入到從機的發送資料寄存器內,故位元組傳輸完成標誌位BND保持為1,第二時間t2後,從機判斷當前位元組傳輸完成標誌位BND為1的時間t2大於預設時間值,即位元組傳輸完成標誌位BND處於第一狀態,則向設置位元組傳輸完成標誌位BND的硬件內寫入1/0,以使位元組傳輸完成標誌位BND被清零,即位元組傳輸完成標誌位BND的數值由1變為0,也即清除位元組傳輸完成標誌位BND,進而停止向發送資料寄存器寫入資料,停止再次觸發中斷並直接終止從機繼續向主機發送資料,處於發送狀態的從機的本次通信過程結束。此實施例的方法不需要採用將從機額外切換至接收 模式來空讀寄存器的方式或者寫入空資料的方式來終止從機傳輸。
之後,從機等待開始信號start,若檢測到開始信號start,則再進行下一次通信過程,如上述過程相同。
需要說明的是,在上述處於發送模式的通信過程中,從機接收到位址位元組時,向主機返回應答信號。從機每次向主機完成發送一個位元組資料,均是在接收到主機因接收到上一位元組資料而反饋的一個應答信號之後。具體如,在接收到主機的應答信號後,從機再向發送資料寄存器寫入新位元組資料並進行再次發送。
如第4圖所示,是本發明第二實施例的從機通信方法的流程圖,第二實施例與第一實施例的區別在於,在第一實施例的基礎上,該方法還包括:
步驟S406:在從機處於接收模式時,接收主機當前發送的資料;本實施例的執行主體同樣是從機,配置從機的工作模式的方式也與上述實施例相同,在此不再贅述。需要說明的是,在本實施例中,當從機處於接收模式時,配置從機的工作模式時,讀寫命令位為第二符號。接收主機當前發送的資料包括將從機接收的主機當前發送的資料寫入接收資料寄存器中,以便從從機的接收資料寄存器中讀取主機當前發送的資料。
步驟S408:當完成接收主機當前發送的資料時,位元組傳輸完成標誌位處於第二狀態。
位元組傳輸完成標誌位BND用於標識資料傳輸的狀態,該位元組傳輸完成標誌位BND至少可以為第一字元或第二字元。其中,該第一字元用於觸發從機繼續接收資料,例如,觸發從機的處理器從從機的接收資料寄存 器讀取主機發送的資料;第二字元用於觸發從機停止接收資料,具體如,觸發從機的處理器停止從從機的接收資料寄存器讀取資料。該位元組傳輸完成標誌位的值可由從機的硬件設置,例如由其寄存器設置。在具體應用中,該第一字元可為1,第二字元可為0,或者該第一字元可為0,第二字元可為1。
在從機處於接收模式時,從機完成接收主機當前發送的資料時,位元組傳輸完成標誌位BND處於第二狀態,即第二狀態表示主機當前發送的資料已完成接收。繼而從機繼續接收主機發送的下一資料,在完成接收時,位元組傳輸完成標誌位BND處於第二狀態。具體地,從機處於接收模式時,從機接收主機發送的資料的過程中,從機每完成接收一位元組資料,位元組傳輸完成標誌位BND被設置為第二狀態,其中,從機接收主機發送的資料的過程包括資料傳輸的過程和從從機的接收資料寄存器讀取主機發送的資料的過程。
通過上述實施例的實施,相對于傳統的I2C設計,通過位元組傳輸完成標誌位來標記從機處於接收狀態時的資料接收情況,在兼容標準的I2C匯流排協議的基礎上,配置簡單。
下面結合第5圖中的波形圖對從機處於接收模式時的通信過程進行詳細說明。具體以第一字元為1,第二字元為0以及讀寫命令位的第二符號為0進行舉例說明。
從機檢測到開始信號start時,位元組傳輸完成標誌位BND被設置為0。從機接收位址位元組,此時,從機處於位址匹配階段,位元組傳輸完成標誌位BND一直保持為0,在該位址位元組傳輸完成時,位元組傳輸完成標誌位BND保持為0,初始時間t0後,位元組傳輸完成標誌位BND 仍然為0,其中,位址位元組包括從機位址和讀寫命令位,且由於讀寫命令位為第二符號,從機處於接收模式。
隨後,從機接收一位元組資料,具體地,在接收該位元組資料的過程中,位元組傳輸完成標誌位BND保持為0,在該位元組資料傳輸完成時,位元組傳輸完成標誌位BND被置起為1,此時,從從機的接收資料寄存器讀取剛接收到的該位元組資料,第一時間t1後,完成從接收資料寄存器讀取該位元組資料,此時,位元組傳輸完成標誌位BND被清零,即位元組傳輸完成標誌位BND的數值由1變為0,停止從接收資料寄存器讀取資料,進而從機開始接收該下一位元組資料以進入下一階段。
在從機完成讀取上述一位元組資料後,位元組傳輸完成標誌位BND的數值變成0,觸發從機開始接收下一位元組資料,其過程與上一位元組資料接收的過程相同,在此不在說明。
直到主機將最後一位元組資料傳輸完成時,位元組傳輸完成標誌位BND被置起為1,從從機的接收資料寄存器中讀取該最後一位元組資料,在第一時間t1後,完成從接收資料寄存器讀取該最後一位元組資料,此時,位元組傳輸完成標誌位BND被清零,即位元組傳輸完成標誌位BND的數值由1變為0。此時,從機在檢測到結束信號stop時,從機繼續處於等待接收主機資料的過程,直至主機再次發送資料或者從機轉換工作模式。
需要說明的是,在上述處於接收模式的通信過程中,從機接收到位址位元組時,向主機返回應答信號。從機每次完成接收主機發送的一個位元組資料後,均向主機返回應答信號。
如第6圖所示,是本發明第一實施例的從機的 結構示意圖,該從機600使用I2C匯流排與主機連接。該從機600可以為含有I2C匯流排介面的器件,例如,處理器。該從機600包括檢測模組610和處理模組620,處理模組620耦接於檢測模組610,其中:
檢測模組610用於在處於發送模式時,檢測位元組傳輸完成標誌位BND的狀態。位元組傳輸完成標誌位BND用於標識資料傳輸的狀態,在從機處於發送模式時,其包括第一狀態和第二狀態,其中第一狀態用於表示主機請求的所有資料已由從機發送完成,第二狀態用於表示主機請求的部分資料已由從機發送完成,具體的內容在上述已作說明,參照上述說明。
處理模組620用於當檢測到位元組傳輸完成標誌位處於第一狀態時,清除位元組傳輸完成標誌位以在發送模式中終止向主機發送資料。清除位元組傳輸完成標誌位BND表示將該位元組傳輸完成標誌位上的數值設置為第二字元,在本實施例中,第二字元為0,即將該位元組傳輸完成標誌位上的數值清零,此時,該位元組傳輸完成標誌位為第二字元,從機停止發送資料,不再向從機的發送資料寄存器寫入新的資料。
進一步地,在位元組傳輸完成標誌位BND處於第一狀態時,主機請求的所有資料已由從機發送完成,即最後一位元組資料傳輸完成,此時,從機清除位元組傳輸完成標誌位BND,以控制從機不再向從機的發送資料寄存器寫入新的資料,從而清除位元組傳輸完成標誌位BND時無需切換從機的工作模式。其中,清除位元組傳輸完成標誌位BND詳見上述說明。
進一步地,處理模組520還用於當檢測模組檢測到位元組傳輸完成標誌位BND處於第二狀態,則繼續向 主機發送資料。從機處於發送模式時,從機向主機發送資料的過程中,即資料傳輸的過程中,每完成發送一位元組資料,位元組傳輸完成標誌位BND被設置為第二狀態,直到主機請求發送的所有資料均發送完成,此時,位元組傳輸完成標誌位BND被設置為第一狀態。
上述從機的模組可對應用於執行上述方法實施例中的步驟,具體說明請參閱上述方法實施例的描述。
通過上述實施例的實施,相對于傳統的I2C設計中的從機,通過設置位元組傳輸完成標誌位BND來標記從機處於發送狀態時的資料發送情況,在兼容標準的I2C匯流排協議的基礎上,配置簡單,且從機處於發送狀態時,在完成最後一位元組資料的傳輸時無需切換從機的工作模式來停止從機繼續傳輸資料,響應快速,同時,無需額外空讀資料寄存器或者寫入空資料來停止從機繼續傳輸資料,可靠性高。
如第7圖所示,是本發明第二實施例的從機的結構示意圖,該從機700可以為含有I2C匯流排介面的器件,例如,處理器。該從機700包括運算邏輯電路710、寄存器720、匯流排730以及控制電路740,其中,通過匯流排730實現運算邏輯電路710、寄存器720和控制電路740之間的耦接。
運算邏輯電路710用於在處於發送模式時,檢測位元組傳輸完成標誌位BND的狀態。位元組傳輸完成標誌位BND用於標識資料傳輸的狀態,在從機處於發送模式時,其包括第一狀態和第二狀態,其中第一狀態用於表示主機請求的所有資料已由從機發送完成,第二狀態用於表示主機請求的部分資料已由從機發送完成,具體的內容在上述已作說明,參照上述說明。
控制電路740用於當檢測到位元組傳輸完成標誌位處於第一狀態時,清除位元組傳輸完成標誌位以在發送模式中終止向主機發送資料。清除位元組傳輸完成標誌位BND表示將該位元組傳輸完成標誌位上的數值設置為第二字元,在本實施例中,第二字元為0,即將該位元組傳輸完成標誌位上的數值清零,此時,該位元組傳輸完成標誌位為第二字元,控制電路740停止觸發再次發送資料,不再向從機的發送資料寄存器寫入新的資料。
寄存器720用於保存從機執行指令中臨時存放的操作數、中間的操作結果或者最好的操作結果。例如,位元組傳輸完成標誌位BND,從機處於發送或者接收模式時所要發送或者接收的位址位元組、位元組資料等。
進一步地,在位元組傳輸完成標誌位BND處於第一狀態時,主機請求的所有資料已由從機發送完成,即最後一位元組資料傳輸完成,此時,控制電路740清除位元組傳輸完成標誌位BND,以觸發控制電路740不再向從機的發送資料寄存器寫入新的資料,從而清除位元組傳輸完成標誌位BND時無需切換從機的工作模式。其中,清除位元組傳輸完成標誌位BND詳見上述說明。
進一步地,控制電路740還用於當檢測模組檢測到位元組傳輸完成標誌位BND處於第二狀態,則繼續向主機發送資料。從機處於發送模式時,從機向主機發送資料的過程中,即資料傳輸的過程中,每完成發送一位元組資料,位元組傳輸完成標誌位BND被設置為第二狀態,直到主機請求的所有資料均由從機發送完成,此時,位元組傳輸完成標誌位BND被設置為第一狀態。
需要說明的是,在本實施例中,從機700還包括處理器內其他電路,例如指令緩存器,用於向運算邏輯 電路710發放預定的多個指令等。
上述從機的器件可對應用於執行上述方法實施例中的步驟,具體說明請參閱上述方法實施例的描述。
雖然本發明的實施例及其優點已揭露如上,但應理解的是,本發明並未侷限於揭露之實施例。任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可做些許更動與潤飾,因此本發明的保護範圍當以申請專利範圍第所界定為准。凡依本發明申請專利範圍第所做的均等變化與修飾,皆應屬本發明的涵蓋範圍。
S202,S204‧‧‧步驟
Claims (10)
- 一種從機使用I2C匯流排與主機連接的通信方法,其中包括:在從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態,其中所述位元組傳輸完成標誌位由所述從機的硬體設置;當檢測到所述位元組傳輸完成標誌位處於第一狀態,清除所述位元組傳輸完成標誌位以在所述發送模式中終止向所述主機發送資料;其中,所述第一狀態表示所述主機請求的所有資料已由所述從機發送完成,其中當所述位元組傳輸完成標誌位元為第一字元的時長大於一時間值時,所述位元組傳輸完成標誌位元確定為處於第一狀態。
- 根據申請專利範圍第1項所述之通信方法,其中:所述通信方法還包括:當檢測到所述位元組傳輸完成標誌位處於第二狀態,則繼續向所述主機發送資料,其中,所述第二狀態表示所述主機請求發送的部分資料已發送完成;所述向所述主機發送資料進一步包括:向所述從機的發送資料寄存器寫入新的資料。
- 根據申請專利範圍第2項所述之通信方法,其中:所述第一狀態和所述第二狀態根據所述位元組傳輸完成標誌位的數值以及其數值的時長來確定;所述第一狀態的時長大於所述第二狀態的時長;所述位元組傳輸完成標誌位元在發送模式下,每完成發送一位元組資料則被設置為所述第二狀態,且當所述主機請求發送的所有資料發送完成時被設置為所述第一狀態。
- 根據申請專利範圍第1項所述之通信方法,其中還包括:在處於接收模式時,接收所述主機當前發送的資料;當完成接收所述主機當前發送的資料時,所述位元組傳輸完成標誌位處於第二狀態,則繼續獲取所述主機發送的資料。
- 根據申請專利範圍第4項所述之通信方法,其中:所述接收所述主機當前發送的資料進一步包括:將所接收的所述主機當前發送的資料寫入所述從機的接收資料寄存器中;所述位元組傳輸完成標誌位元在接收模式下,每完成接收一位元組資料則被設置為所述第二狀態。
- 根據申請專利範圍第1或4項所述之通信方法,其中,該方法還包括:所述硬體自動識別所接收到的所述主機的讀寫命令信號,且在所接收的從機位址與自身位址匹配時,根據所述讀寫命令信號自動配置所述從機的工作模式為所述發送模式或所述接收模式。
- 根據申請專利範圍第6項所述之通信方法,其中所述根據所述讀寫命令信號自動配置所述從機的工作模式為所述發送模式或接收模式包括:獲取對應於所述從機位址的讀寫命令位;在所述讀寫命令位為第一符號時,將所述從機的驅動程式配置為發送模式,在所述讀寫命令位為第二符號時,將所述從機的驅動程式配置為接收模式。
- 一種使用I2C匯流排與主機連接的從機,其中,該從機包括:檢測模組,用於在所述從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態,其中所述位元組傳輸完成標誌位由所述從機的硬體設置;處理模組,耦接於所述檢測模組,用於當所述檢測模組檢測到所述位元組傳輸完成標誌位處於第一狀態時,清 除所述位元組傳輸完成標誌位以在所述發送模式中終止向所述主機發送資料;其中,所述第一狀態表示所述主機請求的所有資料已由所述從機發送完成,其中當所述位元組傳輸完成標誌位元為第一字元的時長大於一時間值時,所述位元組傳輸完成標誌位元確定為處於第一狀態。
- 根據申請專利範圍第8項中所述之從機,其中所述處理模組還用於:當所述檢測模組檢測到所述位元組傳輸完成標誌位處於第二狀態,則繼續向所述主機發送資料,其中,所述位元組傳輸完成標誌位的第二狀態用於在所述從機處於發送模式時表示所述主機請求發送的部分資料已發送完成。
- 一種使用I2C匯流排與主機連接的從機,其中包括:運算邏輯電路,用於在所述從機處於發送模式時,檢測位元組傳輸完成標誌位的狀態,其中所述位元組傳輸完成標誌位由所述從機的硬體設置;控制電路,耦接於所述運算邏輯電路,用於當檢測模組檢測到所述位元組傳輸完成標誌位處於第一狀態時,清除所述位元組傳輸完成標誌位以在所述發送模式中終止向所述主機發送資料; 其中,所述第一狀態表示所述主機請求的所有資料已由所述從機發送完成,其中當所述位元組傳輸完成標誌位元為第一字元的時長大於一時間值時,所述位元組傳輸完成標誌位元確定為處於第一狀態。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611127631.5 | 2016-12-09 | ||
??201611127631.5 | 2016-12-09 | ||
CN201611127631.5A CN106681953B (zh) | 2016-12-09 | 2016-12-09 | 使用i2c总线与主机连接的从机及其通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201822011A TW201822011A (zh) | 2018-06-16 |
TWI731200B true TWI731200B (zh) | 2021-06-21 |
Family
ID=58869109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106143261A TWI731200B (zh) | 2016-12-09 | 2017-12-08 | 使用i2c匯流排與主機連接的從機及其通信方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10482047B2 (zh) |
CN (1) | CN106681953B (zh) |
TW (1) | TWI731200B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109873674B (zh) * | 2017-12-05 | 2021-11-16 | 佛山市顺德区美的电热电器制造有限公司 | 电器的匹配方法、匹配系统与加热平台 |
CN108280041B (zh) * | 2017-12-29 | 2020-03-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种内部集成电路主机的通信方法和装置 |
CN108153687B (zh) * | 2017-12-30 | 2021-03-30 | 深圳市科陆电子科技股份有限公司 | 一种基于mcu的串口通信方法和系统 |
CN108776590A (zh) * | 2018-05-31 | 2018-11-09 | 湖南品腾电子科技有限公司 | 一种精简烧录方法及装置 |
CN109889593B (zh) * | 2019-02-27 | 2021-11-12 | 中国人民解放军海军工程大学 | 一种移动机动保障方舱的分布式主从机通讯方法及装置 |
WO2022056793A1 (zh) * | 2020-09-17 | 2022-03-24 | 华为技术有限公司 | 一种基于内部集成电路的通信方法及装置 |
CN112463662B (zh) * | 2020-12-16 | 2024-04-05 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
CN112637248B (zh) * | 2021-03-09 | 2021-05-18 | 厚普清洁能源股份有限公司 | 一种lng加注趸船的船端、岸端设备通信处理方法 |
CN114443544B (zh) * | 2022-04-02 | 2022-06-28 | 井芯微电子技术(天津)有限公司 | 基于i2c模块主从模式切换方法及设备 |
CN114817100B (zh) * | 2022-04-08 | 2023-09-29 | 武汉光迅电子技术有限公司 | 一种用于单板的数据读取方法和装置 |
CN116166594B (zh) * | 2023-04-26 | 2023-07-18 | 闪极科技(深圳)有限公司 | 一种单地址多从机的iic总线电路及其传输方法和装置 |
CN117651022B (zh) * | 2024-01-30 | 2024-05-03 | 辅易航智能科技(苏州)有限公司 | 数据传输方法、装置、主设备和计算机可读存储介质 |
CN118467444B (zh) * | 2024-07-09 | 2024-10-11 | 成都阶跃时进科技有限公司 | Rs-485总线主机通讯方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633128A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 一种通讯传输控制装置及实现通讯协议控制的方法 |
JP2008242884A (ja) * | 2007-03-28 | 2008-10-09 | Matsushita Electric Ind Co Ltd | I2cバス制御回路 |
US20100272102A1 (en) * | 2009-04-23 | 2010-10-28 | Stmicroelectronics, Inc. | System and method for packet messaging and synchronization |
CN102023954A (zh) * | 2009-09-17 | 2011-04-20 | 研祥智能科技股份有限公司 | 具有多路i2c总线的装置、处理器、系统主板及工控计算机 |
US20120239841A1 (en) * | 2011-03-16 | 2012-09-20 | Texas Instruments Incorporated | Serial interface |
TW201447559A (zh) * | 2013-03-11 | 2014-12-16 | Microchip Tech Inc | 兩線串列介面及協定 |
TW201531864A (zh) * | 2014-02-07 | 2015-08-16 | Bayer Healthcare Llc | 用於多個主機匯流排協定的方法與裝置 |
US9298908B1 (en) * | 2014-10-17 | 2016-03-29 | Lexmark International, Inc. | Methods and apparatus for setting the address of a module using a voltage |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786753A (zh) * | 2016-02-22 | 2016-07-20 | 上海斐讯数据通信技术有限公司 | 一种i2c总线上的主从设备间的传输数据的方法及设备 |
-
2016
- 2016-12-09 CN CN201611127631.5A patent/CN106681953B/zh active Active
-
2017
- 2017-12-08 TW TW106143261A patent/TWI731200B/zh active
- 2017-12-08 US US15/835,457 patent/US10482047B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633128A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 一种通讯传输控制装置及实现通讯协议控制的方法 |
JP2008242884A (ja) * | 2007-03-28 | 2008-10-09 | Matsushita Electric Ind Co Ltd | I2cバス制御回路 |
US20100272102A1 (en) * | 2009-04-23 | 2010-10-28 | Stmicroelectronics, Inc. | System and method for packet messaging and synchronization |
CN102023954A (zh) * | 2009-09-17 | 2011-04-20 | 研祥智能科技股份有限公司 | 具有多路i2c总线的装置、处理器、系统主板及工控计算机 |
US20120239841A1 (en) * | 2011-03-16 | 2012-09-20 | Texas Instruments Incorporated | Serial interface |
TW201447559A (zh) * | 2013-03-11 | 2014-12-16 | Microchip Tech Inc | 兩線串列介面及協定 |
TW201531864A (zh) * | 2014-02-07 | 2015-08-16 | Bayer Healthcare Llc | 用於多個主機匯流排協定的方法與裝置 |
US9298908B1 (en) * | 2014-10-17 | 2016-03-29 | Lexmark International, Inc. | Methods and apparatus for setting the address of a module using a voltage |
Also Published As
Publication number | Publication date |
---|---|
TW201822011A (zh) | 2018-06-16 |
CN106681953B (zh) | 2020-04-10 |
US10482047B2 (en) | 2019-11-19 |
CN106681953A (zh) | 2017-05-17 |
US20180165232A1 (en) | 2018-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI731200B (zh) | 使用i2c匯流排與主機連接的從機及其通信方法 | |
US8898358B2 (en) | Multi-protocol communication on an I2C bus | |
JP6629215B2 (ja) | マルチマスターバスプロトコルのための方法および装置 | |
US8949486B1 (en) | Direct memory access to storage devices | |
TWI639086B (zh) | 具有可中斷指令序列的記憶體及其操作方法 | |
US20160224493A1 (en) | Universal serial bus (usb) kvm switch using virtual usb for switching among multiple hosts | |
US20070088874A1 (en) | Offload engine as processor peripheral | |
JPH02227765A (ja) | デジタル・コンピユータのデータ転送装置 | |
US20200201804A1 (en) | I3c device timing adjustment to accelerate in-band interrupts | |
TWI416418B (zh) | 資料傳輸控制器、裝置及其方法 | |
TW202246976A (zh) | 快速週邊元件互連裝置以及包括其的計算系統 | |
CN111124972A (zh) | 基于相同i2c地址的芯片扩展方法、系统及存储介质 | |
US8909844B2 (en) | Inter-integrated circuit (I2C) multiplexer switching as a function of clock frequency | |
WO2017036101A1 (zh) | 一种更新寄存器的方法及装置 | |
TWI630485B (zh) | 擴展主控制器和其操作方法 | |
WO2017012459A1 (zh) | 系统总线设备响应超时的处理方法、装置及存储介质 | |
JP6418021B2 (ja) | 情報処理装置及び情報処理装置の制御方法 | |
CN105068962A (zh) | I2c控制器访问方法及系统 | |
US8180926B2 (en) | Adaptable resource spoofing for an extended computer system | |
CN114996184A (zh) | 兼容实现spi或i2c从机的接口模块及数据传输方法 | |
CN109597630B (zh) | 一种带检测功能的p2mp软件烧写装置及方法 | |
WO2020155545A1 (zh) | 一种可编程gpio装置及基于该装置的时序实现方法 | |
CN112445744A (zh) | I2c通信 | |
CN111427813A (zh) | 一种基于串口的核间通讯方法、终端及存储介质 | |
US11782497B2 (en) | Peripheral component interconnect express (PCIE) interface device and method of operating the same |