詳解SPI中的極性CPOL和相位CPHA

SPI由於接口相對簡單(只需要4根線),用途算是比較廣泛,主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。即一個SPI的Master通過SPI與一個從設備,即上述的那些Flash,ADC等,進行通訊。而主從設備之間通過SPI進行通訊,首先要保證兩者之間時鐘SCLK要一致,互相要商量好了,要匹配,否則,就沒法正常通訊了,即保證時序上的一致纔可正常訊。而這裏的SPI中的時鐘和相位,指的就是SCLk時鐘的特性,即保證主從設備兩者的時鐘的特性一致了,以保證兩者可以正常實現SPI通訊。

SPI的極性Polarity和相位Phase,最常見的寫法是CPOL和CPHA,不過也有一些其他寫法,簡單總結如下:

  1. CKPOL (Clock Polarity) = CPOL = POL = Polarity = (時鐘)極性
  2. CKPHA (Clock Phase) = CPHA = PHA = Phase = (時鐘)相位
  3. SCK=SCLK=SPI的時鐘
  4. Edge=邊沿,即時鐘電平變化的時刻,即上升沿(rising edge)或者下降沿(falling edge) 對於一個時鐘週期內,有兩個edge,分別稱爲:
    1. Leading edge=前一個邊沿=第一個邊沿,對於開始電壓是1,那麼就是1變成0的時候,對於開始電壓是0,那麼就是0變成1的時候;
    2. Trailing edge=後一個邊沿=第二個邊沿,對於開始電壓是1,那麼就是0變成1的時候(即在第一次1變成0之後,纔可能有後面的0變成1),對於開始電壓是0,那麼就是1變成0的時候;

本博文采用如下用法:

  1. 極性=CPOL
  2. 相位=CPHA
  3. SCLK=時鐘
  4. 第一個邊沿和第二個邊沿

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

下面詳細介紹。

CPOL極性

先說什麼是SCLK時鐘的空閒時刻,其就是當SCLK在發送8個bit比特數據之前和之後的狀態,於此對應的,SCLK在發送數據的時候,就是正常的工作的時候,有效active的時刻了。其英文精簡解釋爲:Clock Polarity = IDLE state of SCK。 SPI的CPOL,表示當SCLK空閒idle的時候,其電平的值是低電平0還是高電平1:

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

從上圖中可以看出,(CPOL=0)的SCK 波形,它有(傳輸)8 個脈衝,而在脈衝傳輸前和完成後都保持在【低電平狀態】。此時的狀態就是時鐘的空閒狀態或無效狀態,因爲此時沒有脈衝,也就不會有數據傳輸。同理得出,(CPOL=)1 的圖,時鐘的空閒狀態或無效狀態時SCK 是保持【高電平的】。

CPHA相位

首先說明一點,capture strobe = latch = read = sample,都是表示數據採樣,數據有效的時刻。相位,對應着數據採樣是在第幾個邊沿(edge),是第一個邊沿還是第二個邊沿,0對應着第一個邊沿,1對應着第二個邊沿。

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

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

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

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

我們看上面的圖,發現數據 SI 是對應 SCK 的第一個時鐘沿,再仔細看,數據是在SCK的第一個時鐘邊沿保持穩定【數據被採樣捕獲】,在下一個邊沿改變【SCK 的下降沿數據改變】因此我們得出結論:該系列FLASH 是【數據在第一個時鐘沿被採樣捕獲】或【數據在SPCK 起始邊沿捕獲,在SPCK 下一個邊沿改變】

如何判斷CPOL和CPHA

如果起始的SCLK的電平是0,那麼CPOL=0,如果是1,那麼CPOL=1,然後看數據採樣時刻,即時序圖數據線上的數據那個矩形區域的中間所對應的位置,對應到上面SCLK時鐘的位置,對應着是第一個邊沿或是第二個邊沿,即CPHA是0或1。(對應的是上升沿還是還是下降沿,要根據對應的CPOL的值,才能確定)。

  1. 如何判斷CPOL:SCLK的空閒時候的電壓,是0還是1,決定了CPOL是0還是1;
  2. 如何判斷CPHA:而數據採樣時刻對應着的SCLK的電平,是第一個邊沿還是第二個邊沿,對應着CPHA爲0還是1。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章