淺談SPI總線
發(fā)布時(shí)間:2018-03-26 瀏覽量:
SPI總線概述
SPI全稱是串行外設(shè)接口(Serial Peripheral Interface),是由Motorola提出的一種全雙工同步串行通信接口,通信波特率可以高達(dá)5Mbps,但具體速度大小取決于SPI硬件。SPI接口具有全雙工操作,操作簡(jiǎn)單,數(shù)據(jù)傳輸速率較高的優(yōu)點(diǎn),但也存在沒(méi)有指定的流控制,沒(méi)有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)的缺點(diǎn)。
SPI總線的構(gòu)成及信號(hào)類(lèi)型
SPI總線只需四條線(如圖1所示)就可以完成MCU與各種外圍器件的通訊:
1)MOSI – Master數(shù)據(jù)輸出,Slave數(shù)據(jù)輸入
2)MISO – Master數(shù)據(jù)輸入,Slave數(shù)據(jù)輸出
3)SCK – 時(shí)鐘信號(hào),由Master產(chǎn)生
4)/CS – Slave使能信號(hào),由Master控制。
SPI通信采用主從模式(Master-Slave)架構(gòu),一般為一個(gè)Master和多個(gè)Slave的應(yīng)用模式。SPI總線構(gòu)成如圖2所示。
SPI總線操作時(shí)序
SPI接口在Master控制下產(chǎn)生的從器件使能信號(hào)和時(shí)鐘信號(hào),兩個(gè)雙向移位寄存器按位傳輸進(jìn)行數(shù)據(jù)交換,傳輸數(shù)據(jù)高位在前,低位在后(MSB first)。如圖3所示,在SCK的下降沿上數(shù)據(jù)改變,上升沿一位數(shù)據(jù)被存入移位寄存器。
圖3
在一個(gè)SPI時(shí)鐘周期內(nèi),會(huì)完成如下操作:
1) Master通過(guò)MOSI線發(fā)送1位數(shù)據(jù),同時(shí)Slave通過(guò)MOSI線讀取這1位數(shù)據(jù)
2) Slave通過(guò)MISO線發(fā)送1位數(shù)據(jù),同時(shí)Master通過(guò)MISO線讀取這1位數(shù)據(jù)
Master和Slave各有一個(gè)移位寄存器,如圖4所示,而且這兩個(gè)移位寄存器連接成環(huán)狀。依照SCK的變化,數(shù)據(jù)以MSB first的方式依次移出Master寄存器和Slave寄存器,并且依次移入Slave寄存器和Master寄存器。當(dāng)寄存器中的內(nèi)容全部移出時(shí),相當(dāng)于完成了兩個(gè)寄存器內(nèi)容的交換。
另外,SPI有四種工作模式,通過(guò)設(shè)置時(shí)鐘空閑時(shí)為高或者低的狀態(tài),以及數(shù)據(jù)是在時(shí)鐘的上升沿或下降沿鎖存可將SPI配置成相應(yīng)的工作模式。
SPI總線注意點(diǎn)
1) Master配置SPI接口時(shí)鐘的時(shí)候一定要考慮從設(shè)備的操作時(shí)序要求,因?yàn)镸aster這邊的時(shí)鐘極性和相位都是以Slave為基準(zhǔn)的。因此在時(shí)鐘極性的配置上一定要確定Slave是在SCK的下降沿還是上升沿輸出數(shù)據(jù),是在SCK的上升沿還是下降沿接收數(shù)據(jù)。
2) 當(dāng)Slave時(shí)鐘頻率小于Master時(shí)鐘頻率時(shí),如果Master的SCK的速率太快,會(huì)出現(xiàn)Slave接收到的數(shù)據(jù)不正確,而SPI接口又沒(méi)有應(yīng)答機(jī)制確認(rèn)Slave是否接收到數(shù)據(jù)從而導(dǎo)致通信傳輸數(shù)據(jù)錯(cuò)誤