SPI的通信速率到底可以達(dá)到多少_第1頁(yè)
SPI的通信速率到底可以達(dá)到多少_第2頁(yè)
SPI的通信速率到底可以達(dá)到多少_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、樓主提問(wèn): SPI 的通信速率到底可以達(dá)到多少?按照手冊(cè)上的說(shuō)明,應(yīng)該能到 fosc/4 ,然而實(shí)際上由于 SPI 通信底層沒(méi)有任何握手,不像 I2C 總線那樣帶 ACK,所以 SPI 速率實(shí)際上根本不能達(dá)到 fosc/4 ,除非發(fā)信端與收信端完全同步,然而事實(shí)上接收端往往要對(duì)接收到的數(shù)據(jù)進(jìn)行一些判斷和處理,所以在接收端往往會(huì)丟數(shù),解決辦法就是在發(fā)信端發(fā)完一個(gè)字節(jié)后人為加上延時(shí)等待接收端處理,但是如果這樣的話,高速還有什么意義呢?我做了一個(gè)試驗(yàn),即使關(guān)掉所有其它中斷,只作SPI 通信處理,在fosc/4的通信速率下,接收端只能接收10 個(gè)字節(jié)以?xún)?nèi)的數(shù)據(jù), 10 個(gè)字節(jié)以上就會(huì)丟數(shù),而在fosc

2、/8的通信速率下,如果關(guān)閉所有其它中斷,收發(fā)256 個(gè)字節(jié)是沒(méi)什么問(wèn)題的,但是如果應(yīng)用程序有 1ms的時(shí)鐘中斷事件的話, spi 通信成功率很低。在前面很多帖子里, 看到不少人說(shuō) spi 只是硬件底層, 通信的可靠性要靠通信協(xié)議,誠(chéng)然如此,但是我以為通信協(xié)議只是最后一道保障,如果底層不可靠,通信協(xié)議再完善也是惘然。輪詢(xún)和中斷方式有本質(zhì)區(qū)別嗎?輪詢(xún)就能保證不被其它中斷干擾嗎? 主機(jī)自己掌握 SPI 節(jié)奏,它只知道自己發(fā)送出去了,并不知道從機(jī)是否處理完,如果從機(jī)還在處理上一個(gè)字節(jié),這時(shí)候發(fā)下個(gè)字節(jié)顯然會(huì)丟數(shù)據(jù)啊解答者 1 回答:是同步!不是異步!也就是說(shuō) MASTER提供時(shí)鐘,所以完全由MASTE

3、R決定速率(當(dāng)然大家都能達(dá)到的)再有就是這個(gè)速率僅僅指一個(gè)BYTE的通訊速率,不是整個(gè)幀速率(2 個(gè) BYTE以上)從機(jī)查詢(xún)和中斷無(wú)關(guān),說(shuō)白了就是移位寄存器!樓主再問(wèn):關(guān)鍵就在于這個(gè)速率要大家都能達(dá)到啊,如果都能達(dá)到就不用講了,實(shí)測(cè)下來(lái)就是slave 端達(dá)不到這個(gè)速率啊。如果這個(gè)速率是一個(gè)BYTE的指標(biāo)那就沒(méi)啥說(shuō)的了,我認(rèn)了,只能在字節(jié)之間加延時(shí)了。解答者 2:我試過(guò)用 fosc/2 的時(shí)鐘速率進(jìn)行兩機(jī)通訊(系統(tǒng)時(shí)鐘 16M),連續(xù)傳了好多字節(jié)都沒(méi)有問(wèn)題。主機(jī)用查詢(xún)方式發(fā)送;從機(jī)用中斷接收,接收到的數(shù)據(jù)用液晶顯示出來(lái)。解答者 1:多字節(jié)是不可能達(dá)到fosc/2的!除非從機(jī)速率更快,有足夠的時(shí)間

