新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > SPI總線之CPOL CPHA

        SPI總線之CPOL CPHA

        作者: 時間:2016-12-15 來源:網絡 收藏
        【背景】

        最近在看關于Silicon Labs的C8051F347的某個驅動中,關于SPI部分初始化的代碼,看到其對于SPI的設置為CPOL=1,CPHA=0,對于CPOL及CPHA的含義不了解,想要搞懂,這兩個參數到底是什么意思,以及為何要這么設置。所以才去找了SPI的極性和相位的相關資料,整理如下。

        本文引用地址:http://www.104case.com/article/201612/330521.htm

        【SPI基礎知識簡介】

        設備與設備之間通過某種硬件接口通訊,目前存在很多種接口,SPI接口是其中的一種。

        SPI中分Master主設備和Slave從設備,數據發送都是由Master控制。

        一個master可以接一個或多個slave。

        常見用法是一個Master接一個slave,只需要4根線:

        SCLK:Serial Clock,(串行)時鐘

        MISO:Master In Slave Out,主設備輸入,從設備輸出

        MOSI:Master Out Slave In,主設備輸出,從設備輸入

        SS: Slave Select,選中從設備,片選


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

        【SPI相關的縮寫或說法】

        先簡單說一下,關于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,分別稱為:

        Leading edge=前一個邊沿=第一個邊沿,對于開始電壓是1,那么就是1變成0的時候,對于開始電壓是0,那么就是0變成1的時候;

        Trailing edge=后一個邊沿=第二個邊沿,對于開始電壓是1,那么就是0變成1的時候(即在第一次1變成0之后,才可能有后面的0變成1),對于開始電壓是0,那么就是1變成0的時候;


        本文采用如下用法:

        極性=CPOL

        相位=CPHA

        SCLK=時鐘

        第一個邊沿和第二個邊沿


        【SPI的相位和極性】

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

        Mode 0CPOL=0, CPHA=0
        Mode 1CPOL=0, CPHA=1
        Mode 2CPOL=1, CPHA=0
        Mode 3CPOL=1, CPHA=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;


        上一頁 1 2 3 下一頁

        關鍵詞: SPI總線CPOLCPH

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 兴化市| 宾阳县| 延边| 南宁市| 土默特右旗| 珲春市| 蕉岭县| 武夷山市| 江口县| 东宁县| 调兵山市| 莱芜市| 杭州市| 抚松县| 河曲县| 陵川县| 体育| 青铜峡市| 门源| 靖边县| 丹江口市| 广饶县| 大城县| 东源县| 瑞安市| 彝良县| 全椒县| 库车县| 深圳市| 新源县| 鄄城县| 乐山市| 玉田县| 淅川县| 延安市| 旅游| 麦盖提县| 崇明县| 牡丹江市| 庆元县| 襄城县|