SPI(Serial Peripheral Interface)總線是Motorola公司推出的一種同步串行通信總線。利用SPI總線,單片機可以與外設(shè)之間進行8位數(shù)據(jù)的同步發(fā)送和接收。目前采用SPI總線的芯片較多,如Motorala公司的M68HC08單片機、TI公司的A-D轉(zhuǎn)換器TLC2543和D-A轉(zhuǎn)換器TLC5615,以及AD公司的溫度傳感器AD7816等。SPI 是由摩托羅拉(Motorola)公司開發(fā)的全雙工同步串行總線,是微處理控制單元(MCU)和外圍設(shè)備之間進行通信的同步串行端口。主要應(yīng)用在EEPROM、Flash、實時時鐘(RTC)、數(shù)模轉(zhuǎn)換器(ADC)、網(wǎng)絡(luò)控制器、MCU、數(shù)字信號處理器(DSP)以及數(shù)字信號解碼器之間。SPI 系統(tǒng)可直接與各個廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件直接接口,一般使用4 條線:串行時鐘線SCK、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOSI 和低電平有效的從機選擇線SSEL。
在討論SPI 數(shù)據(jù)傳輸時,必須明確以下兩位的特點及功能:
(1) CPOL: 時鐘極性控制位。該位決定了SPI總線空閑時SCK 時鐘線的電平狀態(tài)。
CPL=0,當(dāng)SPI總線空閑時,SCK 時鐘線為低電平。
CPL=1,當(dāng)SPI總線空閑時,SCK 時鐘線為高電平。
(2) CPHA: 時鐘相位控制位。該位決定了SPI總線上數(shù)據(jù)的采樣位置。
CPHA=0,SPI總線在時鐘線的第1個跳變沿處采樣數(shù)據(jù)。
CPHA= 1,SPI總線在時鐘線的第2個跳變沿處采樣數(shù)據(jù)
SPI總線的引腳功能和時序
串行外設(shè)接口(SPI)是微控制器(MCU)和外圍IC(如傳感器、ADC、DAC、移位寄存器、SRAM等)之間使用較廣泛的接口之一。SPI是一種同步、全雙工、主從式接口。來自主機或者從機的數(shù)據(jù)在時鐘上升沿或下降沿同步。主機和從機可以同時傳輸數(shù)據(jù)。SPI接口可以是三線式或者4線式。
1.SPI總線的引腳功能
圖6-1為SPI總線接口擴展示意圖,其中4根信號線將主機與從機(或從器件)連接在一起,這4根線的作用如下:
圖6-1 SPI總線接口擴展示意圖
1)MISO(Master Input/Slave Output,主入從出)是主機與從機之間的數(shù)據(jù)線,是主機的數(shù)據(jù)輸入線,是從機的數(shù)據(jù)輸出線。
2)MOSI(Master Output/Slave Input,主出從入)是主機與從機之間的數(shù)據(jù)線,是主機的數(shù)據(jù)輸出線,是從機的數(shù)據(jù)輸入線。
3)SCK(串行時鐘)是主機時鐘信號輸出線是從機(或從器件)的時鐘信號輸入線。時鐘信號可以控制數(shù)據(jù)傳輸?shù)乃俣取?
4)SS(Slave Select)是從機的片選信號。
在SPI總線通信中,只有一個主機,可以有多個從機。從機可以是單片機(如8051單片機),也可以是SPI總線接口器件,如A-D轉(zhuǎn)換器TL2543等。因為所有從機(或從器件)的MOSI、MISO和SCK分別連接在一起,所以通信時主機必須通過片選信號選擇一個或多個從機(或從器件)進行通信。
2.SPI總線的時序
SPI器件可以在SCK的上升沿或下降沿收發(fā)數(shù)據(jù),數(shù)據(jù)可以按照“先高位后低位”或“先低位后高位”的順序傳輸。
若假設(shè)主機在SCK的上升沿按“先高位后低位”的順序接收數(shù)據(jù),則由圖6-2可知:
1)SS引腳出現(xiàn)低電平后,從機被選中;同時從機將數(shù)據(jù)的D7位(即最高位)送到MISO引腳。
2)在SS變成低電平之后的每個SCK下降沿,從機將1位數(shù)據(jù)送到MISO引腳。
3)在每個SCK的上升沿,主機采集MISO引腳上的數(shù)據(jù),完成讀(接收)數(shù)據(jù)的操作。
圖6-2 SPI總線時序圖
MCS-51單片機本身不帶SPI總線接口,在擴展SPI總線接口芯片時,可以用其并行I/O引腳模擬產(chǎn)生SPI總線的信號及時序。例如,在圖6-3中,分別以8051單片機的P1.0、P1.1、P1.2和P1.3模擬SPI總線的MISO、MOSI、SCK和CS引腳。
圖6-3 8051單片機引腳模擬SPI總線