国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

SPI接口的出錯分析及其改進

發布時間:2010-9-11 13:06    發布者:techshare
關鍵詞: spi , 出錯分析 , 接口
單片機MCU)系統為了與SPI標準外圍接口器件進行通信,必須使用SPI( Serial Peripheral Interface,串行外設接口)總線。SPI總線系統是Motorola提出的一種同步串行外設接口,有信號線少、協議簡單、傳輸速度快的特點,因此有不少外圍器件都采用SPI總線,如Flash RAM、A/ D轉換器、LED顯示器、MCU以及計算機網絡等。MCU中的SPI接口通過配置可與各個廠家生產的多種標準外圍器件直接連接。

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

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

1 SPR設定錯誤

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

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



圖1主從時鐘和SCK的關系  

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





圖2主從時鐘和SCK的關系  

根據以上的分析,SPR和主從時鐘比的關系如表1所列。

在發送數據之前按照表1對SPR進行設置,SPR設定錯誤可以完全避免。


2 模式錯誤(MODF)

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

器件工作在主模式的時候(MSTR=1),它的片選信號SS引腳必須接高電平。在發送數據的過程中,如果它的SS從高電平跳至低電平,在SS的下降沿,SPI模塊將檢測到模式錯誤,對MODF位置1,強制器件從主模式轉入從模式(即令MSTR=0),清空內部計數器counter,并結束正在進行的數據傳輸,如圖3(a)所示。  

對從模式(MSTR=0),在沒有數據傳送的時候,SS高電平表示從器件未被選中,從器件不工作,MISO輸出高阻;在數據傳輸過程中,片選信號SS必須接低電平,且SS不允許跳變。如果SS從低電平跳到高電平,在SS的上跳沿,SPI模塊也將檢測到模式錯誤,清空內部計數器counter,并結束正在進行的數據傳輸。直到SS恢復為低電平,重新使SPEN=1時,才重新開始工作,如圖3(b)所示。




圖3模式錯誤的檢測  

3 溢出錯誤(OVR)

溢出錯誤表示連續傳輸多個數據時,后一個數據覆蓋了前一個數據而產生的錯誤。

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





圖4溢出錯誤  

通過對從器件的波形分析發現,counter=8后的第一個時鐘周期,數據最后一位的傳輸已經完成。在數據已經收/發完畢的情況下,counter=8狀態的長短對數據的正確性沒有影響,因此可以縮短counter=8的狀態,以避免前一個SPIF和后一個SPIF相重疊。這樣,從硬件上避免了這一階段的溢出錯誤。

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

4 偏移錯誤(OFST)

SPI接口一般要求從器件先工作,然后主器件才開始發送數據。有時在主器件往外發送數據的過程中,從器件才開始工作,或者SCK受到外界干擾,從器件未能準確地接收到8個SCK。如圖5所示,從器件接收到的8個SCK其實是屬于主器件發送相鄰的兩個數據的SCK主。這時,主器件的SPIF和從器件的SPIF會發生重疊,數據發生了錯位,從器件如果不對此進行糾正的話,數據的接收/發送便一直地錯下去。




圖5偏移錯誤  

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




但由于主從時鐘之間是異步的,并且經過了取整,所以正常時候SCK=1時的時鐘周期計數值COUNT應滿足:




比如在圖5中,COUNT的最大值COUNT(max)=2或者1,都可認為是正常的。但當出現COUNT(max)=8時,可以判定出現了偏移錯誤。在實際設計中,先記錄下第一個COUNT(max)的值,如果后面又出現與記錄值相差1以上的COUNT(max)出現,可知有偏移錯誤OFST發生。SPI接口在“不均勻”的地方令SPIF=1,然后準備等待下一個數據的第一個SCK。其中COUNT的位數固定為8位,為了避免溢出時重新從00H開始計數,當計數達到ffH時停止計數。

5 其他錯誤

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

結語

本文對SPI接口之間數據傳輸中各種出錯情況進行分析,并對SPI接口處理錯誤的能力進行增強。對一些傳輸錯誤,SPI接口可以檢測出來,通過對各種錯誤狀態寄存器進行置位,并做相應的處理解決。但是有些錯誤由硬件本身造成,是檢測不到的。因此,在應用中,如果對數據的正確性要求較高,除了要在軟件上滿足SPI接口的時序要求外,還需要在軟件上作適當的處理。
本文地址:http://www.qingdxww.cn/thread-26137-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
qq847941010 發表于 2010-9-14 23:17:09
Thanks
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 你仿真過嗎?使用免費的MPLAB Mindi模擬仿真器降低設計風險
  • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
  • 更佳設計的解決方案——Microchip模擬開發生態系統
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 青青草国产在线 | xxxxx性欧美hd另类 | 日日操夜夜操视频 | 欧美成人免费一级人片 | 最新亚洲国产有精品 | 国产午夜不卡在线观看视频666 | 亚洲爱爱视频 | 日韩欧美国产高清 | 91麻豆最新在线人成免费观看 | 欧美视频1 | 成人啪精品视频免费网站 | 一级女人18片毛片免费视频 | 日本-区二区三区免费精品 日本强日本不卡一 | 亚洲欧美另类日韩 | 欧美精品一区二区三区久久 | 噜噜噜久久久 | 久草视频国产 | 国产高清一级在线观看 | 香蕉视频破解版 | 华人91视频 | 亚洲精品国产精品国自产网站 | 国产福利午夜自产拍视频在线 | 国产一区二区免费在线 | 精品国产福利第一区二区三区 | 五月天六月婷婷开心激情 | 亚洲婷婷综合网 | 一级毛片在线观看免费 | 日本精品视频 | 天天干人人 | 日韩欧美在线观看视频 | 赘婿动画在线观看免费完整版 | 草莓视频丝瓜视频下载 | 99久久免费看国产精品 | 欧美丝袜高跟鞋一区二区 | 成年美女黄网站色视频大全免费 | 国产极品粉嫩 | 福利视频欧美一区二区三区 | 午夜国产| 欧美成人精品在线 | 大伊香蕉精品视频在线75 | 久久亚洲不卡一区二区 |