天天看點

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

SPI總線協定

By Xiaomin | April 17, 2016 | 技術

概述

SPI(Serial Peripheral Interface)總線是主要應用于嵌入式系統内部通信的串行同步傳輸總線協定。通常為四線制的SPI總線支援全雙工通信。SPI最初由Motorola在2000年提出,Motorola所定義的SPI标準為業界廣泛引用,但不同半導體公司的實施細節可能有所不同,這些差別展現在寄存器設定、信号定義、資料格式等。業界沒有統一的SPI标準,具體應用需要參考特定器件手冊。

SPI協定特點包括主從模式、全雙工通信、片選功能、模式錯誤辨別及CPU中斷、緩沖資料寄存器和可配置時鐘相位極性等。SPI允許資料一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主要裝置控制,當沒有時鐘跳變時,從裝置不采集或傳送資料。也就是說,主裝置通過對SCK時鐘線的控制可以完成對通訊的控制。

應用

SPI以其簡單高效應用于絕大多數SoC系統上,這些SoC通常同時支援作為主模式或從模式(二選一)。

FPGAs和其它專用晶片也廣泛使用SPI傳輸資料。比如:

  • 傳感器:溫度、壓力傳感器等
  • 控制裝置:音頻編解碼器等
  • 通信裝置:USB、以太網裝置等
  • 存儲器:Flash、EEPROM等
  • RTC時鐘
  • LCD裝置
  • MMC和SD卡

在高性能系統中,FPGAs通常使用SPI連接配接主從裝置,比如連接配接外部傳感器,和應用SPI加載配置。相比于JTAG,SPI定位用于高速配置(初始化)闆上裝置;而JTAG的初衷是為控制裝置以相對低的準确度掃描和檢測闆上IO,在嚴格要求的場合,JTAG協定支援改變時鐘占空比以滿足建立和保持時間的要求。是以,JTAG并不定位于高速資料傳輸的場合。

優點和缺點

 優點

  • 支援全雙工通信
  • Push-Pull驅動性能相比Open Drain信号完整性更好,支援高速應用(100MHz以上)
  • 協定支援字長不限于8bits,可根據應用特點靈活選擇消息字長
  • 硬體連接配接簡單
    • 隻需要四根信号線(部分應用可以縮減到三根)
    • 相比I2C和SMbus節省上拉電阻
    • 相比I2C和SMbus不需要仲裁機制
    • 從裝置使用主裝置時鐘,節約時鐘要求
    • 從裝置無需位址尋址
    • 無需收發器

缺點

  • 相比I2C兩根線,SPI四根線更多
  • 沒有尋址機制,隻能靠裝置片選(chip select)選擇不同從裝置
  • 沒有資料流控制(但主裝置可以通過延緩時鐘邊緣降低傳輸速度)
  • 沒有從裝置接收資料ACK,主裝置對于發送成功與否不得而知
  • 典型應用隻支援單主要
  • 沒有定義資料校驗機制
  • 沒有統一的國際組織維護,變種多不利于不同廠商裝置的互操作性(interoperability)
  • 相比于RS232、RS422、RS485和CAN,SPI傳輸距離短
  • 不支援熱插拔
  • 中斷操作隻能通過額外的信号線,或類似USB 1.1 and 2.0的Periodic Polling實作

内部框圖

本文主要參考三家公司SPI協定手冊,其原理大同小異:

  1. SPI Block Guide V04.01 -Motorola
  2. KeyStone Architecture Serial Peripheral Interface (SPI) User Guide -Texas Instruments
  3. TN0897: ST SPI protocol -STMicroelectronics

圖1表示Motorola定義SPI子產品的内部框圖,其主要構成包括狀态/控制/資料寄存器(Status,Control and Data Registers)、移位寄存器(Shifter Logic)、波特率發生器(Baud Rate Generator)、主從控制邏輯(Master/Slave Control Logic)和端口控制邏輯(Port Control Logic)。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖1. SPI子產品框圖(Motorola)

硬體基礎

SPI總線定義兩個及以上裝置間的資料傳輸,提供時鐘的裝置為主裝置(Master),接收時鐘的裝置為從裝置(Slave)。

信号定義

SPI協定定義四根信号線,分别為:

  • SCK : Serial Clock 串行時鐘
  • MOSI : Master Output, Slave Input 主發從收信号
  • MISO : Master Input, Slave Output 主收從發信号
  • SS : Slave Select 片選信号

