SPI的學習和ESP8266的SPI通訊測試


SPI簡介:

SPI是串行外設接口(Serial Peripheral Interface)的縮寫。SPI,是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便。

 

 

SPI的通信原理:

它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於SPI的設備共有的,它們是:

SCLK, Serial Clock, 主要的作用是 Master 設備往 Slave 設備傳輸時鍾信號, 控制數據交換的時機以及速率;

SS/CS, Slave Select/Chip Select, 用於 Master 設備片選 Slave 設備, 使被選中的 Slave 設備能夠被 Master 設備所訪問;

SDO/MOSI, Serial Data Output/Master Out Slave In, Master 上面也被稱為 Tx-Channel, 作為數據的出口, 主要用於 SPI 設備發送數據;

SDI/MISO, Serial Data Input/Master In Slave Out, Master 上面也被稱為 Rx-Channel, 作為數據的入口, 主要用於SPI 設備接收數據;

其中,CS是從芯片是否被主芯片選中的控制信號,也就是說只有片選信號為預先規定的使能信號時(高電位或低電位),主芯片對此從芯片的操作才有效。這就使在同一條總線上連接多個SPI設備成為可能。另外SPI沒有讀和寫的說法,因為實質上每次SPI是主從設備在交換數據。也就是說,你發一個數據必然會收到一個數據;你要收一個數據必須也要先發一個數據。

 

 

SPI通信模式:

4種不同的模式,不同的從設備可能在出廠是就是配置為某種模式,這是不能改變的;但我們的通信雙方必須是工作在同一模式下,所以我們可以對我們的主設備的SPI模式進行配置,通過CPOL(時鍾極性)和CPHA(時鍾相位)來控制我們主設備的通信模式,具體如下:

Mode0CPOL=0CPHA=0

Mode1CPOL=0CPHA=1

Mode2CPOL=1CPHA=0

Mode3CPOL=1CPHA=1

 

時鍾極性CPOL是用來配置SCLK的電平出於哪種狀態時是空閑態或者有效態,時鍾相位CPHA

是用來配置數據采樣是在第幾個邊沿:

CPHA=0,表示第一個邊沿:

對於CPOL=0閑時是低電平,第一個邊沿就是從低變到高,所以是上升沿;

對於CPOL=1閑時的是高電平,第一個邊沿就是從高變到低,所以是下降沿;

CPHA=1,表示第二個邊沿:

 

對於CPOL=0閑時是低電平,第二個邊沿就是從高變到低,所以是下降沿;

對於CPOL=1閑時是高電平,第一個邊沿就是從低變到高,所以是上升沿;

 

 

另外SCLK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基於SPI的設備中,至少有一個主控設備。這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因為SCLK時鍾線由主控設備控制,當沒有時鍾跳變時,從設備不采集或傳送數據。也就是說,主設備通過對SCLK時鍾線的控制可以完成對通訊的控制。SPI還是一個數據交換協議:因為SPI的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。不同的SPI設備的實現方式不盡相同,主要是數據改變和采集的時間不同,在時鍾信號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。最后,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據。

 

 

 

基於ESP8266SPI通訊測試:

硬件接口:

| Signal              | Slave      | Master |

| ------------------- | ----------- | ---------- |

| SCLK              | GPIO14 | GPIO14 |

| MISO              | GPIO12 | GPIO12 |

| MOSI              | GPIO13 | GPIO13 |

| CS                  | GPIO15 | GPIO15 |

| HANDSHARK | GPIO4  | GPIO4   |

| GND               | GND    | GND        |

利用官方提供的例子,准備兩個ESP8266芯片,一個燒錄主機程序,一個燒錄從機程序:

 

 

對數據進行監視:

 

 完成ESP8266SPI通訊測試。


免責聲明!

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



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