一、技術(shù)性能
SPI接口是Motorola 首先提出的全雙工三線同步串行外圍接口,采用主從模式(MasterSlave)架構(gòu);支持多slave模式應(yīng)用,一般僅支持單Master。時鐘由Master控制,在時鐘移位脈沖下,數(shù)據(jù)按位傳輸,高位在前,低位在后(MSBfirst);SPI接口有2根單向數(shù)據(jù)線,為全雙工通信,目前應(yīng)用中的數(shù)據(jù)速率可達幾Mbps的水平??偩€結(jié)構(gòu)如下圖所示。
二、接口定義
SPI接口共有4根信號線,分別是:設(shè)備選擇線、時鐘線、串行輸出數(shù)據(jù)線、串行輸入數(shù)據(jù)線。
(1)MOSI:主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入
(2)MISO:主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出
(3)SCLK:時鐘信號,由主器件產(chǎn)生
(4)/SS:從器件使能信號,由主器件控制
三、內(nèi)部結(jié)構(gòu)
四、 時鐘極性和時鐘相位
在SPI操作中,最重要的兩項設(shè)置就是時鐘極性(CPOL或UCCKPL)和時鐘相位(CPHA或UCCKPH)。時鐘極性設(shè)置時鐘空閑時的電平,時鐘相位設(shè)置讀取數(shù)據(jù)和發(fā)送數(shù)據(jù)的時鐘沿。
主機和從機的發(fā)送數(shù)據(jù)是同時完成的,兩者的接收數(shù)據(jù)也是同時完成的。所以為了保證主從機正確通信,應(yīng)使得它們的SPI具有相同的時鐘極性和時鐘相位。
SPI接口時鐘配置心得:在主設(shè)備這邊配置SPI接口時鐘的時候一定要弄清楚從設(shè)備的時鐘要求,因為主設(shè)備這邊的時鐘極性和相位都是以從設(shè)備為基準的。因此在時鐘極性的配置上一定要搞清楚從設(shè)備是在時鐘的上升沿還是下降沿接收數(shù)據(jù),是在時鐘的下降沿還是上升沿輸出數(shù)據(jù)。
五、傳輸時序
SPI接口在內(nèi)部硬件實際上是兩個簡單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產(chǎn)生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。如下圖所示,在SCLK的下降沿上數(shù)據(jù)改變,上升沿一位數(shù)據(jù)被存入移位寄存器。
六、數(shù)據(jù)傳輸
在一個SPI時鐘周期內(nèi),會完成如下操作:
1)主機通過MOSI線發(fā)送1位數(shù)據(jù),從機通過該線讀取這1位數(shù)據(jù);
2)從機通過MISO線發(fā)送1位數(shù)據(jù),主機通過該線讀取這1位數(shù)據(jù)。
這是通過移位寄存器來實現(xiàn)的。如下圖所示,主機和從機各有一個移位寄存器,且二者連接成環(huán)。隨著時鐘脈沖,數(shù)據(jù)按照從高位到低位的方式依次移出主機寄存器和從機寄存器,并且依次移入從機寄存器和主機寄存器。當(dāng)寄存器中的內(nèi)容全部移出時,相當(dāng)于完成了兩個寄存器內(nèi)容的交換。