SPI接口的出錯(cuò)分析及其改進(jìn)_第1頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、spi接口的出錯(cuò)分析及其改進(jìn)()系統(tǒng)為了與spi標(biāo)準(zhǔn)外圍接口器件舉行通信,必需用法spi( serial peripheral interface,串行外設(shè)接口)。spi總線系統(tǒng)是motorola提出的一種同步串行外設(shè)接口,有信號線少、協(xié)議容易、傳輸速度快的特點(diǎn),因此有不少外圍器件都采納spi總線,如flash ram、a/ d轉(zhuǎn)換器、mcu以及計(jì)算機(jī)網(wǎng)絡(luò)等。mcu中的spi接口通過配置可與各個(gè)廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件挺直銜接。對于那些沒有spi接口功能的mcu來說,spi接口的功能靠軟件控制mcu的i/o口的辦法來模擬。不過,用軟件來模擬spi接口的功能,工作速度十分慢,并且需要主從器件的

2、軟件之間協(xié)作得十分好。假如在單片機(jī)芯片內(nèi)部用硬件來完成spi接口功能,在硬件增強(qiáng)不多的狀況下,能夠極大地提高傳輸速度(最高頻率可達(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ò)狀況,并針對各種狀況,增加spi接口的錯(cuò)誤處理能力。1 spr設(shè)定錯(cuò)誤在從器件時(shí)鐘頻率小于主器件時(shí)鐘頻率時(shí),假如sck的速率設(shè)得太快,將導(dǎo)致接收到的數(shù)據(jù)不正確(spi接口本身難以推斷收到的數(shù)據(jù)是否正確,要在

3、軟件中處理)。囫圇系統(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)系。圖1主從時(shí)鐘和sck的關(guān)系1所示,當(dāng)t從圖2中,當(dāng)t從tsck/22t主時(shí),在clk_s的兩個(gè)升高沿都檢測不到sck的低電平,這樣從器件就會漏掉一個(gè)sck。在某些相位條件下,即使clk從僥幸能檢測到sck的低電平,也不能保證可以繼續(xù)檢測到下一個(gè)sck。只要遺漏了一個(gè)sck

4、,就相當(dāng)于串行數(shù)據(jù)漏掉了一個(gè)位,后面繼續(xù)接收/發(fā)送的數(shù)據(jù)就都是錯(cuò)誤的了。圖2主從時(shí)鐘和sck的關(guān)系按照以上的分析,spr和主從時(shí)鐘比的關(guān)系如表1所列。在發(fā)送數(shù)據(jù)之前根據(jù)表1對spr舉行設(shè)置,spr設(shè)定錯(cuò)誤可以徹低避開。2 模式錯(cuò)誤(modf)模式錯(cuò)誤表示的是主從模式挑選的設(shè)置和引腳ss的銜接不全都。器件工作在主模式的時(shí)候(mstr=1),它的片選信號ss引腳必需接高電平。在發(fā)送數(shù)據(jù)的過程中,假如它的ss從高電平跳至低電平,在ss的下降沿,spi模塊將檢測到模式錯(cuò)誤,對modf位置1,強(qiáng)制器件從主模式轉(zhuǎn)入從模式(即令mstr0),清空內(nèi)部計(jì)數(shù)器counter,并結(jié)束正在舉行的數(shù)據(jù)傳輸,3(a)所

5、示。對從模式(mstr=0),在沒有數(shù)據(jù)傳送的時(shí)候,ss高電平表示從器件未被選中,從器件不工作,miso輸出高阻;在數(shù)據(jù)傳輸過程中,片選信號ss必需接低電平,且ss不允許跳變。假如ss從低電平跳到高電平,在ss的上跳沿,spi模塊也將檢測到模式錯(cuò)誤,清空內(nèi)部計(jì)數(shù)器counter,并結(jié)束正在舉行的數(shù)據(jù)傳輸。直到ss復(fù)原為低電平,重新使spen1時(shí),才重新開頭工作,3(b)所示。圖3模式錯(cuò)誤的檢測3 溢出錯(cuò)誤(ovr)溢出錯(cuò)誤表示延續(xù)傳輸多個(gè)數(shù)據(jù)時(shí),后一個(gè)數(shù)據(jù)籠罩了前一個(gè)數(shù)據(jù)而產(chǎn)生的錯(cuò)誤。狀態(tài)標(biāo)記spif表示的是數(shù)據(jù)傳輸正在舉行中,它對數(shù)據(jù)的傳輸有較大的影響。主器件的spif有效由數(shù)據(jù)寄存器的空標(biāo)

6、記spte0產(chǎn)生,而從器件的spif有效則只能由收到的第一個(gè)sck的跳變產(chǎn)生,且又因?yàn)閺钠骷膕pif和主器件發(fā)出的sck是異步的,因此從器件的傳輸標(biāo)記spif從相對于主器件的傳輸標(biāo)記spif主有一定的滯后。4所示,在主器件延續(xù)發(fā)送兩個(gè)數(shù)據(jù)的時(shí)候?qū)⒂锌赡軐?dǎo)致從器件的傳輸標(biāo)記和主器件下一個(gè)數(shù)據(jù)的傳輸標(biāo)記相重疊(圖4中虛線和陰影部分),第一個(gè)收到的數(shù)據(jù)必定被籠罩,其次個(gè)數(shù)據(jù)的收/發(fā)也必定出錯(cuò),產(chǎn)生溢出錯(cuò)誤。圖4溢出錯(cuò)誤通過對從器件的波形分析發(fā)覺,counter8后的第一個(gè)時(shí)鐘周期,數(shù)據(jù)最后一位的傳輸已經(jīng)完成。在數(shù)據(jù)已經(jīng)收/發(fā)完畢的狀況下,counter8狀態(tài)的長短對數(shù)據(jù)的正確性沒有影響,因此可以縮

