SPI通信協議基礎
文章目錄
引言
正文
串行與并行通信
SPI通信簡介
SPI如何運作?
時鐘
從機選擇
多個從機
MOSI和MISO
SPI數據傳輸步驟
SPI的優缺點
優點
缺點
好文推薦參考
引言
當您將微控制器連接到傳感器,顯示器或其他模塊時,您是否考慮過這兩種設備如何相互通信?他們到底在說什么?他們如何互相了解?
電子設備之間的通信就像人類之間的通信。雙方都需要說相同的語言。在電子學中,這些語言稱為 通信協議。對我們來說幸運的是,在構建大多數DIY電子產品項目時,我們只需要知道一些通信協議即可。
首先,我們將從有關電子通信的一些基本概念開始,然后詳細說明SPI的工作原理。
SPI,I2C和UART比USB,以太網,藍牙和WiFi等協議要慢很多,但它們更簡單,使用的硬件和系統資源也更少。SPI,I2C和UART非常適用于微控制器之間以及不需要傳輸大量高速數據的微控制器與傳感器之間的通信。
正文
串行與并行通信
電子設備 通過物理連接在設備之間的電線發送數據位來相互通信 。有點像單詞中的字母,除了不是26個字母(英語字母中的字母)外,位是二進制的,只能是1或0。通過電壓的快速變化,位從一個設備轉移到另一個設備。在以5 V工作的系統中,0位作為0 V的短脈沖進行通信,而1位通過5 V的短脈沖進行通信。
數據位可以并行或串行形式傳輸。在并行通信中,數據位通過一條單獨的導線同時全部發送。下圖顯示了二進制(01000011)中字母“ C”的并行傳輸:
在串行通信中,位通過單根線一一發送。下圖顯示了二進制(01000011)中字母“ C”的串行傳輸:
SPI通信簡介
SPI是許多不同設備使用的通用通信協議。例如, SD卡模塊, RFID卡讀取器模塊和 2.4 GHz無線發送器/接收器 均使用SPI與微控制器通信。
SPI的一個獨特優勢是可以無中斷傳輸數據??梢栽谶B續流中發送或接收任意數量的位。使用I2C和UART,數據以數據包的形式發送,限制為特定位數。開始和停止條件定義了每個數據包的開始和結束,因此數據在傳輸過程中被中斷。
通過SPI通信的設備處于主從關系。主設備是控制設備(通常是微控制器),而從設備(通常是傳感器,顯示器或存儲芯片)從主設備獲取指令。SPI的最簡單配置是一個單主機,一個從機系統,但是一個主機可以控制多個從機(下面有更多介紹)。
MOSI(主機輸出/從機輸入) –主機將數據發送到從機的線路。
MISO(主機輸入/從機輸出) –從機將數據發送到主機的線路。
SCLK(時鐘) –時鐘信號線。
SS / CS(從站選擇/芯片選擇) –主站用于選擇向其發送數據的從站的線路。
實際上,從站的數量受系統負載電容的限制,這降低了主機在電壓電平之間準確切換的能力。
SPI如何運作?
時鐘信號將主設備的數據位輸出同步到從設備的位采樣。每個時鐘周期傳輸一位數據,因此數據傳輸的速度取決于時鐘信號的頻率。由于主機配置并生成時鐘信號,因此SPI通信始終由主機啟動。
設備共享時鐘信號的任何通信協議都稱為 同步。 SPI是一種同步通信協議。還有一些 異步 方法不使用時鐘信號。例如,在UART通信中,雙方都設置為預先配置的波特率,該波特率決定了數據傳輸的速度和時序。
可以使用時鐘極性和時鐘相位的屬性來修改SPI中的時鐘信號。這兩個屬性共同定義了何時輸出位以及何時對其進行采樣。主機可以設置時鐘極性,以允許在時鐘周期的上升沿或下降沿輸出和采樣位??梢栽O置時鐘相位,以便在時鐘周期的第一沿或第二沿進行輸出和采樣,而不管它是上升還是下降。
主機可以通過將從機的CS / SS線設置為低電壓電平來選擇要與之通信的從機。在空閑,非傳輸狀態下,從選擇線保持在高電壓電平。主機上可能有多個CS / SS引腳,這允許多個從機并行連接。如果僅存在一個CS / SS引腳,則可以通過菊花鏈將多個從機連接到主機。
可以將SPI設置為與單個主機和單個從機一起運行,并且可以與由單個主機控制的多個從機一起設置。有兩種方法可以將多個從站連接到主站。如果主機具有多個從機選擇引腳,則從機可按以下方式并聯:
如果只有一個從設備選擇引腳可用,則可以通過以下方式菊花鏈連接從設備:
主機通過MOSI線以串行方式將數據發送到從機。從機通過MOSI引腳接收主機發送的數據。從主機發送到從機的數據通常先發送最高有效位。
從機也可以通過MISO線串行將數據發送回主機。從從機發送回主機的數據通常先發送最低有效位。
主機輸出時鐘信號:
主機將SS / CS引腳切換到低電壓狀態,從而激活從機:
主機沿著MOSI線一次將數據發送給從機。從站讀取接收到的位:
如果需要響應,則從機沿著MISO線一次將數據返回一位給主機。主機讀取接收到的位:
SPI的優缺點
使用SPI有一些優點和缺點,如果在不同的通信協議之間進行選擇,則應根據項目要求知道何時使用SPI:
沒有起始位和停止位,因此數據可以連續流傳輸而不會中斷
沒有像I2C這樣復雜的從站尋址系統
數據傳輸速率比I2C更高(幾乎快兩倍)
分開的MISO和MOSI線路,因此可以同時發送和接收數據
使用四根線(I2C和UART使用兩根線)
沒有確認已成功接收數據的確認(I2C擁有此功能)
沒有任何形式的錯誤檢查,如UART中的奇偶校驗位
只允許一個主機
好文推薦參考
BASICS OF THE SPI COMMUNICATION PROTOCOL
SPI Explained
Introduction to SPI Interface
谷歌搜索
內容擴充中…
TCP/IP 單片機 硬件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。