其中MISO方向為從裝置到主裝置,其餘三個信号均為主裝置到從裝置。

說明:

  1. 對于主裝置,如果設定SS作為從裝置的片選信号(最常用的場合),則它就不能用于多主裝置應用的模式錯誤檢測(參考SSOE和MODFEN寄存器設定,表1)
  2. SPI單個資料管腳支援雙向模式。在雙向模式下,主裝置的MOSI,從裝置的MISO作為雙向IO(參考SPC0和BIDIROE寄存器設定,表2)

電路連接配接

圖2表示基本的SPI裝置連接配接示意圖。片選信号SS通常低電平有效。SPI資料傳輸原理是基于主從裝置内部移位寄存器的資料交換。在主裝置SCK的控制下,待傳資料由各自裝置的資料寄存器(Data Register)傳輸到移位寄存器(Shift Register),再通過MOSI和MISO信号線完成主從裝置間的資料交換。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖2. SPI主從模式傳輸示意圖(電路)

主從裝置間資料交換邏輯示意圖如下圖3所示:

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖3. SPI主從模式傳輸示意圖(邏輯)

硬體拓撲

單個主裝置和單個從裝置的SPI連接配接比較簡單,以上圖2和圖3表示的就是這種拓撲結構。

通過多個片選信号(SS)或菊花鍊方式(Daisy Chain Configuration),單個主裝置可以同時控制多個不同從裝置。

  • 片選方式

如圖4示,每個從裝置都需要單獨的片選信号,主裝置每次隻能選擇其中一個從裝置進行通信。因為所有從裝置的SCK、MOSI、MISO都是連在一起的,未被選中從裝置的MISO要表現為高阻狀态(Hi-Z)以避免資料傳輸錯誤。由于每個裝置都需要單獨的片選信号,如果需要的片選信号過多,可以使用譯碼器産生所有的片選信号。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖4. 主裝置以片選方式控制多個從裝置

  • 菊花鍊方式

如圖5示,資料信号經過主從裝置所有的移位寄存器構成閉環。資料通過主裝置發送(綠色線)經過從裝置傳回(藍色線)到主裝置。在這種方式下,片選和時鐘同時接到所有從裝置,通常用于移位寄存器和LED驅動器。注意,菊花鍊方式的主裝置需要發送足夠長的資料以確定資料送達到所有從裝置。切記主裝置所發送的第一個資料需(移位)到達菊花鍊中最後一個從裝置。

菊花鍊式連接配接常用于僅需主裝置發送資料而不需要接收傳回資料的場合,如LED驅動器。在這種應用下,主裝置MISO可以不連。如果需要接收從裝置的傳回資料,則需要連接配接主裝置的MISO形成閉環。同樣地,切記要發送足夠多的接收指令以確定資料(移位)送達主裝置。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖5. 主裝置以菊花鍊方式控制多個從裝置

電源管理

Motorola在SPI Block Guide中定義以下三種SPI電源模式:

  • 運作模式 Run Mode
  • 等待模式 Wait Mode
  • 停止模式 Stop Mode

在運作模式下,SPI工作處于正常工作狀态。通過修改SPICR1寄存器的SPE位更改此模式:

0: 禁用SPI子產品(進入低功耗狀态)

1: 使能SPI子產品

在等待模式下,修改SPICR2寄存器的SPISWAI位:

0: 運作模式

1: 低功耗模式 SPI時鐘停止運作

對于主裝置,進入等待模式意味終止SPI總線上所有資料傳輸,唯有将SPISWAI 重新置為0方可恢複通信;對于從裝置,進入等待模式後仍将與主裝置保持同步,從裝置資料的接收和發送還是正常的。

在停止模式下,對于主裝置,進入停止模式意味着所有總線上通信的終止;對于從裝置,進入停止模式後資料的發送和接收還是正常的,仍然與主裝置保持同步狀态。

TI在SPI User Guide定義兩種低功耗狀态:

  • 全局低功耗模式 Global Low-Power Mode
  • 局部低功耗模式 Local Low-Power Mode

全局低功耗模式受系統控制,此模式下SPI時鐘停止,處于完全不作為狀态。

通過寫SPI全局寄存器(SPIGCR1)可以是SPI子產品進入局部低功耗模式。此模式下,所有寄存器可以正常通路,但SPI的狀态機處于停擺狀态,資料收發可能異常。軟體設定時需要注意不要在收發資料時讓SPI進入低功耗模式。

