SPI通信協議的基礎(轉)

原文連結
http://www.circuitbasics.com/basics-of-the-spi-communication-protocol/?fbclid=IwAR2yXzVGr3ee5ATva9jnhe2BZptN0GMehZIqwdMxBQxPNw1XE7UC_4rtA8s

SPI通信協議的基礎

Posted by Circuit Basics | DIY Electronics | 43 

Basics of the SPI Communication Protocol

將微控制器連接到傳感器,顯示器或其他模塊時,您是否考慮過兩個設備如何相互通信?他們到底在說什麼?他們如何能夠相互理解?

電子設備之間的通信就像人類之間的通信。雙方都需要說同一種語言。在電子學中,這些語言稱為通信協議。幸運的是,在構建大多數DIY電子項目時,我們只需要了解一些通信協議。在本系列文章中,我們將討論三種最常見協議的基礎知識:串行外設接口(SPI),內部集成電路(I2C)和通用異步接收器/發送器(UART)驅動通信。

首先,我們將從一些關於電子通信的基本概念開始,然後詳細解釋SPI的工作原理。在下一篇文章中,我們將討論UART驅動的通信,在第三篇文章中,我們將深入探討I2C。

SPI,I2C和UART比USB,以太網,藍牙和WiFi等協議慢得多,但它們更簡單,使用的硬件和系統資源也更少。 SPI,I2C和UART非常適用於微控制器之間以及微控制器和傳感器之間的通信,在這些傳感器中不需要傳輸大量高速數據。

SERIAL VS. PARALLEL COMMUNICATION
串口VS.並行通信

電子設備通過物理連接在設備之間的導線發送數據位來相互通信。有點像一個字母中的字母,除了26個字母(英文字母表中),一個位是二進制的,只能是1或0.通過電壓的快速變化,位從一個設備傳輸到另一個設備。在工作電壓為5V的系統中,0位作為0 V的短脈衝通信,1位通過5 V的短脈衝通信。

數據位可以並行或串行形式傳輸。在並行通信中,數據位是同時發送的,每個都通過單獨的線路。下圖顯示了二進制(01000011)中字母“C”的並行傳輸:

Introduction to SPI - Parallel Transmission of One Byte

在串行通信中,通過單線逐個發送這些位。下圖顯示了二進制(01000011)中字母“C”的串行傳輸:

Introduction to SPI - Serial Transmission of one byte

INTRODUCTION TO SPI COMMUNICATION
SPI通信簡介

SPI是許多不同設備使用的通用通信協議。例如,SD卡模塊,RFID讀卡器模塊和2.4 GHz無線發送器/接收器都使用SPI與微控制器通信。

SPI的一個獨特優勢是可以不間斷地傳輸數據。可以連續流發送或接收任意數量的比特。使用I2C和UART,數據以數據包形式發送,限制為特定的位數。啟動和停止條件定義每個數據包的開始和結束,因此數據在傳輸過程中被中斷。

通過SPI通信的設備處於主從關係。主設備是控制設備(通常是微控制器),而從設備(通常是傳感器,顯示器或存儲器芯片)接收來自主設備的指令。最簡單的SPI配置是單主機,單從機系統,但是一個主機可以控制多個從機(下面將詳細介紹)。

Introduction to SPI - Master and Slave

MOSI (Master Output/Slave Input) – 主機將數據發送到從機的線路。

MISO (Master Input/Slave Output) – 從站將數據發送到主站的行。

SCLK (Clock) – 時鐘信號線。

SS/CS (Slave Select/Chip Select) – 主線路選擇哪個從機發送數據。

Basics of the SPI Communication Protocol - Specifications Table


*實際上,從設備的數量受到系統負載電容的限制,這降低了主設備在電壓電平之間精確切換的能力。

HOW SPI WORKS
SPI如何工作

THE CLOCK
時脈

時鐘信號將來自主設備的數據位輸出與從設備的位採樣同步。在每個時鐘週期傳輸一位數據,因此數據傳輸的速度由時鐘信號的頻率決定。由於主設備配置並生成時鐘信號,因此SPI始終始終啟動SPI通信。

設備共享時鐘信號的任何通信協議稱為同步。 SPI是一種同步通信協議。還有一些不使用時鐘信號的異步方法。例如,在UART通信中,雙方都設置為預先配置的波特率,該波特率決定數據傳輸的速度和時間。

SPI中的時鐘信號可以使用時鐘極性和時鐘相位的屬性進行修改。這兩個屬性協同工作以定義何時輸出位以及何時對它們進行採樣。時鐘極性可由主機設置,以允許在時鐘週期的上升沿或下降沿輸出和採樣位。可以設置時鐘相位,以便在時鐘週期的第一個邊沿或第二個邊沿上進行輸出和採樣,無論是上升還是下降。

SLAVE SELECT

主設備可以通過將從設備的CS / SS線設置為低電壓電平來選擇要通話的從設備。在空閒,非傳輸狀態中,從選擇線保持在高電壓電平。主機上可能有多個CS / SS引腳,允許多個從機並聯連接。如果只有一個CS / SS引腳,則可以通過菊花鏈將多個從器件連接到主器件。

MULTIPLE SLAVES

SPI可以設置為使用單個主設備和單個從設備進行操作,並且可以通過由單個主設備控制的多個從設備進行設置。有兩種方法可以將多個從站連接到主站。如果主機有多個從機選擇引腳,則從機可以並聯連接,如下所示:

Introduction to SPI - Multiple Slave Configuration Separate Slave Select

如果只有一個從選擇引腳可用,則從器件可以 daisy-chained ,如下所示:

Introduction to SPI - Multiple Slave Configuration Daisy Chained

MOSI AND MISO

主機通過MOSI線串行發送數據到從機。從器件接收MOSI引腳上的主器件發送的數據。從主設備發送到從設備的數據通常首先以最高有效位發送。

從機還可以通過串行的MISO線路將數據發送回主機。從從設備發送回主設備的數據通常首先以最低有效位發送。

STEPS OF SPI DATA TRANSMISSION

1. 主機輸出時鐘信號:

Introduction to SPI - Data Transmission Diagram Clock Signal

2. 主器件將SS / CS引腳切換到低電壓狀態,從而激活從器件:

Introduction to SPI - Data Transmission Diagram Slave Select Activation

3. 主設備沿MOSI線一次一位地向從設備發送數據。從機在接收到的位時讀取這些位:

Introduction to SPI - Data Transmission Diagram Master to Slave Data Transfer

4. 如果需要響應,則從器件沿著MISO線一次一位地向主器件返回數據。主機在接收到的位時讀取這些位:

Introduction to SPI - Data Transmission Diagram Slave to Master Data Transfer

SPI的優點和缺點

使用SPI有一些優點和缺點,如果在不同的通信協議之間進行選擇,您應該根據項目的要求知道何時使用SPI:

ADVANTAGES 好處

  • 沒有啟動和停止位,因此數據可以連續流式傳輸而不會中斷
  • 沒有復雜的從機尋址系統,如I2C
  • 比I2C更高的數據傳輸速率(幾乎快兩倍)
  • 單獨的MISO和MOSI線,因此可以同時發送和接收數據

DISADVANTAGES 劣勢

  • 使用四根線(I2C和UART使用兩根)
  • 無法確認數據已成功接收(I2C已執行此操作)
  • 沒有形式的錯誤檢查,如UART中的奇偶校驗位
  • 僅允許單個主人

發佈留言