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