寄存器說明

Motorola定義的SPI寄存器包括:

  • SPI Control Register 1 (SPICR1)
  • SPI Control Register 2 (SPICR2)
  • SPI Baud Rate Register (SPIBR)
  • SPI Status Register (SPISR)
  • SPI Data Register (SPIDR)

其中除了狀态寄存器SPISR為隻讀(Read-only),其它寄存器都是可讀寫的。通過往寄存器中寫入不同的值,設定SPI子產品的不同屬性。

1. 控制寄存器1 SPICR1

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖6. 控制寄存器1 SPICR1

SPIE — SPI Interrupt Enable Bit

1 = SPI interrupts enabled

0 = SPI interrupts disabled

SPE — SPI System Enable Bit

1 = SPI enabled, port pins are dedicated to SPI functions

0 = SPI disabled (lower power consumption)

SPTIE — SPI Transmit Interrupt Enable

1 = SPTEF interrupt enabled

0 = SPTEF interrupt disabled

MSTR — SPI Master/Slave Mode Select Bit

1 = SPI is in Master mode

0 = SPI is in Slave mode

CPOL — SPI Clock Polarity Bit

1 = Active-low clocks selected. In idle state SCK is high

0 = Active-high clocks selected. In idle state SCK is low

CPHA — SPI Clock Phase Bit

1 = Sampling of data occurs at even edges (2,4,6,...,16) of the SCK clock

0 = Sampling of data occurs at odd edges (1,3,5,...,15) of the SCK clock

SSOE — Slave Select Output Enable

SSOE 用于主裝置設定SS管腳功能,它和MODFEN組合決定主裝置SS管腳功能。如表1所示其功能組合:

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

表1. SS輸入/輸出選擇

LSBFE — LSB-First Enable

1 = Data is transferred least significant bit first

0 = Data is transferred most significant bit first

2. 控制寄存器2 SPICR2

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖7. 控制寄存器1 SPICR2

MODFEN — Mode Fault Enable Bit

1 = SS port pin with MODF feature

0 = SS port pin is not used by the SPI

BIDIROE — Output enable in the Bidirectional mode of operation

控制雙向模式(Bidirectional Mode)下主裝置的MOSI和從裝置MISO的輸出緩沖器

1 = Output buffer enabled

0 = Output buffer disabled

SPISWAI — SPI Stop in Wait Mode Bit

1 = Stop SPI clock generation when in wait mode

0 = SPI clock operates normally in wait mode

SPC0 — Serial Pin Control Bit 0

控制(單個)資料管腳是否配置為雙向模式,與BIDIROE組合控制(單個)資料管腳同時支援收發功能(如下表2)

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

表2. MOSI/MISO雙向管腳配置

3. 波特率寄存器 SPIBR

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖8. 波特率寄存器 SPIBR

SPPR2–SPPR0 — SPI Baud Rate Preselection Bits

SPR2–SPR0 — SPI Baud Rate Selection Bits

以上五個寄存器通過下面公式決定波特率除數因子(BaudRateDivisor),進而決定SCK時鐘頻率。

除數因子:(通過五個參數計算出來的除數因子不僅包括2^N,還包括4/6/10等總計64個組合)

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

計算波特率:

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

舉例,SPPR[2:0]設為101,SPR[2:0]設為000,計算得除數因子(5+1) * (2^1) = 12。如果系統時鐘速率為25MHz,則SCK時鐘速率 = 25MHz/12 = 2.0833MHz.

4. 狀态寄存器 SPISR

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖9. 狀态寄存器 SPISR

SPISR表征SPI傳輸狀态,隻可讀,不可寫。

SPIF — SPIF Interrupt Flag

資料byte寫入SPI資料寄存器後,此位被置為1。讀取資料寄存器後,此位清零。

1 = New data copied to SPIDR

0 = Transfer not yet complete

SPTEF — SPI Transmit Empty Interrupt Flag

1 = SPI Data register empty 表示發送資料寄存器為空,可以接收待發送資料

0 = SPI Data register not empty 此時忽略任何寫入資料寄存器的指令

MODF — Mode Fault Flag

如表1,錯誤檢測功能使能後,MODF表示檢測到SPI模式錯誤。

1 = Mode fault has occurred.

0 = Mode fault has not occurred

