日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

您好,歡迎進入深圳市穎特新科技有限公司官方網站!

您現(xiàn)在的位置:首頁 新聞資訊 >> 新聞頭條 >> 說說SPI協(xié)議
新聞資訊
NEWS INFORMATION

說說SPI協(xié)議

發(fā)布時間:2019-05-22

SPI,是英語Serial Peripheral Interface 的縮寫,顧名思義就是串行外圍設備接口。
SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB 的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。SPI 是一個環(huán)形總線結構,由ss(cs)、sck、sdi、sdo 構成,其時序其實很簡單,主要是在sck 的控制下,兩個雙向移位寄存器進行數據交換。上升沿發(fā)送、下降沿接收、高位先發(fā)送。上升沿到來的時候,sdo 上的電平將被發(fā)送到從設備的寄存器中。下降沿到來的時候,sdi 上的電平將被接收到主設備的寄存器假設主機和

從機初始化就緒:并且主機的sbuff=0xaa (10101010),從機的sbuff=0x55(01010101),

那么第一個上升沿來的時候 數據將會是sdo=1;寄存器=0101010x。下降沿到來的時候,sdi上的電平將所存到寄存器中去,那么這時寄存器=0101010sdi,這樣在 8個時鐘脈沖以后,兩個寄存器的內容互相交換一次。這樣就完成里一個spi時序。

下面將分步對spi 的8 個時鐘周期的數據情況演示一遍(假設上升沿發(fā)送數據)。

 

 

 

這樣就完成了兩個寄存器8位的交換,上面的上表示上升沿、下表示下降沿,sdi、sdo相對于主機而言的。其中ss引腳作為主機的時候,從機可以把它拉底被動選為從機,作為從機的是時候,可以作為片選腳用。根據以上分析,一個完整的傳送周期是16位,即兩個字節(jié),因為,首先主機要發(fā)送命令過去,然后從機根據主機的命令準備數據,主機在下一個8位時鐘周期才把數據讀回來。      SPI 總線是Motorola公司推出的三線同步接口,同步串行3線方式進行通信:一條時鐘線SCK,一條數據輸入線MOSI,一條數據輸出線MISO;用于CPU與各種外圍器件進行全雙工、同步串行通訊。SPI主要特點有:可以同時發(fā)出和接收串行數據;可以當作主機或從機工作;提供頻率可編程時鐘;發(fā)送結束 中斷標志;寫沖突保護;總線競爭保護等。下圖示出SPI總線工作的四種方式,其中使用的最為廣泛的是SPI0和SPI3方式 (實線表示):                    
                            
             SPI總線四種工作方式 SPI 模塊為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果 CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數據傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。SPI主模塊和與之通信的外設備時鐘相位和極性應該一致。

SPI總線包括1根串行同步時鐘信號線以及2根數據線。

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

 

這樣就完成了兩個寄存器8 位的交換,上面的0--1 表示上升沿、1--0 表示下降沿,sdi、sdo 相對于主機而言的。根據以上分析,一個完整的傳送周期是16 位,即兩個字節(jié),因為,首先主機要發(fā)送命令過去,然后從機根據主機的名準備數據,主機在下一個8 位時鐘周期才把數據讀回來。SPI 總線是Motorola 公司推出的三線同步接口,同步串行3 線方式進行通信:一條時鐘線SCK,一條數據輸入線MOSI,一條數據輸出線MISO;用于 CPU 與各種外圍器件進行全雙工、同步串行通訊。SPI 主要特點有:可以同時發(fā)出和接收串行數據;可以當作主機或從機工作;提供頻率可編程時鐘;發(fā)送結束中斷標志;寫沖突保護;總線競爭保護等。

 

 

 

SPI 總線有四種工作方式(SP0, SP1, SP2, SP3),其中使用的最為廣泛的是SPI0 和SPI3 方式。SPI 模塊為了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數據傳輸。如果 CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。 SPI 主模塊和與之通信的外設音時鐘相位和極性應該一致。SPI 時序圖詳解-SPI 接口在模式0 下輸出第一位數據的時刻

SPI 接口在模式0 下輸出第一位數據的時刻

SPI 接口有四種不同的數據傳輸時序,取決于CPOL 和CPHL 這兩位的組合。圖1 中
表現(xiàn)了這四種時序,
時序與 CPOL、CPHL 的關系也可以從圖中看出。

圖1

CPOL 是用來決定SCK 時鐘信號空閑時的電平,CPOL=0,空閑電平為低電平,CPOL=1 時,空閑電平為高電平。CPHA 是用來決定采樣時刻的,CPHA=0,在每個周期的第一個時鐘沿采樣,CPHA=1,在每個周期的第二個時鐘沿采樣。我們先說說模式 0 這種時序(CPOL=0,CPHA=0),將圖1 簡化為圖2

圖2

我們來關注SCK 的第一個時鐘周期,在時鐘的前沿采樣數據(上升沿,第一個時鐘沿),在時鐘的后沿輸出數據(下降沿,第二個時鐘沿)。

