SPI由于接口相對(duì)簡(jiǎn)單(只需要4根線),用途算是比較廣泛,主要應(yīng)用在 EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。即一個(gè)SPI的Master通過(guò)SPI與一個(gè)從設(shè)備,即上述的那些Flash,ADC等,進(jìn)行通訊。而主從設(shè)備之間通過(guò)SPI進(jìn)行通訊,首先要保證兩者之間時(shí)鐘SCLK要一致,互相要商量好了,要匹配,否則,就沒(méi)法正常通訊了,即保證時(shí)序上的一致才可正常訊。而這里的SPI中的時(shí)鐘和相位,指的就是SCLk時(shí)鐘的特性,即保證主從設(shè)備兩者的時(shí)鐘的特性一致了,以保證兩者可以正常實(shí)現(xiàn)SPI通訊。SPI的極性Polarity和相位Phase,最常見的寫法是CPOL和CPHA,不過(guò)也有一些其他寫法,簡(jiǎn)單總結(jié)如下:(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (時(shí)鐘)極性(2) CKPHA (Clock Phase) = CPHA = PHA = Phase = (時(shí)鐘)相位(3) SCK=SCLK=SPI的時(shí)鐘(4) Edge=邊沿,即時(shí)鐘電平變化的時(shí)刻,即上升沿(rising edge)或者下降沿(falling edge)對(duì)于一個(gè)時(shí)鐘周期內(nèi),有兩個(gè)edge,分別稱為:(1)Leading edge=前一個(gè)邊沿=第一個(gè)邊沿,對(duì)于開始電壓是1,那么就是1變成0的時(shí)候,對(duì)于開始電壓是0,那么就是0變成1的時(shí)候;(2)Trailing edge=后一個(gè)邊沿=第二個(gè)邊沿,對(duì)于開始電壓是1,那么就是0變成1的時(shí)候(即在第一次1變成0之后,才可能有后面的0變成1),對(duì)于開始電壓是0,那么就是1變成0的時(shí)候;
本文采用如下用法:極性=CPOL相位=CPHASCLK=時(shí)鐘第一個(gè)邊沿和第二個(gè)邊沿CPOL和CPHA,分別都可以是0或時(shí)1,對(duì)應(yīng)的四種組合就是:
下面詳細(xì)介紹。CPOL極性先說(shuō)什么是SCLK時(shí)鐘的空閑時(shí)刻,其就是當(dāng)SCLK在發(fā)送8個(gè)bit比特?cái)?shù)據(jù)之前和之后的狀態(tài),于此對(duì)應(yīng)的,SCLK在發(fā)送數(shù)據(jù)的時(shí)候,就是正常的工作的時(shí)候,有效active的時(shí)刻了。其英文精簡(jiǎn)解釋為:Clock Polarity = IDLE state of SCK。SPI的CPOL,表示當(dāng)SCLK空閑idle的時(shí)候,其電平的值是低電平0還是高電平1:CPOL=0,時(shí)鐘空閑idle時(shí)候的電平是低電平,所以當(dāng)SCLK有效的時(shí)候,就是高電平,就是所謂的active-high;CPOL=1,時(shí)鐘空閑idle時(shí)候的電平是高電平,所以當(dāng)SCLK有效的時(shí)候,就是低電平,就是所謂的active-low;
從上圖中可以看出,(CPOL=0)的SCK 波形,它有(傳輸)8 個(gè)脈沖,而在脈沖傳輸前和完成后都保持在【低電平狀態(tài)】。此時(shí)的狀態(tài)就是時(shí)鐘的空閑狀態(tài)或無(wú)效狀態(tài),因?yàn)榇藭r(shí)沒(méi)有脈沖,也就不會(huì)有數(shù)據(jù)傳輸。同理得出,(CPOL=)1 的圖,時(shí)鐘的空閑狀態(tài)或無(wú)效狀態(tài)時(shí)SCK 是保持【高電平的】。CPHA相位首先說(shuō)明一點(diǎn),capture strobe = latch = read = sample,都是表示數(shù)據(jù)采樣,數(shù)據(jù)有效的時(shí)刻。相位,對(duì)應(yīng)著數(shù)據(jù)采樣是在第幾個(gè)邊沿(edge),是第一個(gè)邊沿還是第二個(gè)邊沿,0對(duì)應(yīng)著第一個(gè)邊沿,1對(duì)應(yīng)著第二個(gè)邊沿。
對(duì)于:CPHA=0,表示第一個(gè)邊沿:對(duì)于CPOL=0,idle時(shí)候的是低電平,第一個(gè)邊沿就是從低變到高,所以是上升沿;對(duì)于CPOL=1,idle時(shí)候的是高電平,第一個(gè)邊沿就是從高變到低,所以是下降沿;CPHA=1,表示第二個(gè)邊沿:對(duì)于CPOL=0,idle時(shí)候的是低電平,第二個(gè)邊沿就是從高變到低,所以是下降沿;對(duì)于CPOL=1,idle時(shí)候的是高電平,第一個(gè)邊沿就是從低變到高,所以是上升沿;
我們看上面的圖,發(fā)現(xiàn)數(shù)據(jù) SI 是對(duì)應(yīng) SCK 的第一個(gè)時(shí)鐘沿,再仔細(xì)看,數(shù)據(jù)是在SCK的第一個(gè)時(shí)鐘邊沿保持穩(wěn)定【數(shù)據(jù)被采樣捕獲】,在下一個(gè)邊沿改變【SCK 的下降沿?cái)?shù)據(jù)改變】因此我們得出結(jié)論:該系列FLASH 是【數(shù)據(jù)在第一個(gè)時(shí)鐘沿被采樣捕獲】或【數(shù)據(jù)在SPCK 起始邊沿捕獲,在SPCK 下一個(gè)邊沿改變】如何判斷CPOL和CPHA如果起始的SCLK的電平是0,那么CPOL=0,如果是1,那么CPOL=1,然后看數(shù)據(jù)采樣時(shí)刻,即時(shí)序圖數(shù)據(jù)線上的數(shù)據(jù)那個(gè)矩形區(qū)域的中間所對(duì)應(yīng)的位置,對(duì)應(yīng)到上面SCLK時(shí)鐘的位置,對(duì)應(yīng)著是第一個(gè)邊沿或是第二個(gè)邊沿,即CPHA是0或1。(對(duì)應(yīng)的是上升沿還是還是下降沿,要根據(jù)對(duì)應(yīng)的CPOL的值,才能確定)。(1)如何判斷CPOL:SCLK的空閑時(shí)候的電壓,是0還是1,決定了CPOL是0還是1;(2)如何判斷CPHA:而數(shù)據(jù)采樣時(shí)刻對(duì)應(yīng)著的SCLK的電平,是第一個(gè)邊沿還是第二個(gè)邊沿,對(duì)應(yīng)著CPHA為0還是1。
SCLK的極性,相位,邊沿之間的內(nèi)在邏輯
最后來(lái)看一下S3C2440的SPI的CPOL和CPHA,結(jié)合前面講的理論知識(shí),下面的圖就很好理解啦!
-
AD轉(zhuǎn)換器
+關(guān)注
關(guān)注
4文章
250瀏覽量
41409 -
CPOL
+關(guān)注
關(guān)注
0文章
9瀏覽量
10046 -
相位coha
+關(guān)注
關(guān)注
0文章
1瀏覽量
1866
原文標(biāo)題:詳解SPI中的極性CPOL和相位CPHA
文章出處:【微信號(hào):eet-china,微信公眾號(hào):電子工程專輯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論