複製鏈接
請複製以下鏈接發送給好友

串行外設接口

鎖定
串行外設接口(Serial Peripheral Interface)是一種同步外設接口,它可以使單片機與各種外圍設備以串行方式進行通信以交換信息。外圍設備包括Flash RAM,網絡控制器、LCD顯示驅動器、A/D轉換器和MCU等。
中文名
串行外設接口
外文名
serial peripheral interface
簡    稱
SPI

串行外設接口發展

串行外設接口總線(SPI)最早由Motorola首先提出的全雙工三線同步串行外圍接口,採用主從模式(Master—Slave)架構,支持一個或多個Slave設備,首先出現在其M68系列單片機中,由於其簡單實用、性能優異,又不牽涉到專利問題,因此許多廠家的設備都支持該接口,廣泛應用於MCU和外設模塊如E2PROM、ADC、顯示驅動器等的連接。需要注意的是,SPI接口是一種事實標準,大部分廠家都是參照Motorola的SPI接口定義來設計的,並在此基礎上衍生出多種變種,因此,不同廠家產品的SPI接口在使用上可能存在一定差別,有的甚至無法直接互連(需要軟件進行必要的修改),在實際中需仔細閲讀廠家文檔確認。 [1] 

串行外設接口原理

利用SPI可以在軟件的控制下構成各種系統。如一個主控制器和幾個從控制器、幾個從控制器相互連接構成多主機系統(分佈式系統)、一個主控制器和一個或幾個從I/O設備所構成的各種系統等。在大多數應用場合,可以使用一個主控制器作為主控機來控制數據,並向一個或幾個從外圍器件傳送該數據。從器件只有在主控機發命令時才能接收或發送數據,其數據的傳輸格式是高位(MSB)在前,低位(LSB)在後。單主系統只有一台主控制器,其他均為從控制器。 [2] 

串行外設接口組成結構

SPI系統可直接與各個廠家生產的多種標準外圍器件接口,它只需4條線:串行時鐘線(SCK)、主機輸入/從機輸出數據線(MISO)、主機輸出/從機輸入數據線(MOSI)和低電平有效的從機選擇線(NSS)。
(1)MISO:主設備輸入/從設備輸出引腳。該引腳在從模式下發送數據,在主模式下接收數據。
(2)MOSI:主設備輸出/從設備輸入引腳。該引腳在主模式下發送數據,在從模式下接收數據。
(3)SCK:串口時鐘,作為主設備的輸出,從設備的輸入。
(4)NSS:從設備選擇。這是一個可選的引腳,用來選擇主/從設備。它的功能是用來作為片選引腳,讓主設備可以單獨地與特定從設備通信,避免數據線上的衝突。
SPI是一個環形總線結構,由NSS、SCK、MISO、MOSI構成,NSS引腳設置為輸入,MOSI引腳相互連接,MISO引腳相互連接,數據在主和從之間串行地傳輸(MSB位在前)。 [3] 

串行外設接口工作方式

串行外設接口主動方式

SPI有主從兩種工作方式。在主模式下,SPI為其他節點的SPICLK引腳提供串行時鐘,數據從SPISIMO引腳輸出,從SPISOMI引腳輸入。主控制器寫人數據到寄存器SPITXBUF便啓動發送,數據從SPITXBUF傳送到SPIDAT中再通過SPISIMO引腳發送出去,先發送最高位;同時,主控制器接收到的數據通過SPISOMI引腳移入寄存器SPIDAT的最低位。當選定數量的位數發送完時,整個數據發送完畢,緊接着接收完畢(通過SPISIMO引腳發送的SPIDAT的數據最高位每移出一位後就會從SPISOMI引腳移人一位到SPIDAT最低位)。首先將接收到的數據傳送到寄存器SPIRXBUF,並進行右對齊,供CPU讀取。

串行外設接口從動方式

在從動方式下,數據從SPISOMI引腳移出並由SPISIMO引腳移入。SPICLK引腳作為串行移位時鐘的輸入。
為了接收數據,串行外設接口等待網絡主控制器送出的SPICLK信號,然後它將SPISIMO引腳上的數據移入到SPIDAT寄存器。如果從控制器同時也發送數據,則必須在SPICLK信號開始之前把數據寫入到SPIRXBUF或SPIDAT寄存器中。 [4] 
參考資料
  • 1.    陳啓軍,餘有靈,張偉等編著.嵌入式系統及其應用:基於CORTEX-M3內核和STM32F系統微控制器的系統設計與開發(第2版):同濟大學出版社,2014.02
  • 2.    李雲鋼 鄒逢興 龍志強編著.普通高等教育“十一五”國家級規劃教材 單片機原理與應用系統設計:中國水利水電出版社,2008年01月
  • 3.    張淑清,張立國,金海龍等編著.嵌入式單片機STM32設計及應用技術:國防工業出版社,2015.05
  • 4.    謝芳芳主編.數字信號處理技術及應用:科學出版社,2009.09