首先來看主器件,主器件的輸出口(MOSI)輸出的數據bit1,在在時鐘的前沿被從器件采樣,那主器件是在何時刻輸出 bit1 的呢?bit1 的輸出時刻實際上在SCK 信號有效以前,比 SCK 的上升沿還要早半個時鐘周期。bit1 的輸出時刻與SSEL 信號沒有關系。再來看從器件,主器件的輸入口 MISO 同樣是在時鐘的前沿采樣從器件輸出的bit1 的,那從器件又是在何時刻輸出bit1 的呢。從器件是在 SSEL 信號有效后,立即輸出bit1,盡管此時SCK 信號還沒有起效。關于上面的主器件和從器件輸出 bit1 位的時刻,可以從圖3、4 中得到驗證。

注意圖3 中,CS 信號有效后(低電平有效,注意CS 下降沿后發(fā)生的情況),故意用延時程序延時了一段時間,之后再向數據寄存器寫入了要發(fā)送的數據,來觀察主器件輸出 bit1的情況(MOSI)?梢钥闯,bit1(值為1)是在SCK 信號有效之前的半個時鐘周期的時刻開始輸出的(與CS 信號無關),到了 SCK 的第一個時鐘周期的上升沿正好被從器件采樣。

 

 圖4

圖4 中,注意看CS 和MISO 信號。我們可以看出,CS 信號有效后,從器件立刻輸出了bit1(值為1)。通常我們進行的 spi 操作都是16 位的。

圖5 記錄了第一個字節(jié)和第二個字節(jié)間的相互銜接的過程。

第一個字節(jié)的最后一位在SCK 的上升沿被采樣,隨后的SCK 下降沿,從器件就輸出了第二個字節(jié)的第一位。

一、技術性能

SPI 接口是Motorola 首先提出的全雙工三線同步串行外圍接口,采用主從模式(Master Slave)架構;支持多slave 模式應用,一般僅支持單Master。時鐘由 Master 控制,在時鐘移位脈沖下,數據按位傳輸,高位在前,低位在后(MSBfirst);SPI 接口有2 根單向數據線,為全雙工通信,目前應用中的數據速率可達幾Mbps的水平。

二、接口定義

SPI 接口共有4 根信號線,分別是:設備選擇線、時鐘線、串行輸出數據線、串行輸入數據線。

(1)MOSI:主器件數據輸出,從器件數據輸入
(2)MISO:主器件數據輸入,從器件數據輸出

(3)SCLK :時鐘信號,由主器件產生

(4)/SS:從器件使能信號,由主器件控制

 

四、傳輸時序

SPI 接口在內部硬件實際上是兩個簡單的移位寄存器,傳輸的數據為8 位,在主器件產生的從器件使能信號和移位脈沖下,按位傳輸,高位在前,低位在后。如下圖所示,在SCLK

的下降沿上數據改變,上升沿一位數據被存入移位寄存器。

SPI 接口沒有指定的流控制,沒有應答機制確認是否接收到數據。

SPI 接口時鐘配置:在主設備這邊配置 SPI 接口時鐘的時候一定要弄清楚從設備的時鐘要求,因為主設備這邊的時鐘極性和相位都是以從設備為基準的。因此在時鐘極性的配置上一定要搞清楚從設備是在時鐘的上升沿還是下降沿接收數據,是在時鐘的下降沿還是上升沿輸出數據。但要注意的是,由于主設備的SDO 連接從設備的SDI,從設備的SDO 連接主設備的SDI,從設備SDI 接收的數據是主設備的SDO 發(fā)送過來的(MOSI),主設備SDI 接收的數據是從設備SDO 發(fā)送過來的(MISO),所以主設備這邊SPI 時鐘極性的配置(即SDO 的配置)跟從設備的SDI 接收數據的極性是相反的,跟從設備SDO 發(fā)送數據的極性是相同的。

下面這段話是SychipWlan8100 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.
意思是:主設備在時鐘的下降沿發(fā)送數據,從設備在時鐘的上升沿接收數據。因此主設
備這邊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_CR1 寄存器中的 CPOL 和 CPHA 位,可以用軟件選擇四種可能的時序關系。CPOL(時鐘極性)位控制不傳任何數據時的時鐘電平狀態(tài)。此位對主器件和從 器件都有作 用。如果復位 CPOL,SCK 引腳在空閑狀態(tài)處于低電平。如果將 CPOL 置 1,SCK 引腳在 空閑狀態(tài)處于高電平。

如果將 CPHA(時鐘相位)位置 1,則 SCK 引腳上的第二個邊沿(如果復位 CPOL 位,則 為下降沿;如果將 CPOL 位置 1,則為上升沿)對 MSBit 采樣。即,在第二個時鐘邊沿鎖存 數據。如果復位 CPHA 位,則 SCK 引腳上的第一個邊沿(如果將 CPOL 位置 1,則為下降 沿;如果復位 CPOL 位,則為上升沿)對 MSBit 采樣。即,在第一個時鐘邊沿鎖存數據。
CPOL(時鐘極性)和 CPHA(時鐘相位)位的組合用于選擇數據捕獲時鐘邊沿。

 

                                      

      通訊是通過數據交換完成的,這里先要知道SPI是串行通訊協(xié)議,也就是說數據是一位一位的傳輸的。這就是SCK時鐘線存在的原因,由SCK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數據傳輸。數據輸出通過 SDO線,數據在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成一位數據傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為一次),就可以完成8位數據的傳輸。 

