SPI(Serial Peripheral Interface,串行外設(shè)接口)是一種全雙工、同步的通信接口。它采用主從式結(jié)構(gòu),在單片機(jī)、嵌入式系統(tǒng)以及數(shù)字集成電路中得到廣泛應(yīng)用。
1.SPI接口定義
SPI接口是一個(gè)非常簡(jiǎn)單但十分靈活的串行通信協(xié)議,它由四條線構(gòu)成:SCLK、MOSI、MISO和SS(片選)。其中,SCLK是時(shí)鐘信號(hào),由Master設(shè)備提供;MOSI是Master輸出Slave輸入的數(shù)據(jù)線;MISO是Slave輸出Master輸入的數(shù)據(jù)線;SS是Slave的片選信號(hào),用于選擇與Master通信的Slave設(shè)備。
2.SPI接口工作原理
SPI接口采用一條時(shí)鐘線和兩條數(shù)據(jù)線(MOSI和MISO)實(shí)現(xiàn)全雙工通訊。在SPI通信開(kāi)始之前,Master需要確定要與哪個(gè)Slave設(shè)備通信,并向?qū)?yīng)的Slave設(shè)備發(fā)送片選信號(hào)(SS)。然后,Master會(huì)通過(guò)時(shí)鐘線(SCLK)同步Slave設(shè)備的收發(fā)動(dòng)作,在每一拍鐘(SCLK上沿) Master均發(fā)送一個(gè)比特位的數(shù)據(jù)到MOSI上,而Slave在此同步下把自己的數(shù)據(jù)也放到MISO上,并在此過(guò)程中向Master傳輸相應(yīng)的數(shù)據(jù)。獨(dú)立的Master輸出必須與對(duì)應(yīng)的Slave輸入連接,也就是在通信中一個(gè)數(shù)據(jù)向右移進(jìn)Master設(shè)備的SISO時(shí),就會(huì)同時(shí)從Slave設(shè)備的MOSI位移出相應(yīng)數(shù)據(jù)位。
3.SPI接口和串口的區(qū)別
SPI與串口協(xié)議有很大不同,串口是一種異步通信方式,采用兩條線(TXD和RXD)進(jìn)行數(shù)據(jù)傳輸,其中TXD是發(fā)送數(shù)據(jù)的線,RXD是接收數(shù)據(jù)的線。而SPI接口可以選擇性地通過(guò)SS片選引腳選擇想要與主設(shè)備進(jìn)行通訊的從設(shè)備,每個(gè)從設(shè)備都只需獨(dú)立的MISO、MOSI、SCLK三根線分別連到主設(shè)備即可。此外,每個(gè)完整的數(shù)據(jù)包通常由主設(shè)備發(fā)起始數(shù)據(jù)后緊跟著若干數(shù)據(jù)位組成,然后再產(chǎn)生一個(gè)片選信號(hào)結(jié)束數(shù)據(jù)傳輸。