回覆列表
  • 1 # 玩轉嵌入式

    SPI是微控制器外設電路中常用的一種通訊方式,適用於近距離通訊,通常用於晶片間的通訊,有四根線。在SPI通訊中匯流排時鐘和匯流排相位也兩個比較重要的概念,一般在使用SPI通訊時都使用預設設定,所以容易把這兩個引數忽略。和大家分享一下SPI通訊、時鐘極性以及時鐘相位的基礎知識。

    什麼是SPI通訊匯流排

    SPI匯流排的英文全稱為S“Serial Periphral Interface”,意思是序列外設介面,由於通訊距離比較短,適用於晶片級別的短距離通訊。SPI的通訊分為主機和從機,屬於高速全雙工的匯流排通訊方式,SPI有四根線,分別為:

    MISO:主裝置輸入與從裝置輸出線;

    MOSI:主裝置輸出與從裝置輸入線;

    SCK:串行同步時鐘訊號線;

    SS:從機片選訊號線,也用CS來表示。

    SPI匯流排的主機和從機的系統連線圖如下圖所示。

    SPI匯流排時鐘的極性含義解釋

    SPI的時鐘極性用CPOL來表示。SPI匯流排通訊的時基基準是時鐘訊號線SCK,SCK既有高電平,又有低電平,SPI的時鐘極性用來表示時鐘訊號在空閒時是高電平還是低電平。情況說明如下:

    當CPOL=0:SCK訊號線在空閒時為低電平;

    當CPOL=1:SCK訊號線在空閒時為高電平;

    SPI匯流排時鐘的相位含義解釋

    時鐘的相位用CPHA來表示,用來決定何時進行訊號取樣,在第一個跳變沿還是第二個跳變沿,至於是上升沿還是下降沿則由CPOL相位極性來表示。下面分兩種情況來介紹。如下圖所示。

    上圖表示CPHA=1時的情形,即在SCK時鐘的第二個邊沿進行資料的取樣,至於是上升沿取樣還是下降沿取樣取決於時鐘極性CPOL的值。如果CPHA=1,CPOL=1,則在SCK時鐘的第二個邊沿為上升沿時進行資料取樣。如果CPHA=1,CPOL=0,則在SCK時鐘的第二個邊沿為下降沿時進行資料取樣。

    CPHA=0時的情形如下圖所示。

    上圖表示CPHA=0時的情形,即在SCK時鐘的第一個邊沿進行資料的取樣,至於是上升沿取樣還是下降沿取樣取決於時鐘極性CPOL的值。如果CPHA=0,CPOL=1,則在SCK時鐘的第一個邊沿為下降沿時進行資料取樣。如果CPHA=0,CPOL=0,則在SCK時鐘的第一個邊沿為上升沿時進行資料取樣。

    總結一下,SPI的時鐘極性決定了SCK在空閒時是低電平還是高電平;而相位極性則決定了在第一個邊沿還是第二個邊沿進行資料取樣。SPI的時鐘極性CPOL和相位極性CPHA是相互影響相互決定的,以上概念可能很繞口難以理解,但是對SPI進行一次程式設計之後,所有的內容都好理解了。

  • 中秋節和大豐收的關聯?
  • 黨員示範崗應示範什麼?