-
串行外設接口
鎖定
- 中文名
- 串行外設接口
- 外文名
- 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有主從兩種工作方式。在主模式下,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]