日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SPI Flash数据移位

發(fā)布時(shí)間:2024/3/26 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SPI Flash数据移位 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

C6678外掛了一片SPI接口的Nor Flash,型號(hào)為Micron N25Q128A13BSF404F,其容量為128Mbit,由于電平匹配問(wèn)題中間使用了一片EPLD作電平轉(zhuǎn)換,將6678的1.8V電平邏輯轉(zhuǎn)換為3.3V。

問(wèn)題描述

開發(fā)和調(diào)試很順利,在完成軟件概要設(shè)計(jì)后約一周內(nèi)就完成了所有編碼和部分測(cè)試工作。但是在測(cè)試過(guò)程中發(fā)現(xiàn)當(dāng)SPI的時(shí)鐘配高一些(50MHz)的時(shí)候,就會(huì)出現(xiàn)Flash初始化不通過(guò),具體現(xiàn)象是讀取ID不正確,與正確的ID總是移位1個(gè)比特。當(dāng)把SPI時(shí)鐘調(diào)低到20MHz后又恢復(fù)正常,而在30~40MHz左右時(shí)又總是一會(huì)兒正常一會(huì)兒錯(cuò)誤。

分析排查

這時(shí)先懷疑芯片不支持這么高時(shí)鐘速率,然而查手冊(cè)發(fā)現(xiàn)其中明確提到最高支持時(shí)鐘速率為108MHz。然后又詢問(wèn)硬件設(shè)計(jì)人員物料來(lái)源,得知通過(guò)正常途徑采購(gòu),芯片本身應(yīng)該沒有什么問(wèn)題。最后問(wèn)題應(yīng)該還是歸結(jié)到軟件問(wèn)題上。

先查SPI驅(qū)動(dòng)中對(duì)分頻的配置,仔細(xì)對(duì)比手冊(cè)沒有找到問(wèn)題。然后用示波器測(cè)量時(shí)鐘引腳頻率,仍然正常。測(cè)量讀ID時(shí)主機(jī)發(fā)送的命令信號(hào),依然正常。再測(cè)量不同頻率下6678的接收引腳信號(hào),在頻率逐漸提高過(guò)程中時(shí)鐘采樣沿居然逐漸接近了數(shù)據(jù)波形的邊沿處!最終40MHz時(shí)完全采在了前一個(gè)bit的后部,結(jié)果當(dāng)然會(huì)移位1個(gè)比特。

根據(jù)這個(gè)測(cè)量結(jié)果仔細(xì)分析,終于找到了其中的原因。原來(lái)是中間的EPLD在搗鬼,信號(hào)經(jīng)過(guò)它時(shí)除了電平轉(zhuǎn)換,還會(huì)有一定的時(shí)延效應(yīng),正是這個(gè)時(shí)延導(dǎo)致了數(shù)據(jù)錯(cuò)誤。詳細(xì)分析如下。

理論分析

SPI總線由SPICS、SPICLK、SPISIMO和SPISOMI組成,其中前三根由6678驅(qū)動(dòng),后一根由N25Q驅(qū)動(dòng)。假設(shè)信號(hào)經(jīng)過(guò)EPLD的時(shí)延是Δt,以6678輸出CS的時(shí)刻為基準(zhǔn),t時(shí)刻SPICLK信號(hào)開始有效。
當(dāng)Δt=0時(shí)正常時(shí)序如圖中的時(shí)序1所示,SPISIMO和SPISOMI在SPICLK的上升沿?cái)?shù)據(jù)有效,6678和N25Q均能采樣得到正確數(shù)據(jù)。
當(dāng)Δt>0時(shí)如圖中的時(shí)序2所示。由于SPICS、SPICLK、SPISIMO的時(shí)延相等相抵消,在SPICLK上升沿N25Q仍能采得正確數(shù)據(jù),即主機(jī)向從機(jī)發(fā)送數(shù)據(jù)不受影響。

此時(shí)從機(jī)剛剛收到時(shí)鐘信號(hào),因此觸發(fā)其發(fā)出SPISOMI的輸出也才剛剛開始,比正常時(shí)間順延Δt。此信號(hào)經(jīng)過(guò)EPLD再回到6678端時(shí)再次順延Δt,而6678端的其他三根信號(hào)無(wú)時(shí)延,兩者相差達(dá)到2Δt。若此時(shí)間大于半個(gè)時(shí)鐘周期,則采樣將產(chǎn)生不穩(wěn)定,甚至錯(cuò)位。實(shí)際信號(hào)并非陡峭邊沿,因此對(duì)Δt要求更高。

理論分析完畢,接下來(lái)要實(shí)測(cè)來(lái)證實(shí)理論。用示波器的兩個(gè)通道分別測(cè)量EPLD兩端的SPICLK信號(hào),結(jié)果兩通道上信號(hào)的時(shí)間差約4ns,雙向達(dá)到8ns,且信號(hào)邊沿形狀較差。因此SPI時(shí)鐘周期不應(yīng)低于16ns,即62.5MHz,實(shí)際測(cè)試時(shí)鐘頻率在35MHz時(shí)可以正確傳輸數(shù)據(jù),到達(dá)40MHz以上時(shí)傳輸失敗。證實(shí)了理論分析。

解決方案

最后在Flash驅(qū)動(dòng)中將時(shí)鐘頻率限制在25MHz以下,規(guī)避了這個(gè)問(wèn)題。

總結(jié)

以上是生活随笔為你收集整理的SPI Flash数据移位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。