一、SPI介紹
1.1技術性能:
采用主從模式,一般僅支持單Master--多Slave。時鍾由Master控制,在時鍾移位脈沖下,數據按位傳輸,高位在前--底位在后(MSB first)。接口有兩條單向數據線,為全雙工通信。
各半導體公司推出了大量的帶有SPI接口的具有各種各樣功能的芯片,如RAM,EEPROM,FlashROM,A/D轉換器、D/A轉換器、LED/LED顯示驅動器、I/O接口芯片、實時時鍾、UART收發器
1.2接口定義:
SPI接口共有4根信號線,分別是:設備選擇線、時鍾線、串行輸出數據線、串行輸入數據線。
- MOSI :主設備數據輸入,從設備數據輸出
- MOSO :主設備數據輸出,從設備數據輸入
- SCLK:時鍾信號,由主設備產生
- CSS:從設備使能信號,有主設備控制
1.3時鍾極性和時鍾相位
1.3.1時鍾極性和時鍾相位的基本介紹
在SPI操作中,最重要的兩項設置就是時鍾極性(CPOL或UCCKPL)和時鍾相位(CPHA或UCCKPH)。
時鍾極性設置時鍾空閑時的電平,時鍾相位設置讀取數據和發送數據的時鍾沿。時鍾極性(CPOL)對傳輸協議沒有重大的影響,時鍾相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行數據傳輸。
CPOL=0,串行同步時鍾的空閑狀態為低電平;CPOL=1,串行同步時鍾的空閑狀態為高電平。 CPHA=0,在串行同步時鍾的第一個跳變沿(上升或下降)數據被采樣;CPHA=1,在串行同步時鍾的第二個跳變沿(上升或下降)數據被采樣。
1.3.2時序詳解
我們來關注SCK的第一個時鍾周期,在時鍾的前沿采樣數據(上升沿,第一個時鍾沿),在時鍾的后沿輸出數據(下降沿,第二個時鍾沿)。首先來看主器件,主器件的輸出口(MOSI)輸出的數據bit1,在時鍾的前沿被從器件采樣,那主器件是在何時刻輸出bit1的呢?bit1的輸出時刻實際上在SCK信號有效以前,比SCK的上升沿還要早半個時鍾周期。bit1的輸出時刻與SSEL信號沒有關系。再來看從器件,主器件的輸入口MISO同樣是在時鍾的前沿采樣從器件輸出的bit1的,那從器件又是在何時刻輸出bit1的呢。從器件是在SSEL信號有效后,立即輸出bit1,盡管此時SCK信號還沒有起效。
所以說,主機和從機的發送數據是同時完成的,兩者的接收數據也是同時完成的。所以為了保證主從機正確通信,應使得它們的SPI具有相同的時鍾極性和時鍾相位。
SPI接口時鍾配置心得:在主設備這邊配置SPI接口時鍾的時候一定要弄清楚從設備的時鍾要求,因為主設備這邊的時鍾極性和相位都是以從設備為基准的。因此在時鍾極性的配置上一定要搞清楚從設備是在時鍾的上升沿還是下降沿接收數據,是在時鍾的下降沿還是上升沿輸出數據。
1.4單片機軟件模擬SPI接口
參考一下網址: http://blog.csdn.net/ce123/article/details/6905630
二、SPI與IIC
Philips(for IIC)和Motorola(for SPI) 出於不同背景和市場需求制定了這兩種標准通信協議。
參考以下網址:http://blog.csdn.net/ce123/article/details/6878547