新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SPI接口的出錯(cuò)分析及其改進(jìn)

SPI接口的出錯(cuò)分析及其改進(jìn)

作者: 時(shí)間:2012-07-19 來源:網(wǎng)絡(luò) 收藏

  單片機(jī)(MCU)系統(tǒng)為了與SPI標(biāo)準(zhǔn)外圍接口器件進(jìn)行通信,必須使用SPI( Serial Peripheral Interface,串行外設(shè)接口)總線。SPI總線系統(tǒng)是Motorola提出的一種同步串行外設(shè)接口,有信號線少、協(xié)議簡單、傳輸速度快的特點(diǎn),因此有不少外圍器件都采用SPI總線,如Flash RAM、A/ D轉(zhuǎn)換器、LED顯示器、MCU以及計(jì)算機(jī)網(wǎng)絡(luò)等。MCU中的通過配置可與各個(gè)廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件直接連接。

  對于那些沒有功能的MCU來說,的功能靠軟件控制MCU的I/O口的方法來模擬。不過,用軟件來模擬SPI接口的功能,工作速度非常慢,并且需要主從器件的軟件之間配合得非常好。如果在單片機(jī)芯片內(nèi)部用硬件電路來完成SPI接口功能,在硬件增加不多的情況下,能夠極大地提高傳輸速度(最高頻率可達(dá)主器件的頻率的1/4),減輕軟件的負(fù)擔(dān),使用極為方便。

  SPI接口工作的時(shí)候,沒有應(yīng)答信號,并且數(shù)據(jù)在發(fā)送的時(shí)候無需校驗(yàn)位,所以,要求主從器件的軟件必須完全符合SPI的時(shí)序要求,否則數(shù)據(jù)傳輸很容易出現(xiàn)錯(cuò)誤。本文通過MCU中SPI接口模塊的設(shè)計(jì),分析數(shù)據(jù)傳輸?shù)母鞣N出錯(cuò)情況,并針對各種情況,增強(qiáng)SPI接口的錯(cuò)誤處理能力。

1、設(shè)定錯(cuò)誤

  在從器件時(shí)鐘頻率小于主器件時(shí)鐘頻率時(shí),如果SCK的速率設(shè)得太快,將導(dǎo)致接收到的數(shù)據(jù)不正確(SPI接口本身難以判斷收到的數(shù)據(jù)是否正確,要在軟件中處理)。

  整個(gè)系統(tǒng)的速度受三個(gè)因素影響:主器件時(shí)鐘CLK主、從器件時(shí)鐘CLK從和同步串行時(shí)鐘SCK,其中SCK是對CLK主的分頻,CLK從和CLK主是異步的。要使SCK無差錯(cuò)無遺漏地被從器件所檢測到,從器件的時(shí)鐘CLK從必須要足夠快。下面以SCK設(shè)置為CLK主的4分頻的波形為例,分析同步串行時(shí)鐘、主時(shí)鐘和從時(shí)鐘之間的關(guān)系。

點(diǎn)擊在新窗口中瀏覽產(chǎn)品
圖1主從時(shí)鐘和SCK的關(guān)系

  如圖1所示,當(dāng)T從Tsck/2,即T從<2T主時(shí),無論主時(shí)鐘和從時(shí)鐘之間的相位關(guān)系如何,在從器件CLK從的上升沿必然能夠檢測到SCK的低電平,即SCK=0的范圍內(nèi)至少包含一個(gè)CLK從的上升沿。

  圖2中,當(dāng)T從≥TSCK/2=2T主時(shí),在clk_s的兩個(gè)上升沿都檢測不到SCK的低電平,這樣從器件就會(huì)漏掉一個(gè)SCK。在某些相位條件下,即使CLK從僥幸能檢測到SCK的低電平,也不能保證可以繼續(xù)檢測到下一個(gè)SCK。只要遺漏了一個(gè)SCK,就相當(dāng)于串行數(shù)據(jù)漏掉了一個(gè)位,后面繼續(xù)接收/發(fā)送的數(shù)據(jù)就都是錯(cuò)誤的了。

點(diǎn)擊在新窗口中瀏覽產(chǎn)品
圖2主從時(shí)鐘和SCK的關(guān)系

  根據(jù)以上的分析,和主從時(shí)鐘比的關(guān)系如表1所列。

表1的設(shè)置和主從時(shí)鐘周期比值之間的關(guān)系

  在發(fā)送數(shù)據(jù)之前按照表1對SPR進(jìn)行設(shè)置,SPR設(shè)定錯(cuò)誤可以完全避免。


上一頁 1 2 3 下一頁

關(guān)鍵詞: SPI接口 傳輸過程 SPR

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