專利名稱:具有多路i2c總線的裝置、處理器、系統主板及工控計算機的制作方法
技術領域:
本發明涉及處理器,更具體地說,涉及一種具有多路I2C總線的裝置、處理 器、系統主板及工控計算機。
背景技術:
I2C總線是由Philips公司開發的用于IC器件之間連接的二線制總線,雙向、兩 線、串行、多主控(multi-master)接口標準,具有總線仲裁機制,非常適合器件之間近距 離、非經常性的數據通信。它通過SDA(串行數據線)及SCL(串行時鐘線)兩根線在 連到總線上的器件之間傳送數據,并根據地址識別每個器件,每個連接到總線的器件都 可以通過唯一的地址和一直存在的簡單的主機從機關系軟件設定地址主機可以作為主機 發送器或主機接收器。它是一個真正的多主機總線,如果兩個或更多主機同時初始化數 據傳輸可以通過沖突檢測和仲裁防止數據被破壞。I2C總線能用于替代標準的并行總線, 能連接各種集成電路和功能模塊。支持I2C的設備有微控制器、ADC、DAC、儲存器、 LCD控制器、LED驅動器等。I2C總線上數據的傳輸速率在標準模式下可達IOOkbit/ S,在快速模式下可達400kbit/s,在高速模式下可達3.4Mbit/s。片上的濾波器可以濾去 總線數據線上的毛刺波保證數據完整,連接到相同總線的IC數量只受到總線的最大電容 400pF限制。由于其使用兩線的硬件接口簡單,I2C總線的應用越來越廣泛。MPC8245處理器只有一路I2C總線控制器,在現實的應用中,尤其是在監控系 統中,需要有多路I2C總線控制器來完成監控的功能。在I2C總線控制器的實現方面,也可以利用CPU的I/O引腳通過軟件編程來模 擬I2C總線時序,用完全軟件的方法實現I2C接口,但是這將占用較多的CPU資源,而 且容易受軟件運行的穩定性影響,效率低下。另外,還可利用IC芯片上的I2C總線控制 器實現多個I2C從器件讀寫操作,其運行穩定,但只能在專用支持I2C接口的ASIC硬核 單板上使用,單板設計成本高,不能靈活的實現多路I2C總線。
發明內容
本發明要解決的技術問題在于,針對現有技術的處理不能實現多路I2C總線; 用純軟件I2C接口實現后,其將占有較多CPU資源,效率低下;或用IC芯片實現多個 I2C從器件讀寫時,單板設計成本高等缺陷,提供一種具有多路I2C總線的裝置、處理 器、系統主板及工控計算機。本發明解決其技術問題所采用的技術方案是構造一種具有多路I2C總線的裝 置,其包括可編程邏輯器件,所述可編程邏輯器件包括多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳 連接到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與外部處理器連接,并與每個I2C總線控制器進行數據 傳輸的握手通信;其中,
每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總 線控制器配置有一個寄存器組,每個寄存器組包括數據寄存器,用于收發數據的緩沖;地址寄存器,用于保存當前地址;控制寄 存器,用于控制相應的I2C總線的數據傳輸;狀態寄存器,用于標示當前I2C總線的狀態。在本發明所述的具有多路I2C總線的裝置中,每個I2C總線控制器包括主控制單元,用于在I2C通信過程中,控制整個通信傳輸,并控制其所屬的I2C 總線控制器的主工作模式和從工作模式之間的狀態切換;時鐘生成單元,用于在其所屬的I2C總線控制器處于主工作模式時,為主控制 單元提供時鐘輸入,并為外部I2C從設備提供時鐘輸出;其中,當該I2C總線控制器處于從工作模式時,主控制單元接收外部I2C主設備提供的 時鐘。在本發明所述的具有多路I2C總線的裝置中,具有四個I2C總線控制器以形成四 路I2C總線。在本發明所述的具有多路I2C總線的裝置中,所述外部處理器是MPC8245處理 器,其通過地址線、數據線、片選信號線及讀寫信號線與所述可編程邏輯器件連接。根據本發明的另一個方面,提供一種具有多路I2C總線的處理器,其包括處理 器主體,其特征在于,還包括與所述處理器主體連接的可編程邏輯器件;所述可編程邏 輯器件包括 多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳 連接到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與處理器主體連接,并與每個I2C總線控制器進行數據 傳輸的握手通信;其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總 線控制器配置有一個寄存器組,每個寄存器組包括數據寄存器,用于收發數據的緩沖;地址寄存器,用于保存當前地址;控制寄存器,用于控制相應的I2C總線的數據傳輸;狀態寄存器,用于標示當前I2C總線的狀態。在本發明所述的具有多路I2C總線的處理器中,每個I2C總線控制器包括主控制單元,用于在I2C通信過程中,控制整個通信傳輸,并控制其所屬的I2C 總線控制器的主工作模式和從工作模式之間的狀態切換;時鐘生成單元,用于在其所屬的I2C總線控制器處于主工作模式時,為主控制 單元提供時鐘輸入,并為外部I2C從設備提供時鐘輸出;其中,當該I2C總線控制器處于從工作模式時,主控制單元接收外部I2C主設備提供的 時鐘。在本發明所述的具有多路I2C總線的處理器中,具有四個I2C總線控制器以形成 四路I2C總線。
在本發明所述的具有多路I2C總線的處理器中,所述處理器主體是MPC8245處 理器,其通過地址線、數據線、片選信號線及讀寫信號線與所述可編程邏輯器件連接。 根據本發明的另一個方面,提供一種具有多路I2C總線的系統主板,在所述系 統主板上設置有處理器,所述處理器包括處理器主體和與所述處理器主體連接的可編程 邏輯器件;所述可編程邏輯器件包括多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳 連接到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與處理器主體連接,并與每個I2C總線控制器進行數據 傳輸的握手通信;其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總 線控制器配置有一個寄存器組,每個寄存器組包括數據寄存器,用于收發數據的緩沖;地址寄存器,用于保存當前地址;控制寄存器,用于控制相應的I2C總線的數據傳輸;狀態寄存器,用于標示當前I2C總線的狀態。根據本發明的又一個方面,提供一種具有多路I2C總線的工控計算機,在所述 工控計算機的主機內設置有系統主板,在所述系統主板上設置有處理器,所述處理器包 括處理器主體和與所述處理器主體連接的可編程邏輯器件;所述可編程邏輯器件包括多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳 連接到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與處理器主體連接,并與每個I2C總線控制器進行數據 傳輸的握手通信;其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總 線控制器配置有一個寄存器組,每個寄存器組包括數據寄存器,用于收發數據的緩沖;地址寄存器,用于保存當前地址;控制寄存器,用于控制相應的I2C總線的數據傳輸;狀態寄存器,用于標示當前I2C總線的狀態。實施本發明的具有多路I2C總線的裝置、處理器、系統主板及工控計算機,具 有以下有益效果利用可編程邏輯器件,來完成對處理器主體I2C總線的擴展,使該處 理器能夠有多個I2C總線通道,每一路I2C總線上可以掛多個不同的設備,可以是主設 備,也可使從設備。來滿足一些特殊應用場合,尤其在監控系統中。在可編程邏輯器件 內,每個I2C總線控制器僅僅使用四個寄存器,從而大大降低了控制的復雜度,無需占 用較多的CPU資源,系統運行穩定,執行效率高。
下面將結合附圖及實施例對本發明作進一步說明,附圖中圖1是本發明具有多路I2C總線的處理器的系統框圖;圖2是圖1所示的I2C總線控制器的原理框圖3是本發明具有多路I2C總線的工控計算機的數據收發控制方法的流程圖;圖4是本發明具有多路I2C總線的工控計算機的通信時鐘控制方法的流程圖;圖5是圖4所示的步驟A4的流程圖。
具體實施例方式如圖1和 2所示,在本發明的具有多路I2C總線的處理器中,其主要包括處理器 主體,本發明的創新點在于,設置與處理器主體連接的可編程邏輯器件,對處理器主體 的I2C總線進行擴展,使該處理器主體能夠有多個I2C總線通道,每一路I2C總線上可 以掛多個不同的設備,可以是主設備,也可使從設備。處理器主體利用局部總線,通過 地址線、數據線、讀寫信號線和片選信號線與可編程邏輯器件進行通信,在可編程邏輯 器件內部經過執行控制軟件完成與處理器主體的通信功能,同時作處理,完成完整的I2C 協議,在可編程邏輯器件內部完成I2C總線控制器的功能,從而完成了從處理器主體的 局部總線到I2C協議的轉換,利用可編程邏輯器件來完成對處理器主體的I2C總線控制器 的擴展。每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C 總線控制器配置有一個寄存器組,每個寄存器組包括數據寄存器、地址寄存器、控制寄 存器和狀態寄存器。在具體設計中,可編程邏輯器件可以是FPGA、CPLD或別的可實現 可編程應用的邏輯器件,而處理器主體可選用MPC8245處理器。系統通過處理器主體的局部總線來完成對可編程邏輯器件內部寄存器的讀寫, 每一個I2C總線控制器在可編程邏輯器件內部通過軟件實現,每一路I2C總線上可以掛多 個I2C設備,可以是主設備,也可以是從設備。通過可編程邏輯器件內部的寄存器,來 完成可編程邏輯內的各個I2C總線控制器與處理器主體之間的通信和數據交換,進而實 現了處理器主體通過可編程邏輯器件與多個不同通道的I2C設備的通信,完成了處理器 主體多個獨立通道的I2C總線的擴展。由于處理器主體速度遠遠大于I2C總線的傳輸速度,由此處理器主體可以同時 與多路I2C總線上的設備通信,及實現多路I2C總線的并行處理,但同一時刻每路I2C總 線上只能有一個I2C設備與處理器主體通信。當處理器主體與一路I2C總線上的一個I2C設備通信時,通過對可編程邏輯器件 內部所設置的寄存器進行操作來實現,一共需要對4個8位的寄存器進行操作,每一個寄 存器有唯一的一個地址,該地址通過處理器主體的地址線譯碼得到。這4個八位的寄存 器分別為數據寄存器、地址寄存器、控制寄存器和狀態寄存器。通過可編程邏輯器件對處理器主體擴展N路I2C總線就需要在可編程邏輯器件內 部設置有4XN個8位寄存器,即N個8位數據寄存器、N個8位地址寄存器、N個8位 控制寄存器、N個8位狀態寄存器,對應外部的N路I2C總線。處理器主體的數據處理的速度遠遠大于I2C總線的傳輸速度,并且處理器主體 可以多線程多任務分時間片的處理數據,由此能夠同時與多路I2C總線上的設備通信, 但根據I2C總線傳輸協議,對于確定的一路I2C總線,處理器主體只能與其上的一個I2C 設備通信,該設備可以是主設備,也可以是從設備,在這里,處理器主體相當于該路I2C 總線上的一個設備;當處理器主體同時與多路I2C總線上的設備通信時,處理器主體相 當于同時分為多個設備,成為多路I2C總線上的各路I2C總線上的設備,一一與I2C總線上的其他設備通信。當處理器主體作為主設備,與一路I2C總線上的I2C設備通信時,處理器主體通 過軟件驅動程序對可編程邏輯器件內部實現的數據寄存器、地址寄存器、控制寄存器、 狀態寄存器進行操作,首先對這4個寄存器進行初始化,之后可編程邏輯器件內部實現 的I2C總線控制器根據數據寄存器、控制寄存器、狀態寄存器中的不同的值來與I2C總線 上的I2C設備進行通信,地址寄存器不用,它只在處理器主體作為從設備時才使用,是 處理器響應I2C主設備時的自身地址。數據寄存器用來存放發送或者接收的數據,控制 寄存器用來指示可編程邏輯器件內部實現的I2C總線控制器的數據傳輸,按照設置產生 各個協議命令、響應動作及工作模式。狀態寄存器用來指示可編程邏輯器件內部實現的 I2C總線控制器的狀態,與處理器主體進行握手通信。可編程邏輯器件的I2C總線控制器 控制的I2C總線上的I2C設備,實現與其的通信,從而間接的實現了處理器主體作為主設 備時與I2C總線上的I2C從設備的通信。當處理器主體作為從設備與另一路I2C總線上的設備通信時,處理器主體通過 軟件驅動程序對可編程邏輯器件內部的數據寄存器、地址寄存器、控制寄存器、狀態寄 存器進行操作,首先對這四個寄存器進行初始化,之后該路I2C總線的I2C總線控制器 根據數據寄存器、控制寄存器、狀態寄存器中的不同的值與該路I2C總線上的I2C設備進 行通信,將接收的包頭與自己地址寄存器中的地址作比較接收到的8位包頭數據,前7 位為I2C主設備要訪問的從設備的地址,第8位是讀寫標志,0為寫,1為讀;當發送的 地址與自己地址寄存器中存放的地址匹配時,響應主設備,發送應當信號,之后根據讀 寫標志位對I2C主設備進行發送或者接收數據,發送或者接收的數據緩存在數據寄存器 中,并對狀態寄存器進行相應的置位操作;根據讀寫 標志位來發送或者接收數據,當進 行讀操作時,每讀一個字節的數據,之后發送一個應答信號給主設備,之后進行下一個 字節的讀操作;當進行寫操作時,每寫一個字節的數據,等待主設備發送應答信號,收 到應答信號之后,進行下一個字節的寫操作。該處理器的工作流程為系統上電后,處理器主體通過可編程邏輯器件與可編 程邏輯器件相連接的I2C設備通信。如果處理器主體作為主設備與可編程邏輯器件所實 現的I2C總線上所掛的從設備進行通信時,則處理器主體通過對可編程邏輯器件內部的 該路I2C總線控制器相關的寄存器進行操作,根據I2C總線通信協議,來產生起始信號, 時鐘信號,并查詢狀態位,對該路I2C總線上的從設備進行發送或者接收數據的操作, 當數據交換完成后,產生停止信號,完成整個通信;如果處理器主體作為從設備與可編 程邏輯器件所實現的I2C總線上所掛的主設備進行通信時,則可編程邏輯器件所實現的 I2C總線上所掛的主設備產生起始信號,時鐘信號,處理器主體通過對可編程邏輯器件 內的該路I2C總線控制器相關的數據寄存器進行操作來發送或者接收數據,當通信完成 后,可編程邏輯器件所實現的I2C總線上所掛的主設備產生停止信號,完成整個通信。 通過可編程邏輯器件實現的多路I2C總線上每一路可以掛多個設備,可以是從設備,也 可以是主設備,具體能掛的設備數量受總線電容的限制。在一優選實施例中,該處理器主體為MPC8245處理,通過可編程邏輯器件實現 該MPC8245處理器具有四路I2C總線;可編程邏輯器件采用XILINX公司的SPARTAN3A 系列的芯片,開發平臺為ISE10.1。該可編程邏輯器件包括MPC8245處理器接口模塊和四個I2C總線控制器。 MPC8245處理器接口模塊主要完成MPC8245處理器與可編程邏輯器件的接口功 能并實現與可編程邏輯器件內部的四個I2C總線控制器數據傳輸的握手通信。在可編程 邏輯器件內實現四個I2C總線控制器,每個I2C總線控制器相對應的有四個8位的寄存 器,即數據寄存器、地址寄存器、控制寄存器和狀態寄存器。數據寄存器實際上是兩個寄存器,共享一個地址,根據讀/寫信號來區分,一 個是發送數據緩沖寄存器,另一個是接收數據緩沖寄存器。數據長度為8位。地址寄存 器用來保存當前地址。當該I2C總線控制器作為從節點通信時,地址寄存器中保存的是 其自身的地址,這個地址在總線上是唯一的,從節點接收到報頭后,將其中的地址與自 己的地址比較,如果一致,則響應主節點,開始傳輸。地址是7位,I2C寄存器中,只 有前7位是有效的,最后1位無效。控制寄存器用來控制I2C總線的數據傳輸,按照設 置產生各個協議命令、響應動作及工作模式。狀態寄存器顯示當前總線的狀態。通過狀 態寄存器中的不同的狀態指示,來實現與MPC8245處理器的握手。MPC8245處理器利用地址線、數據線、片選信號線和讀寫信號線來與可編程邏 輯器件內部的4個I2C總線控制器相關的16個寄存器交換數據、讀取狀態、作為從設備 時響應地址和控制各個I2C總線控制器。MPC8245處理器通過查詢每個I2C總線控制器中相對應的狀態寄存器中的MCF 位,來判斷該I2C總線控制器中一個字節數據傳輸是否完成。當傳輸完成時,MCF被置 位1,系統把該位清0來開始新一個字節數據的傳輸。MPC8245處理器利用地址線譯碼,來讀取或者寫入數據到相關的寄存器,每個 寄存器有唯一的一個地址。MPC8245處理器的低5位的地址線與可編程邏輯器件相連 接,通過譯碼,最多可以有32個地址空間,能夠滿足16個寄存器所需要的16個地址空 間的需求。當MPC8245處理器要對可編程邏輯器件中寄存器的數據進行讀操作時,通過 地址線選通地址,讀信號有效為低電平,寫信號無效為高電平,同時片選信號有效為低 電平,則系統從可編程邏輯器件內部該地址的寄存器中讀取數據;當MPC8245處理器要 對可編程邏輯器件中寄存器的數據進行寫操作時,通過地址線選通地址,寫信號有效為 低電平,讀信號無效為高電平,同時片選信號有效為低電平,則系統把數據寫入到可編 程邏輯器件內部該地址的寄存器中。該可編程邏輯器件主要實現并行的4個I2C總線控制器,每個I2C總線控制器通 過可編程邏輯器件的I/O管腳連接到外部實現各自獨立的I2C總線,每一路獨立的I2C總 線上可以有多個I2C設備,可以是主設備,也可以是從設備,各路I2C總線相互獨立的工 作,相互之間沒有干擾和影響。I2C總線控制器主要通過主控制單元和時鐘生成單元,實現其功能。4個I2C 總線控制器實現的原理相同,主控制單元主要完成在I2C通信過程中各個狀態之間的轉 換,是整個I2C總線控制器的核心。時鐘生成單元僅僅只在I2C總線控制器作為主設備時 的模式下工作,作用是為主控制單元提供時鐘輸入,并為外部的從設備提供時鐘輸出, 是I2C總線通信時的時鐘。當I2C總線控制器作為從設備通信時,主控制單元的時鐘由 可編程邏輯器件所實現的I2C總線上所掛的I2C主設備提供,整個I2C總線通信時的時鐘 為外部的主設備提供的SCL時鐘。
主控制單元的狀態機控制為任一個I2C總線控制器不管作為主設備還是作為從 設備,主控制單元的狀態機控制都是相同的。在每個狀態,模式都會被檢測,以決定輸 出和下一個狀態。如果仲裁失敗或者該I2C總線控制器被確定為從設備,該主控制單元 會自動由主工作模式切換到從工作模式。當檢測到START信號時,主控制單元機進入 HEADER狀態。在HEADER狀態,如果該I2C總線控制器是主設備,則數據寄存器中 的HEADER被發送,之后轉移到ACK_HEADER狀態。整個狀態機控制描述如下IDLE 狀態(空閑狀態)當I2C總線控制器上電或者復位后,主控制單元就處 于此狀態。等到檢查到開始信號detect_start等于1時,轉移到HEADER狀態;HEADER狀態(發送包頭狀態,即發送第一幀數據)在此狀態,系統根據控制 寄存器位MSTA值,發送或者接收報頭,對SCL開始計數,滿足條件后,轉移到ACK_ HEADER狀態;I2C總線控制器中的HEADER移位寄存器與地址寄存器中存放的I2C總 線控制器作為從設備時響應的地址進行比較,如果匹配,則表明該I2C總線控制器為被 主設備尋址的從設備,模式立刻切換到從設備模式,同時狀態寄存器中的MAAS位被置 位,數據線SDA將會按照TXAK中的設置應答當前主設備;ACK_HEADER狀態(對包頭幀數據的應答)當該I2C總線控制器作為主設備 時,如果沒有收到從設備發送的ACK,則發送結束信號,返回到IDLE狀態;如果收到 ACK,確定仲裁沒有丟失,根據控制寄存器位TX值轉到XMIT_DATA或者RCV_DATA 狀態;當該I2C總線控制器作為從設備時,如果地址匹配,則發送ACK,根據主設備發 送的第一個字節中的最后一位的值轉到XMIT_DATA或者RCV_DATA狀態;XMIT_DATA狀態(發送數據)在此狀態時,移位寄存器將數據移到SDA線 上。發送一個字節完成后,轉移到WAIT_ACK狀態;WAIT_ACK狀態(發送數據時,等待接收設備發送應答信號)在此狀態時,如 果收到ACK,則返回到XMIT_DATA狀態;如果仲裁丟失,則轉到IDLE狀態;如果沒 有收到ACK,則發送結束信號,轉移到IDLE狀態;RCV_DATA狀態(接收數據)在此狀態時,如果檢測到重新啟動信號,則返 回HEADER狀態;否則,移位寄存器從SDA線上移入數據,以供MPC8245處理器讀 取,移入一個字節后,轉到ACK_DATA狀態,控制寄存器中的TXAK位被輸出到數據線 SDA ;ACK_DATA狀態(接收數據時,接收完一幀數據對發送設備發送應答信號) IIC控制器發送ACK,返回到RCV_DATA狀態。時鐘生成單元的狀態機控制為其只在I2C總線控制器作為主設備時的模式下工 作,作用是為主控制狀態機提供時鐘輸入,并為外部的從設備提供時鐘輸出,是I2C總 線通信時的時鐘。整個狀態機控制如圖4所示共有7 個狀態SCL_IDLE、START、SCL_LOW_EDGE、SCL_LOW、SCL_ HIGH_EDGE、SCL_HIGH、STOP_WAIT。具體為SCL_IDLE狀態(空閑狀態)當上電復位后,狀態機就處于該狀態。當I2C總 線控制器為主節點并且總線空閑時,收到開始標志后,轉移到START狀態(開始狀態, 當檢測到開始信號時);
START狀態當在此狀態時,根據I2C協議,需要保持一定的時間,當持續時 間滿足要求時,轉移到SCL_LOW_EDGE狀態(低電平時鐘沿狀態),否則保持在START 狀態;SCL_LOW_EDGE狀態當在此狀態時,在下一個系統時鐘時,轉移到SCL_ LOW狀態;SCL_LOW狀態(時鐘低電平狀態)在此狀態時, 根據控制信號,設置SDA的 輸出;當在此狀態時,根據I2C協議,需要保持一定的時間,當持續時間滿足要求時, 轉移到SCL_HIGH_EDGE狀態,否則保持在該狀態;如果仲裁丟失且已經傳輸7個字節 時,轉移到SCL_IDLE狀態;SCL_HIGH_EDGE狀態(高電平時鐘沿狀態)在此狀態時,完成一定的操作, 持續一個時鐘周期后,轉移到SCL_HIGH狀態;如果SCL輸入為0或者狀態寄存器中的 位MCF = 1,則一直停留在該狀態;SCL_HIGH狀態(時鐘高電平狀態)在此狀態時,如果有重復起始信號,SCL 高電平持續一半時間,轉移到START狀態;如果有結束信號,SCL高電平持續一半時 間,轉移到STOP_WAIT狀態;根據I2C協議,需要保持一定的時間,當持續時間滿足要 求時,轉移到SCL_LOW_EDGE狀態,否則保持在當前狀態;STOP_WAIT狀態(結束等待狀態。產生結束信號時,需要有一定的時間在該狀 態)在此狀態時,根據I2C協議,需要保持一定的時間,當持續時間滿足要求時,轉移 至Ij SCLJDLE 狀態。數據的輸入/輸出依靠雙向移位寄存器實現。在程序中設置兩個專門的模塊來 實現雙向移位寄存器的功能,其中一個專門發送/接收報(HEADER),另一個負責發送/ 接收數據。前者只在HEADER狀態下移位,后者在XMIT_DATA和RCV_DATA狀態下移位。當同時有多個主設備在可編程邏輯器件所實現的同一路I2C總線上時,也包括 MPC8245處理器可能作為主設備,通過總線仲裁來確定是哪一個主設備占用總線。每一 路I2C總線的仲裁在可編程邏輯器件內部實現。當仲裁失敗時,該路I2C總線控制器所 對應的狀態寄存器中的MAL位被置為1。每個I2C控制器相關的狀態寄存器中的不同的位在該模塊中在滿足不同條件時 置不同的值。當一個字節傳輸完成時,對MCF置位為1,否則為0。當I2C總線上的地 址與該I2C總線控制器相關的地址寄存器中的值相同時,該I2C總線控制器會被作為從設 備并切換到從設備模式,此時狀態寄存器中的MAAS位被置為1。如圖3所示的具有多路I2C總線的工控計算機的數據收發控制方法流程圖中,其 用于對其中的I2C總線控制器的數據收發進行控制,具體包括以下步驟Si、系統上電,進入初始化狀態;S2、讀取控制寄存器中的狀態位,判斷所述I2C總線控制器是否為主工作模 式,如果是,進入步驟S3;否則,進入步驟S6;在一優選實施例中,通過讀取控制寄存 器中的MSTA位來判斷,當為1時,表示該I2C總線控制器是主設備,當為0時,表示該 I2C總線控制器為從設備;S3、向外部I2C設備發送包頭數據,并等待外部I2C設備發送的響應信號;
S4、判斷是否收到響應信號及未存在仲裁丟失,如果是,進入步驟S5,否則, 進入步驟Si;在一優選實施例中,發送包頭數據并等待外部I2C設備響應發送包頭數 據為8位,前7位為要訪問的外部I2C設備的地址,第8位是讀寫標志,0為寫,1為讀; 當8位包頭數據發送結束時,等待外部I2C設備發送響應信號,當沒有響應信號或者判斷 到仲裁丟失時,返回到剛上電時的狀態,即進入步驟Si;當收到響應信號并且仲裁沒有 丟失時,進行讀寫操作,即進入下一步驟;對于仲裁丟失的判斷,當發生以下情況時, 將仲裁標志位置位1、主節點向SDA線發出高電平,而采樣SDA線得到低電平;2、總 線忙時,監測到開始信號;3、在從節點模式下收到重啟動信號;4、主節點意外檢測到 結束信號。S5、對外部I2C設備進行讀寫數據操作;進入步驟S9;在一優選實施例中, 根據讀寫標志位來對外部I2C從設備進行讀寫操作,當進行讀操作時,每讀一個字節的 數據,之后發送一個應答信號給從設備,之后進行下一個字節的讀操作;當進行寫操作 時,每寫一個字節的數據,等待從設備發送應答信號,收到應答信號之后,進行下一個 字節的寫操作;當讀寫完成時,發送結束信號,結束傳輸,其中讀寫操作中每一位是通 過通信時鐘來計數的。S6、此時I2C總線控制器為從工作模式,其接收外部I2C設備發送的包頭數 據;S7、判斷包頭數據中的地址與地址寄存器中的地址是否匹配,如果是,進入步 驟S8,否則,進入步驟S9;S8、向外部I2C設備發送應答信號,以響應其為主設備,進行數據收發;在一優選實施例中,I2C總線控制器接收包頭數據并與自己地址寄存器中的地址 作比較接收 到的8位包頭數據,前7位為作為主設備的外部I2C設備要訪問的從設備的 地址,第8位是讀寫標志,0為寫,1為讀;當發送的地址與自己地址寄存器中存放的地 址匹配時,響應主設備,發送應答信號,之后根據讀寫標志位對主設備進行發送或者接 收數據;對于讀寫操作,根據讀寫標志位來發送或者接收數據,當進行讀操作時,每讀 一個字節的數據,之后發送一個應答信號給主設備,之后進行下一個字節的讀操作;當 進行寫操作時,每寫一個字節的數據,等待主設備發送應答信號,收到應答信號之后, 進行下一個字節的寫操作。S9、結束。如圖4和5所示的具有多路I2C總線的工控計算機的通信時鐘控制方法流程圖 中,其用于對其中的I2C總線控制器的通信時鐘進行控制,具體包括以下步驟Al、系統上電,進入初始化狀態;A2、讀取控制寄存器中的狀態位,判斷所述I2C總線控制器是否為主工作模 式,如果是,當收到開始信號后,進入步驟A3;否則,進入步驟A8;A3、根據傳輸速度,產生一定時間的時鐘低電平;如圖5所示,該步驟可分為 三個子步驟A31、保持一定時間的高電平狀態;在一優選實施例中,當收到開始信號時, 開始產生通信時鐘,再保持4us的高電平時間;A32、產生時鐘低電平,并保持一定時間的下降沿;在一優選實施例中,開始產生時鐘低電平后,首先保持300ns的下降沿;A33、之后根據傳輸速度,產生一定時間的時鐘低電平。A4、判斷是否存在仲裁丟失以及已經傳輸一預設時鐘周期,如果是,進入步驟 Al,否則,進入步驟A5;在一優選實施例中,如果判斷到仲裁丟失,并且已經傳輸了大 于7個時鐘周期的時間,則返回到上電時的狀態,即進入步驟Al;A5、根據傳輸速度,產生一定時間的時鐘高電平;在一優選實施例中,首先保 持300ns的上升沿,之后根據傳輸速度的需要,保持一定時間的高電平狀態;A6、判斷是否傳輸完成,如果是,進入步驟A7,否則,進入步驟A3;A7、保持時鐘高電平狀態,當收到結束標志信號時,進入步驟A8;讀取狀態寄 存器中一個字節傳輸完成標志位MCF,如果其等于1,則一直停留在時鐘高電平狀態, 否則,進入時鐘結束準備狀態,即進入步驟A8;A8、時鐘結束。 本發明是通過幾個具體實施例進行說明的,本領域技術人員應當明白,在不脫 離本發明范圍的情況下,還可以對本發明進行各種變換及等同替代。另外,針對特定情 形或具體情況,可以對本發明做各種修改,而不脫離本發明的范圍。因此,本發明不局 限于所公開的具體實施例,而應當包括落入本發明權利要求范圍內的全部實施方式。
權利要求
1.一種具有多路I2C總線的裝置,其特征在于,包括可編程邏輯器件,所述可編程邏 輯器件包括多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳連接 到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與外部處理器連接,并與每個I2C總線控制器進行數據傳輸 的握手通信;其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總線控 制器配置有一個寄存器組,每個寄存器組包括 數據寄存器,用于收發數據的緩沖; 地址寄存器,用于保存當前地址; 控制寄存器,用于控制相應的I2C總線的數據傳輸; 狀態寄存器,用于標示當前I2C總線的狀態。
2.根據權利要求1所述的具有多路I2C總線的裝置,其特征在于,每個I2C總線控制 器包括主控制單元,用于在I2C通信過程中,控制其所屬的I2C總線控制器的主工作模式和 從工作模式之間的狀態切換;時鐘生成單元,用于在其所屬的I2C總線控制器處于主工作模式時,為主控制單元 提供時鐘輸入,并為外部I2C從設備提供時鐘輸出;其中,當該I2C總線控制器處于從工作模式時,主控制單元接收外部I2C主設備提供的時鐘。
3.根據權利要求1所述的具有多路I2C總線的裝置,其特征在于,具有四個I2C總線 控制器以形成四路I2C總線。
4.根據權利要求1所述的具有多路I2C總線的裝置,其特征在于,所述外部處理器是 MPC8245處理器,其通過地址線、數據線、片選信號線及讀寫信號線與所述可編程邏輯 器件連接。
5.—種具有多路I2C總線的處理器,包括處理器主體,其特征在于,還包括與所述處 理器主體連接的可編程邏輯器件;所述可編程邏輯器件包括多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳連接 到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與處理器主體連接,并與每個I2C總線控制器進行數據傳輸 的握手通信;其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總線控 制器配置有一個寄存器組,每個寄存器組包括 數據寄存器,用于收發數據的緩沖; 地址寄存器,用于保存當前地址; 控制寄存器,用于控制相應的I2C總線的數據傳輸; 狀態寄存器,用于標示當前I2C總線的狀態。
6.—種具有多路I2C總線的系統主板,在所述系統主板上設置有處理器,所述處理器 包括處理器主體,其特征在于,還包括與所述處理器主體連接的可編程邏輯器件;所述可編程邏輯器件包括多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳連接 到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與處理器主體連接,并與每個I2C總線控制器進行數據傳輸 的握手通信;其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總線控 制器配置有一個寄存器組,每個寄存器組包括 數據寄存器,用于收發數據的緩沖; 地址寄存器,用于保存當前地址; 控制寄存器,用于控制相應的I2C總線的數據傳輸; 狀態寄存器,用于標示當前I2C總線的狀態。
7. 一種具有多路I2C總線的工控計算機,在所述工控計算機的主機內設置有系統主 板,在所述系統主板上設置有處理器,所述處理器包括處理器主體,其特征在于,還包 括與所述處理器主體連接的可編程邏輯器件;所述可編程邏輯器件包括多個I2C總線控制器,每個I2C總線控制器通過所述可編程邏輯器件的I/O管腳連接 到外部以形成一路I2C總線,從而用于掛接多個外部I2C設備;處理器接口模塊,用于與處理器主體連接,并與每個I2C總線控制器進行數據傳輸 的握手通信;其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總線控 制器配置有一個寄存器組,每個寄存器組包括 數據寄存器,用于收發數據的緩沖; 地址寄存器,用于保存當前地址; 控制寄存器,用于控制相應的I2C總線的數據傳輸; 狀態寄存器,用于標示當前I2C總線的狀態。
全文摘要
本發明涉及一種具有多路I2C總線的裝置、處理器、系統主板及工控計算機,該具有多路I2C總線的裝置包括可編程邏輯器件,可編程邏輯器件包括多個I2C總線控制器和處理器接口模塊其中,每個I2C總線控制器具有主工作模式和從工作模式兩種工作狀態,且每個I2C總線控制器配置有一個寄存器組。利用可編程邏輯器件,來完成對處理器主體I2C總線的擴展,使該處理器能夠有多個I2C總線通道,每一路I2C總線上可以掛多個不同的設備,可以是主設備,也可使從設備。來滿足一些特殊應用場合,尤其在監控系統中。在可編程邏輯器件內,每個I2C總線控制器僅僅使用四個寄存器,從而大大降低了控制的復雜度,系統運行穩定,執行效率高。
文檔編號G06F13/40GK102023954SQ20091019046
公開日2011年4月20日 申請日期2009年9月17日 優先權日2009年9月17日
發明者王從毫, 王玉章 申請人:研祥智能科技股份有限公司