4、去處理或保存(讀取數(shù)據(jù)),要不然是吹牛的!影響速率達(dá)不到fosc/2就是從機(jī)提取數(shù)據(jù)!與系統(tǒng)時(shí)鐘多少那無(wú)關(guān)!再有, ?從機(jī)響應(yīng)中斷都要4 個(gè)機(jī)器周期,更別說(shuō)要存儲(chǔ),中斷出來(lái)也要4 個(gè)機(jī)器周期。對(duì)于單字節(jié)來(lái)說(shuō)是可以達(dá)到fosc/2 ,因?yàn)?AVR可以使用倍率,本來(lái)是fosc/4的!所以 , 數(shù)據(jù)手冊(cè)里講的可以達(dá)到fosc/4那是指單字節(jié)的速率 !樓主:所以說(shuō)手冊(cè)給出來(lái)的指標(biāo)很帶有欺騙性,為了可靠起見(jiàn)(相信很多人的程序中都有個(gè)時(shí)鐘在運(yùn)行),建議放在 fosc/16 。SPI 接口原理SPI 接口的全稱(chēng)是 "Serial Peripheral Interface",意為串行外圍接

5、口 , 是 Motorola 首先在其 MC68HCXX系列處理器上定義的。 SPI 接口主要應(yīng)用在 EEPROM, FLASH,實(shí)時(shí)時(shí)鐘 ,AD 轉(zhuǎn)換器 , 還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。SPI 接口是在 CPU和外圍低速器件之間進(jìn)行 同步串行數(shù)據(jù)傳輸 , 在主器件的移位脈沖下 , 數(shù)據(jù)按位傳輸 , 高位在前 , 地位在后 , 為全雙工通信 , 數(shù)據(jù)傳輸速度總體來(lái)說(shuō)比 I2C 總線要快 , 速度可達(dá)到幾 Mbps。SPI 接口是以主從方式工作 的 , 這種模式 通常有一個(gè)主器件和一個(gè)或多個(gè)從器件, 其接口包括以下四種信號(hào):( 1) MOSI 主器件數(shù)據(jù)輸出 , 從器件數(shù)據(jù)輸入( 2

6、) MISO 主器件數(shù)據(jù)輸入 , 從器件數(shù)據(jù)輸出( 3) SCLK 時(shí)鐘信號(hào) , 由主器件產(chǎn)生( 4) /SS 從器件使能信號(hào) , 由主器件控制在點(diǎn)對(duì)點(diǎn)的通信中 ,SPI 接口不需要進(jìn)行尋址操作, 且為全雙工通信 , 顯得簡(jiǎn)單高效。在多個(gè)從器件的系統(tǒng)中 , 每個(gè)從器件需要獨(dú)立的使能信號(hào) , 硬件上比 I2C 系統(tǒng)要稍微復(fù)雜一些。SPI 接口在內(nèi)部 硬件實(shí)際上是兩個(gè)簡(jiǎn)單的移位寄存器 , 傳輸?shù)臄?shù)據(jù)為 8 位, 在主器件產(chǎn)生的從器件使能信號(hào)和移位脈沖下 , 按位傳輸 , 高位在前 , 低位在后 。如下圖所示 , 在 SCLK的下降沿上數(shù)據(jù)改變 , 同時(shí)一位數(shù)據(jù)被存入移位寄存器。SPI接口內(nèi)部硬件圖

7、示:最后 ,SPI 接口的一個(gè)缺點(diǎn) :沒(méi)有指定的流控制 , 沒(méi)有應(yīng)答機(jī)制確認(rèn) 是否接收到數(shù)據(jù)。/SPI 與 UART的區(qū)別:SPI 是三線或者四線 (CS CLK DI DO)UART是兩線制 (TXD RXD),實(shí)際上就是串口;SPI 一般是 CS=0啟動(dòng)傳輸 , 以 CLK作為同步信號(hào) , 不含啟動(dòng)位停止位 等UART傳輸信號(hào)中 包含了啟動(dòng)位和停止位等, 本身就可作為同步信號(hào)使用SPI 一般沒(méi)有標(biāo)準(zhǔn)的通信速率UART一般都是使用標(biāo)準(zhǔn)的通信波特率/SPI 通信 - 單片機(jī)最多能帶動(dòng)多少?gòu)臋C(jī)?回答 1:SPI 主要是芯片級(jí)或板級(jí)通信使用,也有設(shè)備之間使用的。但不可能在實(shí)際應(yīng)用中有太多的 SPI

