SPI是一種高速的,全雙工,同步的通信總線,可以在同一時間發送和接收數據,并且沒有定義速度限制,通常能達到甚至超過10M/bps。在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便,主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。
1.SPI特性
SPI總線包括4條邏輯線,定義如下:
MISO:Master input slave output 主機輸入,從機輸出(數據來自從機);
MOSI:Master output slave input 主機輸出,從機輸入(數據來自主機);
SCLK :Serial Clock 串行時鐘信號,由主機產生發送給從機;
SS:Slave Select 片選信號,由主機發送,以控制與哪個從機通信,通常是低電平有效信號。
2.SPI工作流程
SPI是一個同步的數據總線,它是用一條單獨的數據線和一條單獨的時鐘信號來保證發送端和接收端的完美同步。
時鐘是一個振蕩信號,它告訴接收端在確切的時機對數據線上的信號進行采樣。
SPI有主、從兩種模式,通常由一個主模塊(主機)和一個或多個從模塊(叢機)組成(SPI不支持多主機),提供時鐘的為主設備(Master),接收時鐘的設備為從設備(Slave),SPI接口的讀寫操作,都是由主設備發起,當存在多個從設備時,通過各自的片選信號進行管理。
整體的傳輸大概可以分為以下幾個過程:
1、主設備發起信號,將CS/SS拉低,啟動通信。
2、主設備通過發送時鐘信號,來告訴從設備進行寫數據或者讀數據操作(采集時機可能是時鐘信號的上升沿(從低到高)或下降沿(從高到低),它將立即讀取數據線上的信號,這樣就得到了一位數據(1bit)。
3、主機(Master)將要發送的數據寫到發送數據緩存區(Menory),緩存區經過移位寄存器,串行移位寄存器通過MOSI信號線將字節一位一位的移出去傳送給從機,同時MISO接口接收到的數據經過移位寄存器一位一位的移到接收緩存區。
4、從機(Slave)也將自己的串行移位寄存器中的內容通過MISO信號線返回給主機。同時通過MOSI信號線接收主機發送的數據,這樣,兩個移位寄存器中的內容就被交換。
下圖簡單模擬SPI通信流程,主機拉低CS片選信號,啟動通信,并且產生時鐘信號,上升沿觸發邊沿信號,主機在MOSI線路一位一位發送數據0X53,在MISO線路一位一位接收數據0X46,如下圖所示:
數據在傳輸中,高位在先還是低位在先,SPI協議并無明確規定,但是數據要在主從機中正確傳輸,自然雙方要先約定好,一般會采用高位在先(MSB)方式傳輸。
3.SPI四種工作模式
除了配置串行時鐘速率(頻率)外,SPI主設備還需要配置時鐘極性和時鐘相位。
時鐘極性 CKP/Clock Polarit
時鐘極性通常寫為CKP或CPOL。時鐘極性和相位共同決定讀取數據的方式,比如信號上升沿讀取數據還是信號下降沿讀取數據,CKP可以配置為1或0。可以根據需要將時鐘的默認狀態設置為高或低。極性反轉可以通過簡單的邏輯逆變器實現。
CKP = 0:時鐘空閑IDLE為低電平0;
CKP = 1:時鐘空閑IDLE為高電平1;
時鐘相位 CKE /Clock Phase (Edge)
除配置串行時鐘速率和極性外,SPI主設備還應配置時鐘相位(或邊沿)。根據硬件制造商的不同,時鐘相位通常寫為CKE或CPHA;
顧名思義,時鐘相位/邊沿,也就是采集數據時是在時鐘信號的具體相位或者邊沿;
CKE = 0:在時鐘信號SCK的第一個跳變沿采樣;
CKE = 1:在時鐘信號SCK的第二個跳變沿采樣;
上一篇: 人形機器人需要怎樣的電容器?
下一篇: 控制器如何應對AI安全攝像機中的存儲挑戰