一、SPI總線基本概念
SPI ( Serial Peripheral Interface ———串行外設(shè)接口) 總線是Motorola 公司推出的一種同步串行接口技術(shù)。SPI 總線系統(tǒng)是一種同步串行外設(shè)接口, 允許MCU 與各種外圍設(shè)備( 如閃存、數(shù)摸轉(zhuǎn)換、網(wǎng)絡(luò)控制器、從MCU) 以串行方式進行通信、數(shù)據(jù)交換。
SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB 的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。其工作模式有兩種:主模式和從模式。SPI 是一種允許一個主設(shè)備啟動一個從設(shè)備的同步通訊的協(xié)議,從而完成數(shù)據(jù)的交換。
也就是SPI 是一種規(guī)定好的通訊方式。這種通信方式的優(yōu)點是占用端口較少,一般4 根就夠基本通訊了(不算電源線)。同時傳輸速度也很高。一般來說要求主設(shè)備要有SPI 控制器(也可用模擬方式),就可以與基于SPI 的芯片通訊了。
二、SPI總線系統(tǒng)結(jié)構(gòu)
SPI 系統(tǒng)可直接與各個廠家生產(chǎn)的多種標準外圍器件直接接口, 一般使用4 條線: 串行時鐘線(SCK) 、主機輸入/ 從機輸出數(shù)據(jù)線SDO、主機輸出/ 從機輸入數(shù)據(jù)線SDI 和低電平有效的從機選擇線SS。SDI 和SDO 用于串行接收和發(fā)送數(shù)據(jù),數(shù)據(jù)高位在前低位在后。在SPI 設(shè)置為主機方式時,SDO 是主機讀從機,SDI 是主機寫從機。SCK 用于提供時鐘脈沖將數(shù)據(jù)一位位地傳送。SPI 總線器件間傳送數(shù)據(jù)框圖如圖1 所示。
三、SPI總線的接口特性
利用SPI 總線可在軟件的控制下構(gòu)成各種系統(tǒng)。如1 個主MCU 和幾個從MCU、幾個從MCU 相互連接構(gòu)成多主機系統(tǒng)(分布式系統(tǒng))、1 個主MCU 和1 個或幾個從I / O 設(shè)備所構(gòu)成的各種系統(tǒng)等。在大多數(shù)應(yīng)用場合,可使用1個MCU 作為主控機來控制數(shù)據(jù),并向1 個或幾個從外圍器件傳送該數(shù)據(jù)。從器件只有在主機發(fā)命令時才能接收或發(fā)送數(shù)據(jù)。其數(shù)據(jù)的傳輸格式總是高位(MSB)在前,低位(LSB)在后。
當一個主控機通過SPI 與幾種不同的串行I / O 芯片相連時,必須使用每片的允許控制端,這可通過MCU 的I / O 端口輸出線來實現(xiàn)。
但應(yīng)特別注意這些串行I / O 芯片的輸入輸出特性:首先是輸入芯片的串行數(shù)據(jù)輸出是否有三態(tài)控制端。平時未選中芯片時,輸出端應(yīng)處于高阻態(tài)。若沒有三態(tài)控制端,則應(yīng)外加三態(tài)門。否則MCU 的MISO端只能連接一個外設(shè)。其次是外設(shè)的串行數(shù)據(jù)輸入是否有允許控制端。
因為只有在此芯片允許時,SCK 脈沖才把串行數(shù)據(jù)移入該外設(shè);在禁止時,SCK 對外設(shè)無影響。若原來沒有允許控制端,則增加控制門;當然,也可以在SPI 總線上只連接1 個外設(shè),就不必用允許控制。
通過前文的原理介紹,我們已經(jīng)對SPI 總線的特性以及工作原理有了大致地了解,但當我們拿到一個SPI 總線器件時要正確地應(yīng)用它,還是一時不知如何下手,比如我們現(xiàn)在要想把一個具體的數(shù)據(jù)存儲放器件中去,需要怎么辦呢?現(xiàn)在,我們來一起看一個數(shù)據(jù)存儲的例子,通過一個實例,相信會給大家?guī)硪粋€感性的認識,下面就以目前單片機系統(tǒng)中廣泛應(yīng)用的SPI 接口的數(shù)據(jù)存儲器93C46 為例,介紹SPI器件的基本應(yīng)用。
四、93C46串行存儲器簡介
93C46 是1k 位串行EEPROM 儲存器。
每一個儲存器都可以通過DI/DO 引腳寫入或讀出。它的存儲容量為1024 位,內(nèi)部為128×8位或64×16 位。93C46 為串行三線SPI 操作芯片,在時鐘時序的同步下接收數(shù)據(jù)口的指令。
指令碼為9 位十進制碼,具有7 個指令,讀、擦寫使能、擦除、寫、全擦、全寫及擦除禁止。該芯片擦寫時間快,有擦寫使能保護,可靠性高,擦寫次數(shù)可達100 萬次, 93C46 的引腳功能圖如圖2 所示。
圖2 93C46 的引腳圖
表1 :93C46 串行EEPROM 指令格式選擇表