SPI是Serial Peripheral Interface的簡稱,是由Motorola公司推出的一種高速、全雙工的總線協(xié)議,可以實現(xiàn)一對一、一對多芯片通信。
SPI接口信號
SPI由SCLK、CS/SSEL、MOSI,MISO四根線組成,
-
SCLK,時鐘信號,時鐘頻率即SPI速率,和SPI模式有關(guān);
-
MOSI,主機輸出,從機輸入;
-
MISO,主機輸入,從機輸出;
-
CS/SSEL,從機設(shè)備選擇,低電平有效;
多從機模式
如果主機有多個片選CS端口,可采用下圖模式,主機只能獲取一個從機的MISO信號,其它從機輸出信號須為高阻。
菊花鏈連接,節(jié)省GPIO、節(jié)省布線面積,但需要保證從機支持菊花鏈模式。
菊花鏈的數(shù)據(jù)傳輸時序:通過移位 送達數(shù)據(jù)。
QSPI協(xié)議
QSPI協(xié)議讀寫時序:
注意,很多人寫公眾號都沒說清楚,為什么SPI能做到全雙工,而有些QSPI不能呢?
因為從下面時序圖可看到,發(fā)送時,待發(fā)送數(shù)據(jù)的一組8bit寄存器只在下降沿向左移位(高位先發(fā),低位補充0即可),那么必然存在另一組8bit寄存器用以在上升沿接收數(shù)據(jù),這樣就可以構(gòu)成全雙工,而QSPI一般用FIFO/SRAM進行數(shù)據(jù)傳輸,基于成本考慮,一般只能半雙工。
SPI工作模式
根據(jù)時鐘極性CPOL(Clock Polarity)、時鐘相位CPHA(Clock Phase),SPI有4種模式,最廣泛使用的是模式0和3:
官方時序圖如下:
CPOL=0 CPHA=0(常用)
CPOL=0,SPICLK空閑狀態(tài)為低電平;
CPHA=0,SPICLK第一個邊沿(上升沿)采集數(shù)據(jù)、第二個沿輸出數(shù)據(jù);
CPOL=1, CPHA=1 (常用)
CPOL=1,SPICLK空閑狀態(tài)為高電平;
CPHA=1,SPICLK第二個邊沿(上升沿)采集數(shù)據(jù)、第三個沿輸出數(shù)據(jù);
CPOL=0,CPHA=1 (不常用)
CPOL=0,SPICLK空閑狀態(tài)為低電平;
CPHA=1,SPICLK第二個邊沿(下升沿)采集數(shù)據(jù)、第三個沿輸出數(shù)據(jù);
CPOL=1,CPHA=0
(不常用)
CPOL=1,SPICLK空閑狀態(tài)為高電平;
CPHA=0,SPICLK第一個邊沿(下升沿)采集數(shù)據(jù)、第二個沿輸出數(shù)據(jù);
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。