根據Motorola的定義,SPI僅提供一種錯誤——即模式錯誤(Mode Fault Error)——的檢測機制,通過SS管腳狀态判斷SPI總線上是否存在兩個及以上的裝置同時驅動SCK和MOSI。模式錯誤檢測僅适用于主裝置(前提是在寄存器中激活此功能)。對于從裝置,SS總是作為片選信号的。

在發生模式錯誤後(MODF = 1),系統通過寫入控制寄存器SPICR1(使裝置由Master改為Slave模式,SCK、MISO和MOSI表現為高阻态以避免與總線上其它驅動裝置沖突),随後系統自動将此bit置為零(MODF = 0)。

5. 資料寄存器 SPIDR

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖10. 資料寄存器 SPIDR

SPIDR作為SPI收發兩用的寄存器,資料在寫入SPIDR後進入待傳輸隊列,隊列中的資料位元組在前面資料傳輸結束後立即進行傳輸。狀态寄存器SPISR的SPTEF位表示資料寄存器可以接收新資料。資料寄存器接收資料完畢後将SPIF置為1。

如果SPIF已經置為1,但服務并未運作(not serviced),則下一個(第二個)接收的資料位元組将暫存在移位寄存器中直到下次傳輸。資料寄存器中的資料位元組不變。

如果SPIF已經置為1,并且移位寄存器中已經暫存資料(即第二個資料位元組),并且SPIF服務在第三個資料位元組傳輸前完成,則移位寄存器中的資料(即第二個資料位元組 )正常寫入資料寄存器,SPIF仍保持置位狀态(高),如圖11所示;

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖11. SPIF服務及時完成

如果SPIF已經置為1,并且移位寄存器中已經暫存資料(即第二個資料位元組),并且SPIF服務在第三個資料位元組傳輸後完成,則移位寄存器中的資料(即第二個資料位元組 )遭破壞,不能正常寫入到資料寄存器,SPIF仍保持置位狀态(高),如圖12所示 。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖12. SPIF服務未及時完成

SPI傳輸模式

通過設定控制寄存器SPICR1中的CPOL和CPHA位,将SPI可以分成四種傳輸模式。

CPOL,即Clock Polarity,決定時鐘空閑時的電平為高或低。對于SPI資料傳輸格式沒有顯著影響。

1 = 時鐘低電平時有效,空閑時為高

0 = 時鐘高電平時有效,空閑時為低

CPHA,即Clock Phase,定義SPI資料傳輸的兩種基本模式。

1 = 資料采樣發生在時鐘(SCK)偶數(2,4,6,...,16)邊沿(包括上下邊沿)

0 = 資料采樣發生在時鐘(SCK)奇數(1,3,5,...,15)邊沿(包括上下邊沿)

四種模式如下圖13所示。先看第一列兩張圖(CPHA = 0),采樣發生在第一個時鐘跳變沿,即資料采樣發生在SCK奇數邊沿;再看第二列(CPHA =1),采樣發生在第二個時鐘跳變沿,即資料采樣發生在SCK偶數邊沿。第一行兩張圖(CPOL = 0),SCK空閑狀态為低電平,第二行兩張圖(CPOL = 1),SCK空閑狀态為高電平。

主從裝置進行SPI通訊時,要確定它們的傳輸模式設定相同。對于某些場合,可能需要調整CPOL/CPHA設定以滿足裝置特定要求。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖13. SPI四種傳輸模式

時序要求

具體時序要求參考器件手冊。以下Motorola标準對CPHA = 0(圖14)和CPHA =1(圖15)不同設定時序的簡要說明:

CPHA = 0

  • 有些器件在片選後資料立即出現在MOSI/MISO管腳,資料鎖存于第一個時鐘邊沿
  • 片選SS先于SCK半個時鐘有效
  • 在SCK的第二個時鐘邊沿,上個時鐘邊沿鎖存的資料寫入移位寄存器(MSB或LSB)
  • 以此類推,資料在奇數邊沿鎖存,在偶數邊沿寫入移位寄存器
  • 經過16個時鐘邊沿後,串行傳輸的資料全部寫入(并行的)移位寄存器,完成主從裝置的資料交換
【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖14. SPI時鐘模式(CPHA = 0)

