SPI通信


SPI(Serial Peripheral Interface)串行外設接口

1 SPI時鍾信號的相位與極性

  SPI接口由CPOL和CPHA設置四種不同傳輸格式的時序。其中:

    CPOL(Clock Polarity)時鍾極性

    CPHA(Clock Phase)時鍾相位

    CPOL決定時鍾信號SCK的有效脈沖方式  0:表示空閑狀態時,SCK保持低電平;1:表示空閑狀態時,SCK保持高電平;

    CPHA決定數據線MOSI、MISO什么時候輸出數據或什么時候采集數據 0:表示數據采樣從第一個時鍾邊沿開始;1:表示數據采樣從第二個時鍾邊沿開始。

    一 (CP0L=0;CPHA=0):

    

    此方式下,空閑狀態SCK處於低電平;數據采樣是在第1個邊沿,也就是SCK電平到高電平的跳變,由圖可以看出每一個上升沿到來之前數據已經准備好,所以上升沿進行數據采集;同時可以看出SCK從高電平向低電平跳變時進行數據發送,即下降沿進行數據發送

    二 (CPOL=1;CPHA=0):

    

 

    此方式下,空閑狀態SCK處於高電平;數據采樣是在第1個邊沿,也就是SCK電平到低電平的跳變,由圖可以看出每一個下降沿到來之前數據已經准備好,所以下降沿進行數據采集;同時可以看出SCK從低電平向高電平跳變時進行數據發送,即上升沿進行數據發送

    三 (CPOL=0;CPHA=1):

    

    此方式下,空閑狀態SCK處於低電平;數據發送是在第一個邊沿,也就是SCK電平到高電平的跳變,由圖可以看出每個上升沿到來之前數據還未准備好,所以上升沿進行數據發送;同時可以看出當下降沿到來時數據已經准備完成,可以進行數據采集,所以下降沿進行數據采集

    四 (CPOL=1;CPHA=1):

    

    此方式下,空閑狀態SCK處於高電平;數據發送是在第一個邊沿,也就是SCK電平到低電平的跳變,由圖可以看出每一個下降沿到來之前數據還未准備好,所以下降沿進行數據發送;同時可以看出當上升沿到來時數據已經准備完成,可以進行數據采集,所以上升沿進行數據采集

 

2 總結:數據與時鍾的相位關系表

CPOL/CPHA的設定 第一位數據的輸出 其它位的輸出 數據采樣
CPOL=0,CPHA=0 在第一個SCK上升沿之前 SCK下降沿 SCK上升沿
CPOL=1,CPHA=0 在第一個SCK下降沿之前 SCK上升沿 SCK下降沿
CPOL=0,CPHA=1 第一個SCK上升沿 SCK上升沿 SCK下降沿
CPOL=1,CPHA=1 第一個SCK下降沿 SCK下降沿 SCK上升沿

 

 

  

 

 

 

 

3 數據傳輸分析

  主機移位寄存器中的一個數據通過MOSI傳到從機移位寄存器(即寫操作);同時,從機移位寄存器中的一個數據通過MISO傳到主機移位寄存器(即讀操作);讀寫操作同時進行。

  1.如果主機只進行寫操作,主機只需忽略接收到的字節

  2.如果主機要讀取從機的一個字節,必須先發送一個空字節0xFF,才能使從機中的數據移到主機。

    注:所謂的空字節,SPI通信都是由主機發起的,想要從從機讀取數據,就必須給它提供時鍾,而SPI主機產生時鍾的方法,一般都是通過SPI_DR寄存器寫值,這里寫入0xFF表示要發送0xFF這個數據了,SPI就會產生SCK,輸出給從機,從而給從機提供時鍾。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM