<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機的I2C總線(xiàn)擴展和I2C虛擬技術(shù)

單片機的I2C總線(xiàn)擴展和I2C虛擬技術(shù)

作者: 時(shí)間:2012-02-15 來(lái)源:網(wǎng)絡(luò ) 收藏

1 的基本概念及一般特征

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

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

31.jpg

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

32.jpg

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

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

33.jpg

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

34.jpg

2 單主系統的I2C總線(xiàn)的

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

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

2.1.1 主發(fā)送的數據操作格式

主節點(diǎn)向由尋址字節指令的外圍器件節點(diǎn)發(fā)送N個(gè)字節數據,整個(gè)數據傳送過(guò)程中數據的傳送方向不變,操作格式如下:

35.jpg

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

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

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

36.jpg

2.1.2 主方式下的虛擬I2C總線(xiàn)軟件包

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

這些標記符有:

VSDA~虛擬I2C總線(xiàn)數據線(xiàn);VSCL~虛擬I2C總線(xiàn)時(shí)鐘線(xiàn);SLA~尋址字節存放單元;SLAW~尋址字節寫(xiě);SLAW~尋址字節讀;NUMBYT~傳送字節數據存放單元;MTD~發(fā)送數據緩沖區;MRD~接收數據緩沖區。

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

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

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

37.jpg



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>