CPHA = 1

  • 有些裝置要求資料輸出在SCK第一個時鐘邊沿之後,資料鎖存于第二個時鐘邊沿
  • 片選SS先于SCK半個時鐘有效
  • 在SCK的第三個時鐘邊沿,上個時鐘邊沿鎖存的資料寫入移位寄存器(MSB或LSB)
  • 以此類推,資料在偶數邊沿鎖存,在奇數邊沿寫入移位寄存器
  • 經過16個時鐘邊沿後,串行傳輸的資料全部寫入(并行的)移位寄存器,完成主從裝置的資料交換
【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖15. SPI時鐘模式(CPHA = 1)

SPI通信過程

簡要說明ST和Spansion器件的SPI通訊過程。

1. STMicroelectronics

ST SPI規範定義,在系統啟動後,主裝置讀取從裝置8位SPI寄存器以确定從裝置字長(16,24或32bit)及其它特性。每個幀(讀/寫)包括1個操作位元組(Instruction Byte)和緊接着的1-3個資料位元組(Data Byte)。

操作位元組可能是指令位元組或全局狀态位元組。記住指令位元組總是出現在(主從)裝置的輸入管腳(SDI),全局狀态位元組總是出現在(主從)裝置的輸出管腳(SDO)。

  • Command Byte 指令位元組
【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖16. 指令位元組格式

指令位元組前2位OC0/OC1指定SPI操作的四種類型,包括寫操作、讀操作、讀和複位狀态操作、讀取裝置資訊操作;

指令位元組後6位Ax指定操作對象(RAM/ROM)的位址。

  • Global Byte 全局狀态位元組
【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖17. 全局狀态位元組格式

訓示裝置狀态資訊,如工作模式、通訊錯誤等。

如下圖18讀寫操作資料幀格式。對于寫操作,SDO輸出全局變量位元組之後緊接着位址寄存器中先前緩存的資料;對于讀操作,全局變量位元組後緊接着尋址待取的資料。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖18. SPI讀寫操作(ST)

2. Spansion

以常見的SPI接口Flash為例。如圖19所示,在CS#低有效後,基于操作模式,決定在SCK的上升或下降沿觸發采樣資料。8位指令位元組後緊接着24位位址,尋址Flash内部存儲塊。随着Flash容量增大,可能需要更多的尋址位。比如Micron的N25Q等器件,需要使能4 Byte位址模式以支援容量在128Mbit以上的器件。(單個位址尋址對應1 Byte資料,則24位位址尋址最大2^24 = 16 M Byte = 128Mbit)。

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

圖19. SPI讀操作(Spansion Flash)

複位和中斷

複位後,寄存器值恢複初始狀态(以上寄存器表下方所列出)。對于從裝置,如果複位後不對SPIDR寫入資料,它将輸出随機資料或複位前從主裝置接收到的資料;複位後SPIDR的資料全部清零。

SPI的中斷向量和優先級因裝置而異。中斷請求由狀态寄存器SPISR中MODF、SPIF和SPTEF位邏輯或産生。

協定分析

利用示波器或邏輯分析儀的SPI協定分析功能(電氣特性 & 譯碼),可以快速定位通信鍊路上出現的問題。示波器支援不同的觸發方式,以Tektronix示波器為例,其支援SPI的觸發方式包括:

  • SS觸發,基于片選信号狀态變化觸發
  • SOF觸發,根據時鐘空閑時間确定Start Of a Frame觸發
  • MOSI觸發,基于MOSI上特定的資料格式觸發
  • MISO觸發,基于MISO上特定資料格式觸發
  • MOSI/MISO觸發,基于MOSI和MISO上特定資料格式觸發

I2C & JTAG

SPI和I2C,JTAG對比參考表3:

【轉】SPI總線協定SPI總線協定概述應用優點和缺點内部框圖硬體基礎電源管理寄存器說明SPI傳輸模式時序要求SPI通信過程複位和中斷協定分析I2C & JTAG參考資料

表3. SPI, I2C和JTAG協定概覽

參考資料

1. Serial Peripheral Interface Bus -Wikipedia

2. SPI Block Guide V04.01 -Motorola

3. KeyStone Architecture User Guide: Serial Peripheral Interface, Literature Number: SPRUGP2A -Texas Instruments

4. TN0897: ST SPI Protocol -STMicroelectronics

5. Comparing Serial Interfaces -Spansion

6. Serial Peripheral Interface Tutorial -Sparkfun

7. Debugging Serial Buses in Embedded System Designs -Tektronix

  來源

轉載于:https://www.cnblogs.com/skullboyer/p/8358793.html