8、 設(shè)備互連?;卮?2:SPI 是一個(gè)環(huán)形總線結(jié)構(gòu),由ss( cs)、sck 、sdi 、sdo 構(gòu)成,其時(shí)序其實(shí)很簡(jiǎn)單,主要是在 sck 的控制下,兩個(gè)雙向移位寄存器進(jìn)行數(shù)據(jù)交換。假設(shè)下面的 8 位寄存器裝的是待發(fā)送的數(shù)據(jù) 10101010,上升沿發(fā)送、下降沿接收、高位先發(fā)送。那么第一個(gè)上升沿來(lái)的時(shí)候數(shù)據(jù)將會(huì)是 sdo=1;寄存器 =0101010x。下降沿到來(lái)的時(shí)候, sdi 上的電平將所存到寄存器中去,那么這時(shí)寄存器=0101010sdi ,這樣在 8 個(gè)時(shí)鐘脈沖以后,兩個(gè)寄存器的內(nèi)容互相交換一次。這樣就完成里一個(gè)spi 時(shí)序。例子:假設(shè)主機(jī)和從機(jī)初始化就緒:并且主機(jī)的sbuff=0xaa

9、 ,從機(jī)的 sbuff=0x55 ,下面將分步對(duì) spi 的 8 個(gè)時(shí)鐘周期的數(shù)據(jù)情況演示一遍: 假設(shè)上升沿發(fā)送數(shù)據(jù)脈沖 主機(jī) sbuff從機(jī) sbuff sdi sdo0 10101010 01010101 0 01 上 0101010x 1010101x 0 11 下 01010100 10101011 0 12 上 1010100x 0101011x 1 02 下 10101001 01010110 1 03 上 0101001x 1010110x 0 13 下 01010010 10101101 0 14 上 1010010x 0101101x 1 04 下 10100101 0101

10、1010 1 05 上 0100101x 1011010x 0 15 下 01001010 10110101 0 16 上 1001010x 0110101x 1 06 下 10010101 01101010 1 07 上 0010101x 1101010x 0 17 下 00101010 11010101 0 18 上 0101010x 1010101x 1 08 下 01010101 10101010 1 0這樣就完成了兩個(gè)寄存器8 位的交換,上面的上表示上升沿、下表示下降沿,sdi 、sdo 相對(duì)于主機(jī)而言的。其中ss 引腳作為主機(jī)的時(shí)候,從機(jī)可以把它拉底被動(dòng)選為從機(jī),作為從機(jī)的是時(shí)候,

11、可以作為片選腳用。根據(jù)以上分析,一個(gè)完整的傳送周期是16 位,即兩個(gè)字節(jié),因?yàn)?,首先主機(jī)要發(fā)送命令過(guò)去,然后從機(jī)根據(jù)主機(jī)的名準(zhǔn)備數(shù)據(jù),主機(jī)在下一個(gè)8位時(shí)鐘周期才把數(shù)據(jù)讀回來(lái)SPI 總線是 Motorola 公司推出的三線同步接口,同步串行 3 線方式進(jìn)行通信 : 一條時(shí)鐘線SCK,一條數(shù)據(jù)輸入線 MOSI,一條數(shù)據(jù)輸出線 MISO;用于 CPU與各種外圍器件進(jìn)行全雙工、同步串行通訊。 SPI 主要特點(diǎn)有 : 可以同時(shí)發(fā)出和接收串行數(shù)據(jù) ; 可以當(dāng)作主機(jī)或從機(jī)工作 ; 提供頻率可編程時(shí)鐘 ; 發(fā)送結(jié)束中斷標(biāo)志 ; 寫(xiě)沖突保護(hù) ; 總線競(jìng)爭(zhēng)保護(hù)等。 圖 3 示出 SPI 總線工作的四種方式,其中使用的最為廣泛的是 SPI0 和 SPI3 方式 ( 實(shí)線表示 ):圖 2SPI總線四種工作方式SPI 模塊為了和外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性( CPOL)對(duì)傳輸協(xié)議沒(méi)有重大的影響。如果 CPOL=0,串行同步時(shí)鐘的空閑狀態(tài)為低電平; 如果 CPOL=1,串行同步時(shí)鐘的空閑狀態(tài)為高電平。 時(shí)鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸。如果 CPHA=0,在串行同步時(shí)鐘的第一個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣;如果 CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論