SPI總線之CPOL CPHA
【 CPHA相位】
本文引用地址:http://m.butianyuan.cn/article/201612/330521.htm首先說明一點(diǎn),capture strobe = latch = read = sample,都是表示數(shù)據(jù)采樣,數(shù)據(jù)有效的時(shí)刻。
相位,對應(yīng)著數(shù)據(jù)采樣是在第幾個(gè)邊沿(edge),是第一個(gè)邊沿還是第二個(gè)邊沿,0對應(yīng)著第一個(gè)邊沿,1對應(yīng)著第二個(gè)邊沿。
對于:
CPHA=0,表示第一個(gè)邊沿:
對于CPOL=0,idle時(shí)候的是低電平,第一個(gè)邊沿就是從低變到高,所以是上升沿;
對于CPOL=1,idle時(shí)候的是高電平,第一個(gè)邊沿就是從高變到低,所以是下降沿;
CPHA=1,表示第二個(gè)邊沿:
對于CPOL=0,idle時(shí)候的是低電平,第二個(gè)邊沿就是從高變到低,所以是下降沿;
對于CPOL=1,idle時(shí)候的是高電平,第一個(gè)邊沿就是從低變到高,所以是上升沿;
用圖文形式表示,更加容易看懂:
此處,再多解釋一下可能會(huì)遇到的CKP和CKE,其是Microchip的PIC系列芯片中的說法。
(1)CKP是Clock Polarity Select,就是極性=CPOL:
CKP,雖然名字和CPOL不一樣,但是都是指時(shí)鐘相位的選擇,定義也一樣:
CKP: Clock Polarity Select bit
1 = Idle state for clock (CK) is a high level
0 = Idle state for clock (CK) is a low level
所以不多解釋。
(2)CKE是Clock Edge Select,就是相位=CPHA:
CKE: SPI Clock Edge Select bit
1 = Transmit occurs on transition from active to Idle clock state
0 = Transmit occurs on transition from Idle to active clock state
意思是
1 =(數(shù)據(jù))傳輸發(fā)生在時(shí)鐘從有效狀態(tài)轉(zhuǎn)到空閑狀態(tài)的那一時(shí)刻
0 =(數(shù)據(jù))傳輸發(fā)生在時(shí)鐘從空閑狀態(tài)轉(zhuǎn)到有效狀態(tài)的那一時(shí)刻
其中,數(shù)據(jù)傳輸?shù)臅r(shí)刻,即圖中標(biāo)出的“數(shù)據(jù)transmit傳輸?shù)臅r(shí)刻”,很明顯,該時(shí)刻是一個(gè)時(shí)鐘和下一個(gè)時(shí)鐘之間交界的地方,對應(yīng)的不論是上升沿還是下降沿,都與我們前面提到的CPHA=數(shù)據(jù)采樣的時(shí)刻,的邊沿方向所相反。
所以,此處的CKE,正好與CPHA相反。
所以,CKP和CKE所對應(yīng)的取值的含義為:
When CKP = 0:
CKE=1 => Data transmitted on rising edge of SCK
CKE=0 => Data transmitted on falling edge of SCK
When CKP = 1:
CKE=1 => Data transmitted on falling edge of SCK
CKE=0 => Data transmitted on rising edge of SCK
下面再列出其他一些地方找到的,常見的SPI的四種模式的時(shí)序圖,供參考:
【如何看懂和記憶CPOL和CPHA】
所以,關(guān)于在其他地方介紹的,看似多么復(fù)雜難懂難記憶的CPOL和CPHA,其實(shí)經(jīng)過上面解釋,就肯容易看懂了:
去看時(shí)序圖,如果起始的始終SCLK的電平是0,那么CPOL=0,如果是1,那么CPOL=1,
然后看數(shù)據(jù)采樣時(shí)刻,即時(shí)序圖數(shù)據(jù)線上的數(shù)據(jù)那個(gè)矩形區(qū)域的中間所對應(yīng)的位置,對應(yīng)到上面SCLK時(shí)鐘的位置,對應(yīng)著是第一個(gè)邊沿或是第二個(gè)邊沿,即CPHA是0或1。(對應(yīng)的是上升沿還是還是下降沿,要根據(jù)對應(yīng)的CPOL的值,才能確定)。
評論