|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
讀取SD卡出現(xiàn)的怪現(xiàn)象,請高手指點 |
| 作者:cyh537 欄目:嵌入式系統(tǒng) |
讀取block數(shù)據(jù)時出現(xiàn)的問題 使用SANDISK 512M SD卡 使用spi模式 使用CMD17 讀取SINGLE block 送進(jìn)去的block地址必須加上0xed才能讀取到正確位置的數(shù)據(jù)。 在sd的規(guī)范里怎么也找不到關(guān)于這個偏移地址的說法。 但是,添加后,程序的確可以正常工作。實在搞不明白,請高手指點。 程序如下: INT8U SD_ReadBlock(INT32U blockaddr, INT8U *recbuf) { INT8U ret; sds.block_num = 0x%x \n\r\n\r",sds.block_num); //next 1 LINE added by cyh according much data. blockaddr += 0xed; //add code end if (blockaddr > sds.block_num) return SD_ERR_OVER_CARDRANGE; /* 操作超出卡容量范圍 operate over the card range */ ret = SD_ReadSingleBlock(blockaddr); /* 讀單塊命令 read SINGLE blocks command */ if (ret != SD_NO_ERR) return ret; return (SD_ReadBlockData(SD_BLOCKSIZE, recbuf));/* 讀出數(shù)據(jù) read data from sd card */ } |
| 2樓: | >>參與討論 |
| 作者: liandao 于 2006/12/13 11:38:00 發(fā)布:
也許是理解的問題 送進(jìn)去的block地址必須加上0xed才能讀取到正確位置的數(shù)據(jù)。 --你是如何確認(rèn):在SD卡上,你所指定的地址和數(shù)據(jù)對應(yīng)關(guān)系,而當(dāng)你用上面的代碼做測試時才發(fā)現(xiàn)跟這個對應(yīng)關(guān)系不符合? 有沒有文件系統(tǒng)?上面的讀取是在文件系統(tǒng)之上的么? |
|
| 3樓: | >>參與討論 |
| 作者: 平常人 于 2006/12/13 21:28:00 發(fā)布:
你是如何知道讀出了正確的數(shù)據(jù)?數(shù)據(jù)是如何寫進(jìn)去的? |
|
| 4樓: | >>參與討論 |
| 作者: eleven11 于 2006/12/13 21:40:00 發(fā)布:
哈哈 一看就是zlg的程序,zlg的程序我調(diào)過,除了spi的頻率算錯了沒有問題的,在這里讀寫的都是絕對地址,沒有偏移地址一說的,就算是對多分區(qū)操作,也是在文件系統(tǒng)對底層操作的時候轉(zhuǎn)換為絕對地址 * - 本貼最后修改時間:2006-12-13 21:44:36 修改者:eleven11 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |