串列外設接口

串列外設接口

串列外設接口(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接口在使用上可能存在一定差別,有的甚至無法直接互連(需要軟體進行必要的修改),在實際中需仔細閱讀廠家文檔確認。

原理

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

組成結構

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

工作方式

主動方式

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暫存器中。

相關詞條

熱門詞條

聯絡我們