怎樣理解SPI總線時(shí)鐘的極性(CPOL)與相位(CPHA)?
在單片機(jī)與外圍設(shè)備的通信中,SPI總線是一種常用的通信方式。SPI是英文"Serial Periphral Interface"的縮寫,中文翻譯為"串行外圍設(shè)備接口"。今天這篇文章,我們就來(lái)談?wù)凷PI通信的原理,并詳細(xì)討論下總線時(shí)鐘的極性與相位。

SPI(Serial Periphral Interface)最早是由摩托羅拉公司設(shè)計(jì)并實(shí)現(xiàn),它是一種高速的、全雙工的通信總線,采用主機(jī)(Master)-從機(jī)(Slave)的方式進(jìn)行通信。SPI占用芯片的四個(gè)引腳,也就是說(shuō)采用四條信號(hào)線來(lái)進(jìn)行通信。這四條線分別是:主設(shè)備輸入與從設(shè)備輸出線(Master In Slave Out,MISO);主設(shè)備輸出與從設(shè)備輸入線(Master Out Slave In,MOSI);串行同步時(shí)鐘信號(hào)線(Serial Clock,SCK);外圍設(shè)備片選信號(hào)線(Slave Selection,SS)。
SPI總線的主機(jī)和從機(jī)都有一個(gè)移位寄存器,當(dāng)主機(jī)向自己的移位寄存器寫入數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)通過MOSI信號(hào)線進(jìn)入到從機(jī)的移位寄存器;同時(shí),從機(jī)移位寄存器里的數(shù)據(jù),通過MISO信號(hào)線進(jìn)入到主機(jī)的移位寄存器。這樣,主機(jī)和從機(jī)就完成了一次數(shù)據(jù)交換。下面這張圖,是SPI通信的簡(jiǎn)明原理圖:

SPI數(shù)據(jù)的傳輸是在串行同步時(shí)鐘信號(hào)(Serial Clock,SCK)的控制下進(jìn)行的。主機(jī)的時(shí)鐘發(fā)生器一方面控制主機(jī)的移位寄存器,另一方面通過從機(jī)的SCK信號(hào)線來(lái)控制從機(jī)的移位寄存器,從而保證主機(jī)與從機(jī)的數(shù)據(jù)交換是同步進(jìn)行的。
SPI串行同步時(shí)鐘可以設(shè)置為不同的極性(Clock Polarity ,CPOL)與相位(Clock Phase ,CPHA)。
時(shí)鐘的極性(CPOL)用來(lái)決定在總線空閑時(shí),同步時(shí)鐘(SCK)信號(hào)線上的電位是高電平還是低電平。當(dāng)時(shí)鐘極性為0時(shí)(CPOL=0),SCK信號(hào)線在空閑時(shí)為低電平;當(dāng)時(shí)鐘極性為1時(shí)(CPOL=1),SCK信號(hào)線在空閑時(shí)為高電平;
時(shí)鐘的相位(CPHA)用來(lái)決定何時(shí)進(jìn)行信號(hào)采樣。
當(dāng)時(shí)鐘相位為1時(shí)(CPHA=1),在SCK信號(hào)線的第二個(gè)跳變沿進(jìn)行采樣;這里的跳變沿究竟是上升沿還是下降沿?取決于時(shí)鐘的極性。當(dāng)時(shí)鐘極性為0時(shí),取下降沿;當(dāng)時(shí)鐘極性為1時(shí),取上升沿;如下圖:

當(dāng)時(shí)鐘相位為0時(shí)(CPHA=0),在SCK信號(hào)線的第一個(gè)跳變沿進(jìn)行采樣。跳變沿同樣與時(shí)鐘極性有關(guān):當(dāng)時(shí)鐘極性為0時(shí),取上升沿;當(dāng)時(shí)鐘極性為1時(shí),取下降沿;如下圖:

在STM32系列單片機(jī)中,可以通過SPI_CR1寄存器來(lái)設(shè)置時(shí)鐘的極性(CPOL)與相位(CPHA)。
好了,關(guān)于SPI通信就先介紹到這里
-
Origin(Pro):學(xué)習(xí)版的窗口限制【數(shù)據(jù)繪圖】 2020-08-07
-
如何卸載Aspen Plus并再重新安裝,這篇文章告訴你! 2020-05-29
-
CAD視口的邊框線看不到也選不中是怎么回事,怎么解決? 2020-06-04
-
教程 | Origin從DSC計(jì)算焓和比熱容 2020-08-31
-
CAD外部參照無(wú)法綁定怎么辦? 2020-06-03
-
CAD中如何將布局連帶視口中的內(nèi)容復(fù)制到另一張圖中? 2020-07-03
