2012-01-15 46 views
4

我一直在試圖做一個SD卡接口與LPC1766SPI外設有一段時間,現在我卡在一個問題,我無法找到答案的任何地方。SDHC SPI寫入問題

問題是:SDHC卡沒有按預期響應寫入和讀取命令。

基於Chan的流程圖和恩智浦應用筆記的初始化一切正常。我可以區分卡片版本,閱讀OCR,CID和CSD並確定它們的大小。

之後,我開始每隔一秒寫一個塊並讀回來檢查數據的完整性。在金士頓SDHC 4   GB類  4卡我可以發送第一個寫命令,但第二個卡甚至不會迴應(0x00或0x01)到CMD24。使用SanDisk 4卡  4卡的結果是不同的,每個命令都是由卡來回答的,但是在讀取數據時我只得到零(我確信我不寫零)。如果我使用SDSC卡,一切正常。

我知道SDHC是塊地址,不是字節地址,我需要發送ACMD41與CCS的SDHC。我也知道時鐘頻率不是問題(使用400   KHz開始,然後20   MHz寫入/讀取),因爲我剛打開CRC校驗,所有卡都接受命令和數據。如果我停止計算CRC所有卡片拒絕命令和數據。

+2

使用陳的[FatFs](http://elm-chan.org/fsw/ff/00index_e.html),我已經取得了大於2Gb的牌的成功。我一直認爲工作的卡是帶有2048字節塊而不是v2.0 SDHC的SD版本1.01 SDSC卡。由於我不需要更高的容量,我從來沒有進一步研究過它。 – Clifford 2012-01-17 20:21:02

+0

我記得我修改了Chan的代碼,所以我可以在沒有powerUps的情況下正確初始化SanDisk卡。你可以顯示你使用的SD卡代碼嗎? – jeb 2012-01-29 14:25:27

+1

原因可能是SPI驅動程序,如果您使用的是FIFO,請注意RX-Fifo在完成填充TX-Fifo時可能會溢出的問題,因爲它可以有效地發送17個字節(我的驅動程序在那裏失效) – jeb 2012-09-27 06:43:43

回答

0

你如何連接你的SD卡?根據模式/狀態,SD(HC)卡需要一個外部上拉電阻。沒有這個你讀零,所以這可能是你的問題。