7、短counter8的狀態(tài),以避開前一個(gè)spif和后一個(gè)spif相重疊。這樣,從硬件上避開了這一階段的溢出錯(cuò)誤。但是,假如從器件工作速度不夠快或者軟件正在處理其他事情,在spi接口接收到的數(shù)據(jù)尚未被讀取的狀況下,又接收到一個(gè)新的數(shù)據(jù),溢出錯(cuò)誤還是會發(fā)生的。此時(shí),spi接口庇護(hù)前一個(gè)數(shù)據(jù)不被籠罩,舍棄新收到的數(shù)據(jù),置溢出標(biāo)記ovr1;另外發(fā)出中斷信號(假如該中斷允許),通知從器件準(zhǔn)時(shí)讀取數(shù)據(jù)。4 偏移錯(cuò)誤(ofst)spi接口普通要求從器件先工作,然后主器件才開頭發(fā)送數(shù)據(jù)。有時(shí)在主器件往外發(fā)送數(shù)據(jù)的過程中,從器件才開頭工作,或者sck受到外界干擾,從器件未能精確地接收到8個(gè)sck。5所示,從器件接

8、收到的8個(gè)sck其實(shí)是屬于主器件發(fā)送相鄰的兩個(gè)數(shù)據(jù)的sck主。這時(shí),主器件的spif和從器件的spif會發(fā)生重疊,數(shù)據(jù)發(fā)生了錯(cuò)位,從器件假如不對此舉行訂正的話,數(shù)據(jù)的接收/發(fā)送便向來地錯(cuò)下去。圖5偏移錯(cuò)誤在一個(gè)數(shù)據(jù)的傳輸過程中,spr是不允許轉(zhuǎn)變的,即sck是勻稱的,而從圖5可以看出,從器件接收到的8個(gè)sck并不勻稱,它們是分離屬于兩個(gè)數(shù)據(jù)的,因此可以計(jì)算sck的占空時(shí)光來推斷是否發(fā)生了偏移錯(cuò)誤。經(jīng)分析,正常時(shí)候sck1時(shí)的時(shí)鐘周期數(shù)n的取值滿足如下關(guān)系:但因?yàn)橹鲝臅r(shí)鐘之間是異步的,并且經(jīng)過了取整,所以正常時(shí)候sck1時(shí)的時(shí)鐘周期計(jì)數(shù)值count應(yīng)滿足:比如在圖5中,count的最大值coun

9、t(max)2或者1,都可認(rèn)為是正常的。但當(dāng)浮現(xiàn)count(max)8時(shí),可以判定浮現(xiàn)了偏移錯(cuò)誤。在實(shí)際設(shè)計(jì)中,先記錄下第一個(gè)count(max)的值,假如后面又浮現(xiàn)與記錄值相差1以上的count(max)浮現(xiàn),可知有偏移錯(cuò)誤ofst發(fā)生。spi接口在“不勻稱”的地方令spif1,然后預(yù)備等待下一個(gè)數(shù)據(jù)的第一個(gè)sck。其中count的位數(shù)固定為8位,為了避開溢出時(shí)重新從00h開頭計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到ffh時(shí)停止計(jì)數(shù)。5 其他錯(cuò)誤設(shè)定不當(dāng),或者受到外界干擾,數(shù)據(jù)傳輸難免會發(fā)生錯(cuò)誤,或者有時(shí)軟件對錯(cuò)誤的種類推斷不清,必需要有一種辦法強(qiáng)制spi接口從錯(cuò)誤狀態(tài)中復(fù)原過來。在spi不工作,即spen0的時(shí)候,清除spi模塊內(nèi)部幾乎全部的狀態(tài)(專用寄存器除外)。假如軟件在接收數(shù)據(jù)的時(shí)候,能夠發(fā)覺數(shù)據(jù)有錯(cuò)誤,無論是什么錯(cuò)誤,都可以強(qiáng)制停止spi的工作,重新舉行數(shù)據(jù)傳輸。例如,在偏移錯(cuò)誤(ofst)中,假如spr2、spr1和spr0的設(shè)置適當(dāng),也可以使sck顯得比較“勻稱”。spi接口硬件本身不行能檢測到有錯(cuò)誤,若用戶軟件能夠發(fā)覺錯(cuò)誤,這時(shí)就可以強(qiáng)制停止spi的傳輸工作,這樣就可以避開錯(cuò)誤向來持續(xù)下去。結(jié)語本文對spi接口之間數(shù)據(jù)傳輸中各種出錯(cuò)狀況舉行分析,并

溫馨提示

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

最新文檔

評論

0/150

提交評論