SPI是一種采用串行同步方式的3線或4線通信接口,使用信號(hào)有使能信號(hào),同步時(shí)鐘,同步數(shù)據(jù)輸入和數(shù)據(jù)輸出。其常用于微控制器和外圍芯片的直接連接和擴(kuò)展。
一個(gè)典型的SPI總線系統(tǒng)包括一個(gè)主機(jī)和一個(gè)從機(jī),雙方之間通過(guò)主機(jī)輸出/從機(jī)輸入(MOSI),主機(jī)輸入/從機(jī)輸出(MISO) ,同步時(shí)鐘信號(hào)(SCLK),從機(jī)選擇(SS|),4跟信號(hào)線相連。SPI的通信過(guò)程本質(zhì)上就是在同步時(shí)鐘作用下的串行移位??梢园阎鳈C(jī)和從機(jī)看成是兩個(gè)串行移位寄存器,通過(guò)MOSI和MISO首尾相連。主機(jī)發(fā)起傳輸時(shí),先拉低從機(jī)選擇信號(hào),然后在內(nèi)部時(shí)鐘的作用下將SPI數(shù)據(jù)寄存器中的內(nèi)容逐步移出,通過(guò)MOSI傳送到從機(jī)。雙方數(shù)據(jù)交換完畢后,拉高從機(jī)選擇信號(hào),停止SCLK,結(jié)束SPI.
SPI根據(jù)同步時(shí)鐘的極性和同步時(shí)鐘的相位兩個(gè)參數(shù),可以配置為4種不同的工作模式。同步時(shí)鐘(CPOL)的極性指SPI總線處于傳輸空閑時(shí),SCLK信號(hào)的狀態(tài)。同步時(shí)鐘的相位(CPHA)指進(jìn)行SPI傳輸時(shí)對(duì)數(shù)據(jù)進(jìn)行采樣/鎖存點(diǎn)相對(duì)于SCLK上時(shí)鐘信號(hào)的位置。
AVR的SPI是采用硬件方式實(shí)現(xiàn)的全雙工3線同步通信接口,支持主機(jī),從機(jī)模式和4種不同傳輸模式的SPI時(shí)序。主機(jī)方式的最高速率為系統(tǒng)時(shí)鐘頻率的1/2,從機(jī)方式為1/4。 ATMega 16的SPI接口的硬件部分由數(shù)據(jù)寄存器,時(shí)鐘邏輯,引腳邏輯和控制邏輯4部分組成。與SPI相關(guān)的寄存器有SPI控制寄存器SPCR,SPI狀態(tài)寄存器SPSR,SPI數(shù)據(jù)寄存器SPDR。