新聞中心

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

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

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

1 的基本概念及一般特征

本文引用地址:http://butianyuan.cn/article/172101.htm

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

31.jpg

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

32.jpg

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

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

33.jpg

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

34.jpg

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

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

2.1 單主方式下的數(shù)據(jù)操作格式

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

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

35.jpg

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

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

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

36.jpg

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

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

這些標(biāo)記符有:

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

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

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

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

37.jpg



評(píng)論


相關(guān)推薦

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

關(guān)閉