要注意的是,SCK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基于SPI的設備中,至少有一個主控設備。這樣傳輸的特點:這樣的傳輸方式有一個優(yōu)點,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因為SCK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不采集或傳送數據。也就是說,主設備通過對SCK時鐘線的控制可以完成對通訊的控制。SPI還是一個數據交換協(xié)議:因為SPI的數據輸入和輸出線獨立,所以允許同時完成數據的輸入和輸出。不同的SPI設備的實現(xiàn)方式不盡相同,主要是數據改變和采集的時間不同,在時鐘信號上沿或下沿采集有不同定義,具體請參考相關器件的文檔。

在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從設備的系統(tǒng)中,每個從設備需要獨立的使能信號,硬件上比I2C系統(tǒng)要稍微復雜一些。

最后,SPI接口的一個缺點:沒有指定的流控制,沒有應答機制確認是否接收到數據。



補充: 
上文中有一句話:SPI主模塊和與之通信的外設備時鐘相位和極性應該一致。個人理解這句話有2層意思:其一,主設備SPI時鐘和極性的配置應該由外設來決定;其二,二者的配置應該保持一致,即主設備的SDO同從設備的SDO配置一致,主設備的SDI同從設備的SDI配置一致。因為主從設備是在SCLK的控制下,同時發(fā)送和接收數據,并通過2個雙向移位寄存器來交換數據。工作原理演示如下圖:

上升沿主機SDO發(fā)送數據1,同時從設備SDO發(fā)送數據0;緊接著在SCLK的下降沿的時候從設備的SDI接收到了主機發(fā)送過來的數據1,同時主機也接收到了從設備發(fā)送過來的數據0.



SPI協(xié)議心得
SPI接口時鐘配置心得:
在主設備這邊配置SPI接口時鐘的時候一定要弄清楚從設備的時鐘要求,因為主設備這邊的時鐘極性和相位都是以從設備為基準的。因此在時鐘極性的配置上一定要搞清楚從設備是在時鐘的上升沿還是下降沿接收數據,是在時鐘的下降沿還是上升沿輸出數據。但要注意的是,由于主設備的SDO連接從設備的SDI,從設備的SDO連接主設備的SDI,從設備SDI接收的數據是主設備的SDO發(fā)送過來的,主設備SDI接收的數據是從設備SDO發(fā)送過來的,所以主設備這邊SPI時鐘極性的配置(即SDO的配置)跟從設備的SDI接收數據的極性是相反的,跟從設備SDO發(fā)送數據的極性是相同的。下面這段話是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.

意思是:主設備在時鐘的下降沿發(fā)送數據,從設備在時鐘的上升沿接收數據。因此主設備這邊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時鐘極性同樣應該配置為下降沿有效。

時鐘極性和相位配置正確后,數據才能夠被準確的發(fā)送和接收。因此應該對照從設備的SPI接口時序或者Spec文檔說明來正確配置主設備的時鐘。

 

即主從同時發(fā)送,同時接收,在前沿發(fā)送的時候,從機也發(fā)送,在后沿接收的時候,從機也接收。

接下來我們來看看M451的程序:

SPI,是一種高速的,全雙工,同步的通信總線,其工作模式有兩種:主模式和從模式,無
論那種模式,都支持
3Mbit/s 的速率,并且還具有傳輸完成標志和寫沖突保護標志。到目前為止,我使用過的具
有SPI 總線的器件,就是存儲芯片 Eprom:at25128,在使用過程中,發(fā)現(xiàn)的確是有這種
總線的優(yōu)點。下面以P89LPC900 單片機的SPI 總線來解釋SPI 總線的通用使用規(guī)則。

SPICLK、MOSI、MISO及/SS,其中SPICLK
是整個SPI 總線的公用時鐘,MOSI、MISO 作為主機,從機的輸入輸出的標志,MOSI 是
主機的輸出,從機的輸入,MISO 是主機的輸入,從機的輸出。/SS 是從機的標志管腳,在
互相通信的兩個SPI 總線的器件,/SS 管腳的電平低的是從機,相反/SS 管腳的電平高的是
主機。在一個SPI 通信系統(tǒng)中,必須有主機。

SPI 總線可以配置成單主單從,單主多從,互為主從。

 

聯(lián)系方式0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

丹阳市| 和政县| 额济纳旗| 普陀区| 泌阳县| 九寨沟县| 昌宁县| 耒阳市| 同江市| 崇仁县| 陇西县| 上高县| 顺义区| 临沂市| 陆丰市| 浪卡子县| 如皋市| 衡东县| 岐山县| 文登市| 大埔县| 玛沁县| 中西区| 区。| 大荔县| 锡林浩特市| 广南县| 铜梁县| 晴隆县| 五寨县| 大名县| 吴旗县| 湘乡市| 靖安县| 西丰县| 罗城| 丹寨县| 菏泽市| 宁夏| 临沂市| 双江|