一種spi接口轉換i2c總線接口的方法及轉換器的制造方法
【技術領域】
[0001]本發明涉及總線通信技術領域,特別是涉及一種SPI接口轉換I2C總線接口的方法。
【背景技術】
[0002]I2C(集成電路總線,Inter — Integrated Circuit)總線是一種兩線式串行總線,用于連接微控制器及其外圍設備。由于其簡單、靈活、硬件管腳資源少等優點,在器件與器件之間的通信中有著廣泛的應用。在標準的I2C總線協議中,物理鏈路分別是一條串行數據線(SDA)和一條串行時鐘線(SCL)。
[0003]總線中的器件被分為主機和從機。主機是初始化總線的數據傳輸并產生允許傳輸的時鐘信號的器件。此時,任何被尋址的器件都被認為是從機。每個從機一般均有一個唯一的地址,主機可以通過該地址,配置和管理相應的從機。
[0004]但在實際應用中,有可能會出現多個從機地址相同的情況。例如,現有用于以太網交換機的光模塊,其I2C地址都是已經固定的Α0Η。此時如果采用傳統的方法,主機是無法對具有相同地址的從機進行管理、配置和通信。這時就需要多組I2C總線對光模塊進行操作。
[0005]—般I2C從機芯片都有三個地址線,I2C總線上掛接的I2C從機芯片不能超過8個,比如常用的溫度傳感器芯片LM75。隨著目前以太網交換機的體積越來越大,需要檢測的溫度點可能會超過8個,這時就需要兩個以上的I2C總線,而有的CPU上只有一組I2C總線接口甚至沒有I2C接口,這就導致主機無法同時連接多個電子設備進行檢測。即使CPU上有SPI (串行外設接口,Serial Peripheral Interface)接口,也無濟于事。
【發明內容】
[0006]本發明就是針對上述問題,提供一種SPI接口轉換I2C總線接口的方法。為了實現上述目的,本發明采用如下技術方案:
[0007]步驟S10根據SPI接口的時鐘頻率,接收SPI接口發送的數據;步驟S20將接收到的數據存入數據緩存區內;步驟S30判斷接收的數據是否完整;若是,則執行步驟S50 ;若否,則執行步驟S40 ;步驟S40判斷數據緩存區是否已滿;若是,則執行步驟S50 ;若否,則執行步驟S10 ;步驟S50接收SPI接口發送的指示選擇相應的I2C總線通道啟動;步驟S60根據I2C接口的時鐘頻率,將數據緩存區內的數據發送出去。
[0008]本發明還提供另一種SPI接口轉換I2C總線接口的方法,包括:步驟S10根據SPI接口的時鐘頻率,接收SPI接口發送的數據;步驟S20將接收到的數據存入數據緩存區內;步驟S30判斷接收的數據是否完整;若是,則執行步驟S50 ;若否,則執行步驟S40 ;步驟S40判斷數據緩存區是否已滿;若是,則執行步驟S50 ;若否,則執行步驟S10 ;步驟S50接收SPI接口發送的指示選擇相應的I2C總線通道啟動;步驟S60根據I2C接口的時鐘頻率,將數據緩存區內的數據發送出去;步驟S70將數據緩存區清零,執行步驟S10。
[0009]優選地,本發明還包括步驟S01設定數據緩存區的大小。
[0010]優選地,本發明還包括步驟S02將SPI接口設為從設備模式;步驟S03將I2C總線接口設為主設備模式。
[0011]優選地,本發明還包括步驟S04設置I2C總線接口的時鐘頻率。
[0012]本發明還提供一種SPI接口與I2C總線接口的轉換器,其中所述轉換器包括:SPI接口,與所述發送設備的SPI接口相連;數據緩存模塊,與所述轉換器上的SPI接口相連,接收SPI接口收到的數據并進行緩存;判斷模塊,與所述數據緩存模塊相連,判斷所述數據緩存模塊接收的數據是否完整,以及所述數據緩存模塊是否已滿;I2C通道選擇模塊,與所述轉換器上的SPI接口相連,根據SPI接口收到的指示選擇相應的I2C總線通道啟動;I2C接口,與所述數據緩存模塊、I2C通道選擇模塊相連,并與所述接收設備的I2C接口相連,根據I2C通道選擇模塊的選擇,按照I2C接口的時鐘頻率,將數據緩存區內的數據發送出去。
[0013]優選地,所述轉換器還包括循環控制模塊,與所述數據緩存模塊相連,控制數據緩存區在數據發送完畢后清零,并使SPI接口繼續接收數據。
[0014]優選地,所述轉換器為復雜可編程邏輯器件(CPLD,Complex Programmable LogicDevice);所述數據緩存模塊是復雜可編程邏輯器件內部開辟出的數據緩存區。
[0015]本發明還提供一種SPI接口與I2C總線接口的轉換裝置,包括:轉換器以及與所述轉換器相連的時鐘信號發生器,為所述轉換器的I2C總線接口的串行時鐘線提供時鐘信號。
[0016]優選地,所述轉換裝置還包括具有至少一個SPI接口的發送設備,與所述轉換器的SPI接口相連;至少一個具有I2C接口的接收設備,與所述轉換器的I2C接口相連。
[0017]與現有技術相比,本發明利用SPI接口通過轉換器擴展出I2C總線接口,在主設備I2C總線接口沒有或不夠的情況下,滿足了電子設備對I2C總線數量越來越大的需求,且I2C接口數量可以根據實際情況及轉換器的接口數量決定,具有較大的靈活性。
【附圖說明】
[0018]下面將以明確易懂的方式,結合【附圖說明】優選實施方式,對一種SPI接口轉換I2C總線接口的方法及轉換器的上述特性、技術特征、優點及其實現方式予以進一步說明。
[0019]圖1是本發明一種SPI接口轉換I2C總線接口的方法的主要流程圖;
[0020]圖2是本發明一種SPI接口轉換I2C總線接口的方法的完整流程圖;
[0021]圖3是本發明一種SPI接口與I2C總線接口轉換器的完整組成結構示意圖;
[0022]圖4是本發明一種SPI接口與I2C總線接口的轉換裝置的電路圖。
[0023]附圖標號說明:
[0024]1.SPI接口,2.數據緩存模塊,3.判斷模塊,4.12C通道選擇模塊,5.12C接口,
6.循環控制模塊。
【具體實施方式】
[0025]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對照【附圖說明】本發明的【具體實施方式】。顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖,并獲得其他的實施方式。
[0026]圖1是本發明一種SPI接口轉換I2C總線接口的方法的主要流程圖。如圖1所示,一種SPI接口轉換I2C總線接口的方法,包括:步驟S00開始;步驟S10根據SPI接口的時鐘頻率,接收SPI接口發送的數據;步驟S20將接收到的數據存入數據緩存區內;步驟S30判斷接收的數據是否完整;若是,則執行步驟S50 ;若否,則執行步驟S40 ;步驟S40判斷數據緩存區是否已滿;若是,則執行步驟S50 ;若否,則執行步驟S10 ;步驟S50接收SPI接口發送的指示選擇相應的I2C總線通道啟動;步驟S60根據I2C接口的時鐘頻率,將數據緩存區內的數據發送出去。
[0027]優選地,所述步驟S60之后還包括:步驟S70將數據緩存區清零,執行步驟S10。
[0028]具體的,本實施例中從SPI接口接收到的數據先要存入數據緩存區內,如果要接收的數據量大于數據緩存區容量,則需要通過數據緩存區多次緩存,分多次將要發送的數據通過I2C總線通道發送出去。
[0029]圖2為本發明一種SPI接口轉換I2C總線接口的方法的完整流程圖。在本發明另一個改進的實施例中,除與上述實施例相同的部分之外,還包括,如圖2所示,步驟S01設定數據緩存區的大小。
[0030]在本發明另一個改進的實施例中,除與上述實施例相同的部分之外,還包括,如圖2所示,步驟S02將SPI接口設為從設備模式;步驟S03將I2C總線接口設為主設備模式。
[0031]在