單片機的I2C總線(xiàn)擴展和I2C虛擬技術(shù)
在單片機應用系統中,要處理的數據不僅很多,而且很重要時(shí),通常的做法是用并行口擴展單片機外部數據存儲器芯片。近年來(lái),隨著(zhù)半導體技術(shù)的不斷發(fā)展,陸續出現了一些新的數據要求非常嚴格的芯片,比較典型的有基于I2C總線(xiàn)接口的24系列,基于SPI總線(xiàn)的25系列,以及并行總線(xiàn)接口的28系列,29系列,這些芯片的特點(diǎn)是芯片掉電后數據不會(huì )丟失,數據可以保存幾年、甚至幾十年,這些芯片采用I2C、SPI或Microwire串行總線(xiàn)協(xié)議,與單片機接口通常僅占用2~4個(gè)I/O口,可以最大限度地節省單片機的資源,并且數據可以反復擦寫(xiě)。
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同名端相連。
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,尋址字節格式如下:
DA3~DA0為器件地址,由器件出廠(chǎng)時(shí)給定的固定地址編碼;A2~A0為器件在電路中接電源或地的不同,形成的地址數據;R/W——數據傳輸方向,規定總線(xiàn)上主節點(diǎn)對從節點(diǎn)的數據傳輸方向,R——接收,W——發(fā)送。表1為常用外圍器件的節點(diǎn)地址。
2 單主系統的I2C總線(xiàn)的虛擬技術(shù)
在單主系統中,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ò)程中數據的傳送方向不變,操作格式如下:
其中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è)字節數據。數據操作格式如下:
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虛擬技術(shù),標記符的偽定義為:
評論