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

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

時鐘的極性Polarity和相位Phase,和一些英文簡寫標識以下: 3d

  • CKPOL(Clock Polarity)=CPOL=POL=Polarity=(時鐘)極性
  • CKPHA(Clock Phase)=CPHA=PHA=Phase=(時鐘)相位
  • SCK=SCLK=SPI的時鐘
  • Edge=邊沿,即時鐘電平變化的時刻,即上升沿(rising edge)或者降低沿(falling edge)

一個時鐘週期內,有兩個edge,分別稱爲前沿(第一個邊沿)和後沿(第二個邊沿):blog

  • Leading edge=前沿=第一個邊沿,對於開始電壓是1,那麼就是1變成0的時候,對於開始電壓是0,那麼就是0變成1的時候;
  • Trailing edge=後沿=第二個邊沿,對於開始電壓是1,那麼就是0變成1的時候(即在第一次1變成0以後,纔可能有後面的0變成1),對於開始電壓是0,那麼就是1變成0的時候;

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

下面詳細介紹.get

CPOL極性it

先說什麼是SCLK時鐘的空閒時刻,其就是當SCLK在發送8個bit比特數據以前和以後的狀態,於此對應的,SCLK在發送數據的時候,就是正常的工做的時候,是有效active的時刻.其英文精簡解釋爲:Clock Polarity = IDLE state of SCK.ast

SPI的CPOL,表示當SCLK空閒idle的時候,其電平的值是低電平0仍是高電平1:im

  • 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,均示數據採樣,數據有效的時刻.相位,對應數據採樣是前沿仍是後沿,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的值,才能肯定).

最後來看一下S3C2440的SPI的CPOL和CPHA,結合前面講的理論知識,下面的圖就很好理解啦!

本文轉自:http://blog.csdn.net/ce123_zhouwei/article/details/6923293

相關文章
相關標籤/搜索