嵌入式開發通信協議——SPI


一、SPI簡介

  SPI 的全稱是"Serial Peripheral Interface",意為串行外圍接口,是Motorola 首先在其MC68HCXX 系列處理器上定義的。SPI 接口主要應用在EEPROM、FLASH、實時時鍾、AD 轉換器,還有數字信號處理器和數字信號解碼器之間。SPI是一種高速,全雙工,同步的通信總線,並且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB 的布局上節省空間,提供方便,正是出於這種簡單易用的特性,如今越來越多的芯片集成了這種通信協議,比如STM32 系列芯片等。SPI內部結構圖如下:

    

 

二、SPI通信協議詳情

  如上圖所示,SPI接口一般使用4條線進行通信,使用3條線也可以進行SPI通信(單向傳輸),其中3 條為SPI 總線(MISO、MOSI、SCLK),一條為SPI 片選信號線(CS)。其功能作用分別如下:

  (1)MISO:主設備輸入/從設備輸出引腳。主機從這條信號線讀入數據,從機的數據由這條信號線輸出到主機,即在這條線上數據的方向為:從機到主機

  (2)MOSI:主設備輸出/從設備輸入引腳。主機的數據從這條信號線輸出,從機由這條信號線讀入主機發送的數據,即這條線上數據的方向為:主機到從機

  (3)SCLK:時鍾信號線,用於通信數據同步。它由主機產生,決定了通信的速率,不同的設備支持的最高時鍾頻率不一樣,如STM32 的SPI 時鍾頻率最大為fpclk/2,兩個設備之間通訊時,通訊速率受限於低速設備

  (4)CS:從設備選擇信號線,常稱為片選信號線,也稱為NSS 或CS,以下用CS表示。當有多個SPI 從設備與SPI 主機相連時,設備的其它信號線SCK、MOSI及MISO 同時並聯到相同的SPI 總線上,即無論有多少個從設備,都共同只使用這3 條總線;而每個從設備都有獨立的這一條CS 信號線,本信號線獨占主機的一個引腳,即有多少個從設備,就有多少條片選信號線。I2C 協議中通過設
備地址來尋址、選中總線上的某個設備並與其進行通訊;而SPI 協議中沒有設備地址,它使用CS 信號線來尋址,當主機要選擇從設備時,把該從設備的CS 信號線設置為低電平,該從設備即被選中,即片選有效,接着主機開始與被選中的從設備進行SPI 通信。所以SPI 通信以NSS 線置低電平為開始信號,以CS 線被拉高作為結束信號

  總而言之,當有多個設備使用SPI進行通信時,SCK、MOSI、MISO三條線可共用,CS線單獨掛接。(簡稱:三加一)。

 

三、SPI使用方法

  SPI 使用MOSI 及MISO 信號線來傳輸數據,使用SCK 信號線進行數據同步。MOSI 及MISO 數據線在SCK 的每個時鍾周期傳輸一位數據,且數據輸入輸出是同時進行的。數據傳輸時, MSB 先行或LSB 先行並沒有作硬性規定,但要保證兩個SPI 通訊設備之間使用同樣的協定,一般都會采用MSB 先行模式。

  從上圖可以看出,主機和從機都有一個串行移位寄存器,主機通過向它的SPI 串行寄存器寫入一個字節來發起一次傳輸。寄存器通過MOSI 信號線將字節傳送給從機,從機也將自己的移位寄存器中的內容通過MISO 信號線返回給主機。這樣,兩個移位寄存器中的內容就被交換。外設的寫操作和讀操作是同步完成的。如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必須發送一個空字節來引發從機的傳輸

 

四、SPI與IIC的比較

  (1)SPI 主要特點有: 可以同時發出和接收串行數據; 可以當作主機或從機工作; 提供頻率可編程時鍾; 發送結束中斷標志; 寫沖突保護; 總線競爭保護等。

  (2)與I2C 總線相比它的缺點是:沒有指定的流控制,沒有應答機制確認是否接收到數據。

 

五、SPI總線工作方式(四種)

  SPI 總線有四種工作方式,SPI 模塊為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鍾極性和相位可以進行配置

  時鍾極性( CPOL)對傳輸協議沒有重大的影響。如果CPOL=0,串行同步時鍾的空閑狀態為低電平;如果CPOL=1,串行同步時鍾的空閑狀態為高電平。

  時鍾相位( CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行數據傳輸。如果CPHA=0,在串行同步時鍾的第一個跳變沿(上升或下降)數據被采樣;如果CPHA=1,在串行同步時鍾的第二個跳變沿(上升或下降)數據被采樣。SPI 主模塊和與之通信的外設備時鍾相位和極性應該一致。SPI四種工作方如下圖所示:

      

 

 

 

 

 

 


免責聲明!

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



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