串行外設接口(SPI)

SPI簡介

SPI 是英語 Serial Peripheral interface 的縮寫,顧名思義就是串行外圍設備接口。是 Motorola首先在其 MC68HCXX 系列處理器上定義的。 SPI 接口主要應用在 EEPROM, FLASH,實時時鐘, AD 轉換器,還有數字信號處理器和數字信號解碼器之間。 SPI 是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只佔用四根線,節約了芯片的管腳,同時爲 PCB 的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議。
串行外設接口(SPI)允許芯片與外部設備以半/全雙工、同步、串行方式通信。此接口可以被配置成主模式,併爲外部從設備提供通信時鐘(SCK)。接口還能以多主配置方式工作。它可用於多種用途,包括使用一條雙向數據線的雙線單工同步傳輸,還可使用CRC校驗的可靠通信。

SPI 特徵

● 3線全雙工同步傳輸
● 帶或不帶第三根雙向數據線的雙線單工同步傳輸
● 8或16位傳輸幀格式選擇
● 主或從操作
● 支持多主模式
● 8個主模式波特率預分頻係數(最大爲fPCLK/2)
● 從模式頻率 (最大爲fPCLK/2)
● 主模式和從模式的快速通信
● 主模式和從模式下均可以由軟件或硬件進行NSS管理:主/從操作模式的動態改變
● 可編程的時鐘極性和相位
● 可編程的數據順序, MSB在前或LSB在前
● 可觸發中斷的專用發送和接收標誌
● SPI總線忙狀態標誌
● 支持可靠通信的硬件CRC
─ 在發送模式下, CRC值可以被作爲最後一個字節發送

SPI接口

─ 在全雙工模式中對接收到的最後一個字節自動進行CRC校驗
● 可觸發中斷的主模式故障、過載以及CRC錯誤標誌
● 支持DMA功能的1字節發送和接收緩衝器:產生髮送和接受請求

SPI功能描述

SPI概述

SPI框圖見下圖:
在這裏插入圖片描述
通常SPI通過4個引腳與外部器件相連:
● MISO:主設備輸入/從設備輸出引腳。該引腳在從模式下發送數據,在主模式下接收數據。
● MOSI:主設備輸出/從設備輸入引腳。該引腳在主模式下發送數據,在從模式下接收數據。
● SCK:串口時鐘,作爲主設備的輸出,從設備的輸入
● NSS:從設備選擇。這是一個可選的引腳,用來選擇主/從備。它的功能是用來作爲“片選引腳”,讓主設備可以單獨地與特定從設備通訊,避免數據線上的衝突。從設備的NSS引腳可以由主設備的一個標準I/O引腳來驅動。一旦被使能(SSOE位), NSS引腳也可以作爲輸出引腳,並在SPI處於主模式時拉低;此時,所有的SPI設備,如果它們的NSS引腳連接到主設備的NSS引腳,則會檢測到低電平,如果它們被設置爲NSS硬件模式,就會自動進入從設備狀態。當配置爲主設備、 NSS配置爲輸入引腳(MSTR=1, SSOE=0)時,如果NSS被拉低,則這個SPI設備進入主模式失敗狀態:即MSTR位被自動清除,此設備進入從模式 。

舉例說明

下圖是一個單主和單從設備互連原理 :
在這裏插入圖片描述
1. 這裏NSS引腳設置爲輸入
MOSI腳相互連接, MISO腳相互連接。這樣,數據在主和從之間串行地傳輸(MSB位在前)。通信總是由主設備發起。主設備通過MOSI腳把數據發送給從設備,從設備通過MISO引腳回傳數據。這意味全雙工通信的數據輸出和數據輸入是用同一個時鐘信號同的;時鐘信號由主設備通過SCK腳提供。
2.從選擇(NSS)腳管理
2種NSS模式:
● 軟件NSS模式:可以通過設置SPI_CR1寄存器的SSM位來使能這種模式(見圖211)。在這種模式下NSS引腳可以用作它用,而內部NSS信號電平可以通過寫SPI_CR1的SSI位來驅動
● 硬件NSS模式,分兩種情況:
─ NSS輸出被使能:當STM32F10xxx工作爲主SPI,並且NSS輸出已經通過SPI_CR2寄存器的SSOE位使能,這時NSS引腳被拉低,所有NSS引腳與這個主SPI的NSS引腳相連並配置爲硬件NSS的SPI設備,將自動變成從SPI設備。當一個SPI設備需要發送廣播數據,它必須拉低NSS信號,以通知所有其它的設備它是主
設備;如果它不能拉低NSS,這意味着總線上有另外一個主設備在通信,這時將產生一個硬件失敗錯誤(Hard Fault)。
─ NSS輸出被關閉:允許操作於多主環境。
注意事項:

  1. 在改變CPOL/CPHA位之前,必須清除SPE位將SPI禁止。
  2. 主和從必須配置成相同的時序模式。
  3. SCK的空閒狀態必須和SPI_CR1寄存器指定的極性一致(CPOL爲’1’時,空閒時應上拉SCK爲
    高電平; CPOL爲’0’時,空閒時應下拉SCK爲低電平)。
  4. 數據幀格式(8位或16位)由SPI_CR1寄存器的DFF位選擇,並且決定發送/接收的數據長度
    數據時序圖:在這裏插入圖片描述

SPI內部結構簡明圖

在這裏插入圖片描述
SPI接口一般使用4條線通信:
1、MISO 主設備數據輸入,從設備數據輸出。
2、MOSI 主設備數據輸出,從設備數據輸入。
3、SCLK時鐘信號,由主設備產生。
4、CS從設備片選信號,由主設備控制。

SPI工作原理

① 硬件上爲4根線。
② 主機和從機都有一個串行移位寄存器,主機通過向它的SPI串行寄存器寫入一個字節來發起一次傳輸。
③ 串行移位寄存器通過MOSI信號線將字節傳送給從機,從機也將自己的串行移位寄存器中的內容通過MISO信號線返回給主機。這樣,兩個移位寄存器中的內容就被交換。
④ 外設的寫操作和讀操作是同步完成的。如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必鬚髮送一個空字節來引發從機的傳輸。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
#在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章