欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
SPI接口的出錯分析及其改進(jìn)

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

作者:未知   時(shí)間:2007-10-18 21:36:26  來(lái)自:網(wǎng)上轉載  瀏覽次數:602  文字大?。骸?a href="javascript:fontZoom(16)">大】【】【

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

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

 SPI接口工作的時(shí)候,沒(méi)有應答信號,并且數據在發(fā)送的時(shí)候無(wú)需校驗位,所以,要求主從器件的軟件必須完全符合SPI的時(shí)序要求,否則數據傳輸很容易出現錯誤。本文通過(guò)MCU中SPI接口模塊的設計,分析數據傳輸的各種出錯情況,并針對各種情況,增強SPI接口的錯誤處理能力。

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

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

 
圖1主從時(shí)鐘和SCK的關(guān)系

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

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

 
圖2主從時(shí)鐘和SCK的關(guān)系

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

 
表1 SPR的設置和主從時(shí)鐘周期比值之間的關(guān)系
 在發(fā)送數據之前按照表1對SPR進(jìn)行設置,SPR設定錯誤可以完全避免。

2 模式錯誤(MODF)
 模式錯誤表示的是主從模式選擇的設置和引腳SS的連接不一致。

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

 
圖3模式錯誤的檢測

3 溢出錯誤(OVR)
 溢出錯誤表示連續傳輸多個(gè)數據時(shí),后一個(gè)數據覆蓋了前一個(gè)數據而產(chǎn)生的錯誤。

 狀態(tài)標志SPIF表示的是數據傳輸正在進(jìn)行中,它對數據的傳輸有較大的影響。主器件的SPIF有效由數據寄存器的空標志SPTE=0產(chǎn)生,而從器件的SPIF有效則只能由收到的第一個(gè)SCK的跳變產(chǎn)生,且又由于從器件的SPIF和主器件發(fā)出的SCK是異步的,因此從器件的傳輸標志SPIF從相對于主器件的傳輸標志SPIF主有一定的滯后。如圖4所示,在主器件連續發(fā)送兩個(gè)數據的時(shí)候將有可能導致從器件的傳輸標志和主器件下一個(gè)數據的傳輸標志相重疊(圖4中虛線(xiàn)和陰影部分),第一個(gè)收到的數據必然被覆蓋,第二個(gè)數據的收/發(fā)也必然出錯,產(chǎn)生溢出錯誤。

 
圖4溢出錯誤

  通過(guò)對從器件的波形分析發(fā)現,counter=8后的第一個(gè)時(shí)鐘周期,數據最后一位的傳輸已經(jīng)完成。在數據已經(jīng)收/發(fā)完畢的情況下,counter=8狀態(tài)的長(cháng)短對數據的正確性沒(méi)有影響,因此可以縮短counter=8的狀態(tài),以避免前一個(gè)SPIF和后一個(gè)SPIF相重疊。這樣,從硬件上避免了這一階段的溢出錯誤。

  但是,如果從器件工作速度不夠快或者軟件正在處理其他事情,在SPI接口接收到的數據尚未被讀取的情況下,又接收到一個(gè)新的數據,溢出錯誤還是會(huì )發(fā)生的。此時(shí),SPI接口保護前一個(gè)數據不被覆蓋,舍棄新收到的數據,置溢出標志OVR=1;另外發(fā)出中斷信號(如果該中斷允許),通知從器件及時(shí)讀取數據。

4 偏移錯誤(OFST)
  SPI接口一般要求從器件先工作,然后主器件才開(kāi)始發(fā)送數據。有時(shí)在主器件往外發(fā)送數據的過(guò)程中,從器件才開(kāi)始工作,或者SCK受到外界干擾,從器件未能準確地接收到8個(gè)SCK。如圖5所示,從器件接收到的8個(gè)SCK其實(shí)是屬于主器件發(fā)送相鄰的兩個(gè)數據的SCK主。這時(shí),主器件的SPIF和從器件的SPIF會(huì )發(fā)生重疊,數據發(fā)生了錯位,從器件如果不對此進(jìn)行糾正的話(huà),數據的接收/發(fā)送便一直地錯下去。

 
