<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > SPI總線(xiàn)的特點(diǎn)、工作方式及常見(jiàn)錯誤解答

SPI總線(xiàn)的特點(diǎn)、工作方式及常見(jiàn)錯誤解答

作者: 時(shí)間:2011-05-12 來(lái)源:網(wǎng)絡(luò ) 收藏

模式錯誤的檢測

圖6模式錯誤的檢測

  4.3 溢出錯誤(OVR)

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

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

溢出錯誤

圖7溢出錯誤

  通過(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.4 偏移錯誤(OFST)

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

偏移錯誤

圖8偏移錯誤

  在一個(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í)停止計數。

  4.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的傳輸工作,這樣就可以避免錯誤一直持續下去。

  在應用中,如果對數據的正確性要求較高,除了要在軟件上滿(mǎn)足SPI接口的時(shí)序要求外,還需要在軟件上作適當的處理。

  5.設計SPI控制器

  目前的項目中使用了SPI接口的FLASH存儲器存儲圖像數據。FLASH的SPI頻率高達66M,但MCU的頻率較低,晶振頻率7.3728M,SPI最大頻率為主頻1/2。對于320*240*16的圖像讀取時(shí)間為333ms,而且還忽略了等待SPI傳輸完成、寫(xiě)顯存、地址坐標設定等時(shí)間。實(shí)際測試約為1s。成為GUI設計的極大瓶頸。由于TFT驅動(dòng)是自己FPGA設計的,資源尚有余量,決定把SPI控制器(主)及寫(xiě)圖像部分邏輯放入FPGA中用硬件完成。

  首先接觸到的是SPI的SCK時(shí)鐘頻率問(wèn)題。FPGA的頻率是48M,未使用PLL。能否以此頻率作為SCK頻率呢?要知道所有的MCU提供的SPI頻率最大為主頻的1/2!為什么呢?查過(guò)一些資料后發(fā)現,SPI從機接收數據并不是以SCK為時(shí)鐘的,而是以主頻為時(shí)鐘對SCK和MISO進(jìn)行采樣,由采樣原理得知SCK不能大于1/2主頻,也就有了MCU提供最大master頻率是1/2主頻,最大slaver頻率是1/4主頻。FPGA在只作為主機時(shí)能否實(shí)現同主頻一樣頻率的SCK呢??答案貌似是肯定的!但我還是有點(diǎn)擔心,用組合邏輯控制SCK會(huì )不會(huì )出現較大毛刺影響系統穩定性呢?

晶振相關(guān)文章:晶振原理

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: SPI 總線(xiàn) 工作方式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>