• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機的I2C總線擴展和I2C虛擬技術

    單片機的I2C總線擴展和I2C虛擬技術

    作者: 時間:2012-02-15 來源:網絡 收藏

    1 的基本概念及一般特征

    本文引用地址:http://www.czjhyjcfj.com/article/172101.htm

    應用系統中,要處理的數據不僅很多,而且很重要時,通常的做法是用并行口外部數據存儲器芯片。近年來,隨著半導體技術的不斷發展,陸續出現了一些新的數據要求非常嚴格的芯片,比較典型的有基于接口的24系列,基于SPI的25系列,以及并行總線接口的28系列,29系列,這些芯片的特點是芯片掉電后數據不會丟失,數據可以保存幾年、甚至幾十年,這些芯片采用、SPI或Microwire串行總線協議,與接口通常僅占用2~4個I/O口,可以最大限度地節省單片機的資源,并且數據可以反復擦寫。

    31.jpg

    I2C總線采用二線傳輸,即SDA串行數據線和SCL串行時鐘,在總線上的外圍器件及外圍設備接口通過總線尋址,圖2為I2C總線構成的輸入/輸出、顯示、ADC/DAC以及鍵盤、顯示電路。在SDA和SCL上掛接單片機CUP和外圍器件(如I/O、ADC、DAC、存儲器)和外設接口(如鍵盤、顯示器、打印機等),所有掛接在I2C總線上的器件和接口電路都應具有I2C總線接口,將所有的SDA/SCL同名端相連。

    32.jpg

    I2C總線為同步串行數據傳輸總線,其總線傳輸速率為100 KB/s,改進后為400 KB/s,總線驅動能力為400 PF,通過驅動可達4 000 PF,在圖1中只表示I2C總線上外圍擴展的節點,其總線的節點的尋址方法為,確定總線上的主節點(主控器件),在任何時刻總線上只有一個主節點(一個主控器件),實現總線的控制操作,由主控器對總線上的其他節點尋址,分時實現點對點的數據傳輸。因此總線上每個節點都有一個固定的節點地址。I2C總線每次傳送數據,都是由主器件發送起始信號開始,送停止信號結束,當SCL時鐘線為高電平時,SDA出現由高到低的下降沿,即總線的起始信號,相反,當SDA出現上升沿時為結束信號,在起始信號和停止信號之間是尋址信息和數據信息,圖2為I2C的操作時序。

    I2C總線上的單片機都可作為主節點,其器件地址由軟件給出。存放在I2C總線的地址寄存器,稱為主器件的從地址。器件地址由7位組成和一個方向位構成尋址字節SLA,尋址字節格式如下:

    33.jpg

    DA3~DA0為器件地址,由器件出廠時給定的固定地址編碼;A2~A0為器件在電路中接電源或地的不同,形成的地址數據;R/W——數據傳輸方向,規定總線上主節點對從節點的數據傳輸方向,R——接收,W——發送。表1為常用外圍器件的節點地址。

    34.jpg

    2 單主系統的I2C總線的

    在單主系統中,I2C總線上只有一個單片機,由于總線上只有一個單片機成為主節點,在這種情況下,對于沒有I2C總線的單片機,可以用兩根I/O線來虛擬I2C總線接口,在采用虛擬串行擴展接口時,可根據系統的資源情況選用具體的I/O口線,可以設計出各種類型接口的虛擬軟件包,只要安裝軟件包和定義相應的I/O端口,使用極其靈活方便,這種方式稱為單主方式I2C總線虛擬(簡稱主方式)。

    2.1 單主方式下的數據操作格式

    2.1.1 主發送的數據操作格式

    主節點向由尋址字節指令的外圍器件節點發送N個字節數據,整個數據傳送過程中數據的傳送方向不變,操作格式如下:

    35.jpg

    其中S.SLAW、data1~N、P~為主節點發送,從節點接收;A~主節點接收,從節點發送;SLAW~尋址字節(寫);data1~dataN:寫入從節點的N個數據。

    (2) 主接收的數據操作格式

    主節點要求被尋址的從節點(外圍器件)發送N個字節數據。數據操作格式如下:

    36.jpg

    2.1.2 主方式下的虛擬I2C總線軟件包

    在使用虛擬I2C總線時,有一個通用的主方式I2C軟件包,并在此基礎上給出歸一化操作命令。即在使用I2C虛擬總線時,只要在程序存儲器的任一空間,裝入通用軟件包作為I2C總線應用程序設計的軟件支持。在應用中只須將軟件包中標記賦值即可。

    這些標記符有:

    VSDA~虛擬I2C總線數據線;VSCL~虛擬I2C總線時鐘線;SLA~尋址字節存放單元;SLAW~尋址字節寫;SLAW~尋址字節讀;NUMBYT~傳送字節數據存放單元;MTD~發送數據緩沖區;MRD~接收數據緩沖區。

    在程序中嵌入了通用I2C軟件包并進行標號賦值后,歸一化的操作命令有三條:

    MOV SLA,#SLAW/#SLAR;指向那個節點,并認定發送(SLAW)還是接收(SLAR);MOV NUMBYT,#N;傳送幾個字節;LCALL WRNBYT/RDNBYT;調用接收或發送子程序。

    以圖1為例,假定在嵌入了通用I2C軟件包的情況下,使用主方式的I2C,標記符的偽定義為:

    37.jpg



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 图们市| 固原市| 织金县| 南川市| 夹江县| 潮州市| 措勤县| 穆棱市| 大英县| 乌鲁木齐县| 五家渠市| 雷山县| 泰兴市| 若羌县| 县级市| 天峻县| 桐柏县| 旌德县| 巴马| 曲周县| 巴青县| 壶关县| 郯城县| 共和县| 唐山市| 诏安县| 盐源县| 佛教| 岳池县| 阿克陶县| 定西市| 壶关县| 两当县| 澄城县| 东乌珠穆沁旗| 汕头市| 寻乌县| 台南县| 大同市| 黄冈市| 平果县|