圖5偏移錯誤

 在一個(gè)數據的傳輸過(guò)程中,SPR是不允許改變的,即SCK是均勻的,而從圖5可以看出,從器件接收到的8個(gè)SCK并不均勻,它們是分別屬于兩個(gè)數據的,因此可以計算SCK的占空時(shí)間來(lái)判斷是否發(fā)生了偏移錯誤。經(jīng)分析,正常時(shí)候SCK=1時(shí)的時(shí)鐘周期數n的取值滿(mǎn)足如下關(guān)系:

 
 但由于主從時(shí)鐘之間是異步的,并且經(jīng)過(guò)了取整,所以正常時(shí)候SCK=1時(shí)的時(shí)鐘周期計數值COUNT應滿(mǎn)足:
 
 比如在圖5中,COUNT的最大值COUNT(max)=2或者1,都可認為是正常的。但當出現COUNT(max)=8時(shí),可以判定出現了偏移錯誤。在實(shí)際設計中,先記錄下第一個(gè)COUNT(max)的值,如果后面又出現與記錄值相差1以上的COUNT(max)出現,可知有偏移錯誤OFST
發(fā)生。SPI接口在“不均勻”的地方令SPIF=1,然后準備等待下一個(gè)數據的第一個(gè)SCK。其中COUNT的位數固定為8位,為了避免溢出時(shí)重新從00H開(kāi)始計數,當計數達到ffH時(shí)停止計數。

5 其他錯誤
 設定不當,或者受到外界干擾,數據傳輸難免會(huì )發(fā)生錯誤,或者有時(shí)軟件對錯誤的種類(lèi)判斷不清,必須要有一種方法強制SPI接口從錯誤狀態(tài)中恢復過(guò)來(lái)。在SPI不工作,即SPEN=0的時(shí)候,清除SPI模塊內部幾乎所有的狀態(tài)(專(zhuān)用寄存器除外)。如果軟件在接收數據的時(shí)候,能夠發(fā)現數據有錯誤,無(wú)論是什么錯誤,都可以強制停止SPI的工作,重新進(jìn)行數據傳輸。例如,在偏移錯誤(OFST)中,如果SPR2、SPR1和SPR0的設置適當,也可以使SCK顯得比較“均勻”。SPI接口硬件本身不可能檢測到有錯誤,若用戶(hù)軟件能夠發(fā)現錯誤,這時(shí)就可以強制停止SPI的傳輸工作,這樣就可以避免錯誤一直持續下去。

結語(yǔ)
 本文對SPI接口之間數據傳輸中各種出錯情況進(jìn)行分析,并對SPI接口處理錯誤的能力進(jìn)行增強。對一些傳輸錯誤,SPI接口可以檢測出來(lái),通過(guò)對各種錯誤狀態(tài)寄存器進(jìn)行置位,并做相應的處理解決。但是有些錯誤由硬件本身造成,是檢測不到的。因此,在應用中,如果對數據的正確性要求較高,除了要在軟件上滿(mǎn)足SPI接口的時(shí)序要求外,還需要在軟件上作適當的處理。

參考文獻
1 ATMEL 8bit Flash Microcontroller with 2wire Interface
2 高谷剛,羅春. 可復用SPI模塊IP核的設計與驗證. 單片機與嵌入式系統應用, 2004(11)
3 李剛. ADμC8XX系列單片機原理與應用技術(shù). 北京:北京航空航天大學(xué)出版社,2002

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
51 單片機模擬 SPI 總線(xiàn)的方法
帶你更深入理解SPI總線(xiàn)
帶你了解串行外設接口SPI通訊協(xié)議的世界
SPI通信協(xié)議中文版
LED大屏幕輸出電路的優(yōu)化設計
spi接口使用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久