STM32---SPI 的CPOL、CPHA

設備與設備之間通過某種硬件接口通訊,目前存在很多種接口,SPI接口是其中的一種。

SPI中分Master主設備和Slave從設備,數據發送都是由Master控制。

一個master可以接一個或多個slave常見用法是一個Master接一個slave.

通信只需要4根線:SCLK, MISO, MOSI, SS

SCLK:(Serial Clock)(串行)時鐘

MISO(Master In Slave Out)主設備輸入,從設備輸出

MOSI:(Master Out Slave In)主設備輸出,從設備輸入

SS:(Slave Select)從設備,片選

SPI由於接口相對簡單(只需要4根線),用途算是比較廣泛,主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。

SPI的相位和極性】

CPOLCPHA,分別都可以是0或時1,對應的四種組合就是:

Mode 0 CPOL=0, CPHA=0
Mode 1 CPOL=0, CPHA=1
Mode 2 CPOL=1, CPHA=0
Mode 3 CPOL=1, CPHA=1

image001.png

單獨看這張圖,的確很難明白具體含義,所以下面會有更詳細的解釋。

 CPOL極性】

Clock Polarity = IDLE state of SCK

再用中文詳解:

SPICPOL,表示當SCLK空閒idle的時候,其電平的值是低電平0還是高電平1

CPOL=0,時鐘空閒idle時候的電平是低電平,所以當SCLK有效的時候,就是高電平,就是所謂的active-high

CPOL=1,時鐘空閒idle時候的電平是高電平,所以當SCLK有效的時候,就是低電平,就是所謂的active-low


 CPHA相位】

首先說明一點,capture strobe = latch = read = sample,都是表示數據採樣,數據有效的時刻。

相位,對應着數據採樣是在第幾個邊沿(edge),是第一個邊沿還是第二個邊沿,0對應着第一個邊沿,1對應着第二個邊沿。

對於:

CPHA=0,表示第一個邊沿:

對於CPOL=0idle時候的是低電平,第一個邊沿就是從低變到高,所以是上升沿;

對於CPOL=1idle時候的是高電平,第一個邊沿就是從高變到低,所以是下降沿;

CPHA=1,表示第二個邊沿:

對於CPOL=0idle時候的是低電平,第二個邊沿就是從高變到低,所以是下降沿;

對於CPOL=1idle時候的是高電平,第一個邊沿就是從低變到高,所以是上升沿;

用圖文形式表示,更加容易看懂:

image002.jpg


image003.jpg

image004.jpg




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章