SPI及其時鐘配置

今天知道了 SPI 時鐘的設置 ,原來SPI 主設備 時鐘極性的配置 應該和 從設備SDI的極性
相反。
怪不得以前做SPI 主設備程序的時候 ,把它設備設成mode 3(此時CPHA=1)就ok,設成mode 0(此時CPHA=0)就ng。因爲我們的設備室mode0. 當初還以爲 從設備的模式是跟着主設備走的呢!
但看了一些材料,發現 這個模式 有些叫法不一致 ,有些不懂。
一 .有的叫法是這樣的(http://www.docin.com/p-20044520.html   57頁):
                  
   CPOL  CPOH
 mode 0  0  0
 mode 1  0  1
 mode 2  1  0
 mode 3  1  1

(我們把CPOH 理解成 CPHA 即可,by imjacob)
二 .還有是這樣的:(http://www.cnblogs.com/Efronc/archive/2010/06/24/1764505.html)
  CPOL  CPHA
 mode 0  0  0
 mode 1  0  1
 mode 2  1  0
 mode 3  1  1

這裏CPOL 是 Clock Polarity的縮寫,爲0表示SCLK爲低時總線空閒 (高時總線active),爲1表示SCLK爲高時總線空閒(低時總線active)。

CPHA 是 Clock Phase的縮寫。但含義好像講法不一。一種是說 爲0時在SCK第一個跳變沿採樣,爲1時在SCK第二個跳變沿採樣。(現在感覺這種講法最正確,就以這個爲標準吧。CPHA 和CPOL 的講法也爲準吧 。110315:最近看到了moto的標準,就是這樣的。參看標準另一種是說 決定SCK的上升沿採樣還是在SCK的結束沿採樣。blackfin 貌似也是這種 。

三 .還有一種是下面這樣的:(載自 microchip資料 )

看了一下,CPOL 和CKP 的定義一模一樣。CPOH 和 CKE 就有點喫不準了.另外,這張圖也很怪,mode和 後面CKE 值取反了?
CKP(CLOCK Polarity)
CKE (CLOCK EDGE SELECT )
(110316: 在看 <PIC嵌入式系統開發> 時,知道了,CKE =0 表示 數據傳輸發生在 時鐘信號 由空閒狀態 轉向活動狀態,=1 表示 數據傳輸發生在 時鐘信號 由活動狀態 轉向空閒狀態。所以他的定義也和 CPHA 反了。
另外 ,PIC 又多了數據採樣位 ,SMP ,0表示在數據輸出中段採樣輸入數據。爲1 是在數據輸出結束時採樣輸入數據。 

 而我們知道標準定義的是 採樣位 和傳輸位相反就是了 )

四 .最後是 atmel的9260的定義:
   CPOL  NCPHA
 mode 0  0  1
 mode 1  0  0
 mode 2  1  1
 mode 3  1  0
能看出 ,他和 microchip的定義是一樣的 。現在 猜想 ,可能 是atmel 和 microchip爲了不交 專利費給 moto,把 moto的 CPHA 取了個反 。呵呵 。真是 不知道說啥了。(//110315: TI的msp430也是這樣的,他又換了個名字,其實可以發現這些的定義本質上都是一樣,只是換換名字,偷換概念而已。)

//110316最新總結:
這樣看來這些混亂不堪的叫法其實都是一樣的,他們僅僅是把CPHA 給取反了。真是折騰了。另外就是PIC 把採樣和 數據輸出用不同位來表示了。
除此,無它。
其實這篇文章可以刪去了,但爲了紀念這個折騰了我好久的問題,還是留着吧。
//==============================================================
以下載自:http://cxjr.21ic.org/user1/5877/archives/2009/62132.html
SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口。是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只佔用四根線,節約了芯片的管腳,同時爲PCB的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議,比如AT91RM9200.
  SPI總線系統是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。外圍設置FLASHRAM、網絡控制器、LCD顯示驅動器、A/D轉換器和MCU等。SPI總線系統可直接與各個廠家生產的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI和低電平有效的從機選擇線 SS(有的SPI接口芯片帶有中斷信號線INT或INT、有的SPI接口芯片沒有主機輸出/從機輸入數據線MOSI)。
  SPI的通信原理很簡單,它以主從方式工作,這種模式通常有一個主設備和一個或多個從設備,需要至少4根線,事實上3根也可以(單向傳輸時)。也是所有基於SPI的設備共有的,它們是SDI(數據輸入),SDO(數據輸出),SCK(時鐘),CS(片選)。
  (1)SDO – 主設備數據輸出,從設備數據輸入
  (2)SDI – 主設備數據輸入,從設備數據輸出
  (3)SCLK – 時鐘信號,由主設備產生
  (4)CS – 從設備使能信號,由主設備控制
  其中CS是控制芯片是否被選中的,也就是說只有片選信號爲預先規定的使能信號時(高電位或低電位),對此芯片的操作纔有效。這就允許在同一總線上連接多個SPI設備成爲可能。
  接下來就負責通訊的3根線了。通訊是通過數據交換完成的,這裏先要知道SPI是串行通訊協議,也就是說數據是一位一位的傳輸的。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈衝,SDI,SDO則基於此脈衝完成數據傳輸。數據輸出通過 SDO線,數據在時鐘上升沿或下降沿時改變,在緊接着的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿爲一次),就可以完成8位數據的傳輸。
  要注意的是,SCK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基於SPI的設備中,至少有一個主控設備。這樣傳輸的特點:這樣的傳輸方式有一個優點,與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因爲SCK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不採集或傳送數據。也就是說,主設備通過對SCK時鐘線的控制可以完成對通訊的控制。SPI還是一個數據交換協議:因爲SPI的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。不同的SPI設備的實現方式不盡相同,主要是數據改變和採集的時間不同,在時鐘信號上沿或下沿採集有不同定義,具體請參考相關器件的文檔。
  在點對點的通信中,SPI接口不需要進行尋址操作,且爲全雙工通信,顯得簡單高效。在多個從設備的系統中,每個從設備需要獨立的使能信號,硬件上比I2C系統要稍微複雜一些。
  最後,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據。
  AT91RM9200的SPI接口主要由4個引腳構成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整個SPI總線的公用時鐘,MOSI、MISO作爲主機,從機的輸入輸出的標誌,MOSI是主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS是從機的標誌管腳,在互相通信的兩個SPI總線的器件,/SS管腳的電平低的是從機,相反/SS管腳的電平高的是主機。在一個SPI通信系統中,必須有主機。SPI總線可以配置成單主單從,單主多從,互爲主從。
  SPI的片選可以擴充選擇16個外設,這時PCS輸出=NPCS,說NPCS0~3接4-16譯碼器,這個譯碼器是需要外接4-16譯碼器,譯碼器的輸入爲NPCS0~3,輸出用於16個外設的選擇。

SPI協議舉例

  SPI是一個環形總線結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數據交換。
  假設下面的8位寄存器裝的是待發送的數據10101010,上升沿發送、下降沿接收、高位先發送。
  那麼第一個上升沿來的時候 數據將會是sdo=1;寄存器中的10101010左移一位,後面補入送來的一位未知數x,成了0101010x。下降沿到來的時候,sdi上的電平將鎖存到寄存器中去,那麼這時寄存器=0101010sdi,這樣在 8個時鐘脈衝以後,兩個寄存器的內容互相交換一次。這樣就完成裏一個spi時序。
  舉例:
  假設主機和從機初始化就緒:並且主機的sbuff=0xaa,從機的sbuff=0x55,下面將分步對spi的8個時鐘週期的數據情況演示一遍:假設上升沿發送數據
  脈衝 主機sbuff 從機sbuff sdi sdo
  0 10101010 01010101 0 0
  1上 0101010x 1010101x 0 1
  1下 01010100 10101011 0 1
  2上 1010100x 0101011x 1 0
  2下 10101001 01010110 1 0
  3上 0101001x 1010110x 0 1
  3下 01010010 10101101 0 1
  4上 1010010x 0101101x 1 0
  4下 10100101 01011010 1 0
  5上 0100101x 1011010x 0 1
  5下 01001010 10110101 0 1
  6上 1001010x 0110101x 1 0
  6下 10010101 01101010 1 0
  7上 0010101x 1101010x 0 1
  7下 00101010 11010101 0 1
  8上 0101010x 1010101x 1 0
  8下 01010101 10101010 1 0
  這樣就完成了兩個寄存器8位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo相對於主機而言的。其中ss引腳作爲主機的時候,從機可以把它拉底被動選爲從機,作爲從機的是時候,可以作爲片選腳用。根據以上分析,一個完整的傳送週期是16 位,即兩個字節,因爲,首先主機要發送命令過去,然後從機根據主機的命令準備數據,主機在下一個8位時鐘週期才把數據讀回來。 SPI 總線是Motorola公司推出的三線同步接口,同步串行3線方式進行通信:一條時鐘線SCK,一條數據輸入線MOSI,一條數據輸出線MISO;用於 CPU與各種外圍器件進行全雙工、同步串行通訊。SPI主要特點有:可以同時發出和接收串行數據;可以當作主機或從機工作;提供頻率可編程時鐘;發送結束 中斷標誌;寫衝突保護;總線競爭保護等。下圖示出SPI總線工作的四種方式,其中使用的最爲廣泛的是SPI0和SPI3方式 (實線表示):


  SPI總線四種工作方式 SPI 模塊爲了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果 CPOL=0,串行同步時鐘的空閒狀態爲低電平;如果CPOL=1,串行同步時鐘的空閒狀態爲高電平。時鐘相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行數據傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被採樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被採樣。SPI主模塊和與之通信的外設備時鐘相位和極性應該一致。
  SPI總線包括1根串行同步時鐘信號線以及2根數據線。
  SPI模塊爲了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閒狀態爲低電平;如果CPOL=1,串行同步時鐘的空閒狀態爲高電平。時鐘相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行數據傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被採樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被採樣。SPI主模塊和與之通信的外設音時鐘相位和極性應該一致。SPI接口時序如圖3、圖4所示。




  補充:
  上文中最後一句話:SPI主模塊和與之通信的外設備時鐘相位和極性應該一致。個人理解這句話有 2層意思:其一,主設備SPI時鐘和極性的配置應該由外設來決定;其二,二者的配置應該保持一致,即主設備的SDO同從設備的SDO配置一致,主設備的 SDI同從設備的SDI配置一致。因爲主從設備是在SCLK的控制下,同時發送和接收數據,並通過2個雙向移位寄存器來交換數據。工作原理演示如下圖:
  上升沿主機SDO發送數據1,同時從設備SDO發送數據0;緊接着在SCLK的下降沿的時候從設備的SDI接收到了主機發送過來的數據1,同時主機也接收到了從設備發送過來的數據0.

SPI協議心得

  SPI接口時鐘配置心得:
  在主設備這邊配置SPI接口時鐘的時候一定要弄清楚從設備的時鐘要求,因爲主設備這邊的時鐘極性和相位都是以從設備爲基準的。因此在時鐘極性的配置上一定要搞清楚從設備是在時鐘的上升沿還是下降沿接收數據,是在時鐘的下降沿還是上升沿輸出數據。但要注意的是,由於主設備的SDO連接從設備的SDI,從設備的SDO連接主設備的SDI,從設備SDI接收的數據是主設備的SDO發送過來的,主設備 SDI接收的數據是從設備SDO發送過來的,所以主設備這邊SPI時鐘極性的配置(即SDO的配置)跟從設備的SDI接收數據的極性是相反的,跟從設備 SDO發送數據的極性是相同的
(貼個圖,說明這個問題的,by imjacob)
下面這段話是Sychip Wlan8100 Module Spec上說的,充分說明了時鐘極性是如何配置的:
  The 81xx module will always input data bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock.
  意思是:主設備在時鐘的下降沿發送數據,從設備在時鐘的上升沿接收數據。因此主設備這邊SPI時鐘極性應該配置爲下降沿有效。
  又如,下面這段話是摘自LCD Driver IC SSD1289:
  SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.
  意思是:從設備SSD1289在時鐘的上升沿接收數據,而且是按照從高位到地位的順序接收數據的。因此主設備的SPI時鐘極性同樣應該配置爲下降沿有效。
  時鐘極性和相位配置正確後,數據才能夠被準確的發送和接收。因此應該對照從設備的SPI接口時序或者Spec文檔說明來正確配置主設備的時鐘。

這篇文章比較了SPI 和iic,也很不錯。
http://china.maxim-ic.com/app-notes/index.mvp/id/4024
//=========================================================
這篇文章講SPI 講的最徹底,是FPGA 程度的,
http://www.cnblogs.com/Efronc/archive/2010/06/24/1764505.html

一.SPI總線簡介

串行外圍設備接口SPI(serial peripheral interface)總線技術是Motorola公司推出的一種同步串行接口。
SPI 用於CPU與各種外圍器件進行全雙工、同步串行通訊。它只需四條線就可以完成MCU與各種外圍器件的通訊,這四條線是:串行時鐘線(CSK)、主機輸入/從機輸出數據線(MISO)、主機輸出/從機輸入數據線(MOSI)、低電平有效從機選擇線CS。當SPI工作時,在移位寄存器中的數據逐位從輸出引腳(MOSI)輸出(高位在前),同時從輸入引腳(MISO)接收的數據逐位移到移位寄存器(高位在前)。發送一個字節後,從另一個外圍器件接收的字節數據進入移位寄存器中。即完成一個字節數據傳輸的實質是兩個器件寄存器內容的交換。主SPI的時鐘信號(SCK)使傳輸同步。其典型系統框圖如下圖所示。

二.SPI總線主要特點

· 全雙工; 

· 可以當作主機或從機工作; 

· 提供頻率可編程時鐘; 

· 發送結束中斷標誌; 

· 寫衝突保護; 

.總線競爭保護等。 

三.SPI總線工作方式

SPI總線有四種工作方式,其中使用的最爲廣泛的是SPI0和SPI3方式(實線表示):

四種工作方式時序分別爲:
SPI工作方式1和工作方式2
SPI工作方式3和工作方式4
時序詳解:

CPOL:時鐘極性選擇,爲0時SPI總線空閒爲低電平,爲1時SPI總線空閒爲高電平

CPHA:時鐘相位選擇,爲0時在SCK第一個跳變沿採樣,爲1時在SCK第二個跳變沿採樣

工作方式1:

當CPHA=0、CPOL=0時SPI總線工作在方式1。MISO引腳上的數據在第一個SPSCK沿跳變之前已經上線了,而爲了保證正確傳輸,MOSI引腳的MSB位必須與SPSCK的第一個邊沿同步,在SPI傳輸過程中,首先將數據上線,然後在同步時鐘信號的上升沿時,SPI的接收方捕捉位信號,在時鐘信號的一個週期結束時(下降沿),下一位數據信號上線,再重複上述過程,直到一個字節的8位信號傳輸結束。

工作方式2:

當CPHA=0、CPOL=1時SPI總線工作在方式2。與前者唯一不同之處只是在同步時鐘信號的下降沿時捕捉位信號,上升沿時下一位數據上線。

工作方式3:

當CPHA=1、CPOL=0時SPI總線工作在方式3。MISO引腳和MOSI引腳上的數據的MSB位必須與SPSCK的第一個邊沿同步,在SPI傳輸過程中,在同步時鐘信號週期開始時(上升沿)數據上線,然後在同步時鐘信號的下降沿時,SPI的接收方捕捉位信號,在時鐘信號的一個週期結束時(上升沿),下一位數據信號上線,再重複上述過程,直到一個字節的8位信號傳輸結束。

工作方式4:

當CPHA=1、CPOL=1時SPI總線工作在方式4。與前者唯一不同之處只是在同步時鐘信號的上升沿時捕捉位信號,下降沿時下一位數據上線。 

四.SPI總線常見錯誤

1 SPR設定錯誤
 在從器件時鐘頻率小於主器件時鐘頻率時,如果SCK的速率設得太快,將導致接收到的數據不正確(SPI接口本身難以判斷收到的數據是否正確,要在軟件中處理)。
 整個系統的速度受三個因素影響:主器件時鐘CLK主、從器件時鐘CLK從和同步串行時鐘SCK,其中SCK是對CLK主的分頻,CLK從和CLK主是異步的。要使SCK無差錯無遺漏地被從器件所檢測到,從器件的時鐘CLK從必須要足夠快。下面以SCK設置爲CLK主的4分頻的波形爲例,分析同步串行時鐘、主時鐘和從時鐘之間的關係。

圖1主從時鐘和SCK的關係
 如圖1所示,當T從<Tsck/2,即T從<2T主時,無論主時鐘和從時鐘之間的相位關係如何,在從器件CLK從的上升沿必然能夠檢測到SCK的低電平,即SCK=0的範圍內至少包含一個CLK從的上升沿。
 圖2中,當T從≥TSCK/2=2T主時,在clk_s的兩個上升沿都檢測不到SCK的低電平,這樣從器件就會漏掉一個SCK。在某些相位條件下,即使 CLK從僥倖能檢測到SCK的低電平,也不能保證可以繼續檢測到下一個SCK。只要遺漏了一個SCK,就相當於串行數據漏掉了一個位,後面繼續接收/發送的數據就都是錯誤的了。

圖2主從時鐘和SCK的關係
 根據以上的分析,SPR和主從時鐘比的關係如表1所列。

表1 SPR的設置和主從時鐘週期比值之間的關係
 在發送數據之前按照表1對SPR進行設置,SPR設定錯誤可以完全避免。

2 模式錯誤(MODF)
 模式錯誤表示的是主從模式選擇的設置和引腳SS的連接不一致。
 器件工作在主模式的時候(MSTR=1),它的片選信號SS引腳必須接高電平。在發送數據的過程中,如果它的SS從高電平跳至低電平,在SS的下降沿,SPI模塊將檢測到模式錯誤,對MODF位置1,強制器件從主模式轉入從模式(即令MSTR=0),清空內部計數器counter,並結束正在進行的數據傳輸,如圖 3(a)所示。
 對從模式(MSTR=0),在沒有數據傳送的時候,SS高電平表示從器件未被選中,從器件不工作,MISO輸出高阻;在數據傳輸過程中,片選信號SS必須接低電平,且SS不允許跳變。如果SS從低電平跳到高電平,在SS的上跳沿,SPI模塊也將檢測到模式錯誤,清空內部計數器 counter,並結束正在進行的數據傳輸。直到SS恢復爲低電平,重新使SPEN=1時,才重新開始工作,如圖3(b)所示。

圖3模式錯誤的檢測
3 溢出錯誤(OVR)
 溢出錯誤表示連續傳輸多個數據時,後一個數據覆蓋了前一個數據而產生的錯誤。
 狀態標誌SPIF表示的是數據傳輸正在進行中,它對數據的傳輸有較大的影響。主器件的SPIF有效由數據寄存器的空標誌SPTE=0產生,而從器件的 SPIF有效則只能由收到的第一個SCK的跳變產生,且又由於從器件的SPIF和主器件發出的SCK是異步的,因此從器件的傳輸標誌SPIF從相對於主器件的傳輸標誌SPIF主有一定的滯後。如圖4所示,在主器件連續發送兩個數據的時候將有可能導致從器件的傳輸標誌和主器件下一個數據的傳輸標誌相重疊(圖 4中虛線和陰影部分),第一個收到的數據必然被覆蓋,第二個數據的收/發也必然出錯,產生溢出錯誤。

圖4溢出錯誤
  通過對從器件的波形分析發現,counter=8後的第一個時鐘週期,數據最後一位的傳輸已經完成。在數據已經收/發完畢的情況下,counter=8 狀態的長短對數據的正確性沒有影響,因此可以縮短counter=8的狀態,以避免前一個SPIF和後一個SPIF相重疊。這樣,從硬件上避免了這一階段的溢出錯誤。
  但是,如果從器件工作速度不夠快或者軟件正在處理其他事情,在SPI接口接收到的數據尚未被讀取的情況下,又接收到一個新的數據,溢出錯誤還是會發生的。此時,SPI接口保護前一個數據不被覆蓋,捨棄新收到的數據,置溢出標誌OVR=1;另外發出中斷信號(如果該中斷允許),通知從器件及時讀取數據。
4 偏移錯誤(OFST)
  SPI接口一般要求從器件先工作,然後主器件纔開始發送數據。有時在主器件往外發送數據的過程中,從器件纔開始工作,或者SCK受到外界干擾,從器件未能準確地接收到8個SCK。如圖5所示,從器件接收到的8個SCK其實是屬於主器件發送相鄰的兩個數據的SCK主。這時,主器件的SPIF和從器件的SPIF會發生重疊,數據發生了錯位,從器件如果不對此進行糾正的話,數據的接收/發送便一直地錯下去。

圖5偏移錯誤
 在一個數據的傳輸過程中,SPR是不允許改變的,即SCK是均勻的,而從圖5可以看出,從器件接收到的8個SCK並不均勻,它們是分別屬於兩個數據的,因此可以計算SCK的佔空時間來判斷是否發生了偏移錯誤。經分析,正常時候SCK=1時的時鐘週期數n的取值滿足如下關係:

 但由於主從時鐘之間是異步的,並且經過了取整,所以正常時候SCK=1時的時鐘週期計數值COUNT應滿足:

 比如在圖5中,COUNT的最大值COUNT(max)=2或者1,都可認爲是正常的。但當出現COUNT(max)=8時,可以判定出現了偏移錯誤。在實際設計中,先記錄下第一個COUNT(max)的值,如果後面又出現與記錄值相差1以上的COUNT(max)出現,可知有偏移錯誤OFST
發生。SPI接口在“不均勻”的地方令SPIF=1,然後準備等待下一個數據的第一個SCK。其中COUNT的位數固定爲8位,爲了避免溢出時重新從00H開始計數,當計數達到ffH時停止計數。
5 其他錯誤
 設定不當,或者受到外界干擾,數據傳輸難免會發生錯誤,或者有時軟件對錯誤的種類判斷不清,必須要有一種方法強制SPI接口從錯誤狀態中恢復過來。在 SPI不工作,即SPEN=0的時候,清除SPI模塊內部幾乎所有的狀態(專用寄存器除外)。如果軟件在接收數據的時候,能夠發現數據有錯誤,無論是什麼錯誤,都可以強制停止SPI的工作,重新進行數據傳輸。例如,在偏移錯誤(OFST)中,如果SPR2、SPR1和SPR0的設置適當,也可以使SCK顯得比較“均勻”。SPI接口硬件本身不可能檢測到有錯誤,若用戶軟件能夠發現錯誤,這時就可以強制停止SPI的傳輸工作,這樣就可以避免錯誤一直持續下去。
在應用中,如果對數據的正確性要求較高,除了要在軟件上滿足SPI接口的時序要求外,還需要在軟件上作適當的處理。

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