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