單片機(jī)讀寫(xiě)SD卡教程_第1頁(yè)
單片機(jī)讀寫(xiě)SD卡教程_第2頁(yè)
單片機(jī)讀寫(xiě)SD卡教程_第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、鄭重聲明:本實(shí)驗(yàn)并不是對(duì)所有SD卡都能成功運(yùn)行第一步:打開(kāi) win hex軟件,用讀卡器讀 SD卡,在win hex中查看SD卡FPrlrj舊nmg *御日曲日尺立件(日轄:號(hào)iifllPI譏吵:當(dāng)Tfllll春罰;I SW(£)旨口凹帶此|;也S X電a O C3* -0畫(huà)*電bld! IbiljUA 初1 悶1|館口曲佃AgraaSBJLXsta InAEiqptetEJ'03839535e on(«»: 0 16BH(*J-): 0曲* ?;第詞EKt £i2f UrEiib&d MT 1 SOB66.5 K01.2 MBFamof

2、跆hl色 TipHium 1Offset0123456739ABcnEF/1ModSfA'v wC Cans AedefDOOOOODDEc0000OD0000DOaa00000000DOaoDOoofc 1j uFirmwlrf Atv.1.D0OCIIDOOOIQ00000000oo0000OiO00no0000GOnono00.DUS:USBD000002D000000000000DO00:ir000000DO00DOaoI! DerauitEdnDD00003D0000000000aoDOaa00000000DOa)aDOaai j 4Sl5te:originaloomoQQi

3、n0000000000ononOQ00no000000QiQ0000. .Undo lewef:000000050oa0000000000DOOQ00000000m00DOQOr i, fUndo rsverses:MaD000006D00OD000000aoDOaa000000aoDOo)aDOaa-oonoau70on0000OQ0000DOoaoaOQ00QO00aoDO00. 1.7,1126.576 詡跆DOOaOOBDoa0000000000DOOQ00000000m00DO00r 1D000009D00OD000000aoDOaa000000aoDOa)aDOoaii iJ 4S

4、iapkis seclorfi 創(chuàng) entE51 3DOOQOaM)000000OQ0000noa>a00000000do00DO-”4 4OOOOOOBDoa0000000000DOOU00000000DO00DO00r i1 fPsritllfln:-:1DOOOOOCD000000aa00aoDOaa000000aoDOa)oDOoah ij 4RcISWb S-BCbOr HoNaOOOOOODD00QOm00000000no0000GO00DO0000aomdcJb:hiBoodewnalOOOOOOED000000000000DOao000000000000DO00, ,Cu

5、aiader 虻I ANSI ASCIIoooaaoFD00OD0000DOaoDOaa00000000DOa)aDOaoOR 曲:hexadecwnaloomoaioo000000OQoo00noaa00OQ0000lOOQiO00DOoooaoiiD000000000000DO Q00000000m00DO00r ilnllnuiiw *.1No ofwIridcrBVK'ID000012D00OD000000aoDOaa000000aoDOa)aDOoaii iJ 4D000013Qoo00oo00oo00ooaooonodoQfloooo00so加 Aab 用00000140D

6、U0000000000DOQO00000000DOaoDO00,.TEMPltilifer 1.2GBffeeD000015D00OD00OQ00aoDOaa000000aoDOa)aDOaaB 1J4Dmini-iilOCalS'1 打 ampQOOOQ1BO00QO00QOoo00DOaa00000000lOOQiO00DO.tJ00000170000000000000DO0000000000uo00DO00r i1 1J4D00001BD000000OQ00aoDOaa000000aoDOa)oDOoa“.J -SedamoT胡4加軸0tT9«l:a=DBlatk-Pa

7、rHion 1Siad BecWrsUnp3it(jonb*5 阿苗點(diǎn)擊查找(ctrl+F )Find Text33JJJJJJJJ3 The folouing text string wil be searched: FAT|caseASCII/Code page vUse this as a wildcardI I Whole wo(d odjjSearch: Cond.: offset mod=I_ Search in plgk onlySearch in dll open windows| List search hits, 14)to1Cancel輸入FAT (找到 DBR處)Off

8、set0123電567a9ABcDEF0001H70FFFFFFFFFFFFFFFFaFFFFVVFFFFFFFFFFyyyyyyyyyyyyyyyyU0C11160FFFFFfFFFFFFFFFFFFFFFFFFFFFFFFFfyyyyyVyyyyyyyyyy0011190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFyyyyyyyyyyyyyyyyQDQ111A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFyyyyyyyyyyyyyyyy000111B0FFFFFFFFFFFFFFFFFFFFFFFFFFfFFFFFD0011ICOFFFFFfFFFF

9、FFFFFFFFFFFFFFFFFFFFFF DinillDOFFFFFFr rFFFFFFFFFFFFFFFFFFFFFFFFyyyyyyyyyyyyyyyy000111E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFvyyyyvyyy/yyywaooniFOFFFFFfFFFFFFFFFFFFFFFFFFFFFFFFFFyyyyyjyyyyyyyyD0011200EB3CEID4D53444F53352E30cm024口02QO承晦 DOSiS.EL甩000112100200Q200ooFBEB003FQ0FF0089000000,ta, ?. y, I,0001122

10、0779F3A0000DO29DE04D3B44E4F204E41. r. Jk.OlMO NA00112304D目52D20202D46415431362D20203309MEflATlG3E00112408EDLBCFO7BBED9BEa209ECDFCBD007C倔曲nil". iXm.|0001125039怔7C24旳Cl99EQ3C0172IC63EB3Aetn)siAu<,rU001126066Al1C70茁663B0726BA57FC7506CDCAfl. i&r;xiwuti.i£DOO1127002Be5E02soC31073EH33C9BA

11、46109BF7H IV.lI.sa3EIF.lroaonzao6616Q3461C1356IE0346OE13DI日E7611f.,F.V.F,Rlv.000112906D89416FC0956FEB82000F7E6cB5EOB03' IFulVp.DOO11ZAOC346F7F3014&FC114EFE610F00 0EBE6AH-o.Fi;ilse0OT112B0007239263B2n7417BlQBBEAl7DF3A6Br9&H-t土用I q000112C0617432沖E”0983C72 a3BFB72E6EBDCAOat2NtdC : tirU00011

12、2D0FB7DB47D0BFOAC90電d74OC407413B4OEa' i-.nooiizEOBE07 CD10EBEFAOFH7DEBEEiAOFC7DEB> -.I ,ei y se iieOQOnZFOElCD16CD19268BB001BE0000E8.i .£iu.rd.».551A52Data Initerfihetetl7D9i rzTtnIF.1 R71RemoibiB medium 1 MadBDJhlMC Cam ReaderFirnlware Rev2 1 JOBil8:USBDeraun Edit ModeSials:oripiir

13、ul!UndD I 眈 I;QUndo rarerses:磯Tolai apacifr: 1l.& GB 1.907,129,57 a byltlByles- persBdDr:51JSurplU*別 eni?51 3Parti tiori:1RelalM ecbor No.:ModsT旳Charader set ANSI ASCIP hmdeclmsiiEMbb per page*: 25x161400VMndow r1No. ufvflndcws:1Clipboard:a MailableTEMPMder UGShH JiDMiNMlLOCALS-1 Tempcmu)a m v &

14、quot;c d n發(fā)現(xiàn)DBR起始于0x11200扇區(qū)地址,它必是512整數(shù)倍,因?yàn)橐粋€(gè)扇區(qū)含 512BYTE,所以 在程序中讀一個(gè)扇區(qū)時(shí)一定要是 512整數(shù)倍,否則會(huì)出錯(cuò)。 11200地址對(duì)應(yīng)的值是0xEB, 本程序讀一下這個(gè)地址的值看看是否正確。注意有的win hex編址是十進(jìn)制看看程序吧#in elude <reg52.h>#defi ne uchar un sig ned char#defi ne uint un sig ned int/=/定義SD卡需要的4根信號(hào)線sbit SD_CLK = P1A1;sbit SD_DI = P1A2;sbit SD_DO = P1A0

15、;sbit SD_CS = PU3;sbit Beep=P2A0;用來(lái)調(diào)程序標(biāo)志 /=/=/定義512字節(jié)緩沖區(qū),89C52直接定義成 unsigned char DATA80;,太大了 RAM不夠 un sig ned char xdata DATA512;void delay (un sig ned int z)un sig ned int x,y; for(x=z;x>0;x_);for(y=110;y>0;y-);/= /寫(xiě)一字節(jié)到 SD 卡,模擬 SPI 總線方式void SdWrite(unsigned char n)unsigned char i;for(i=8;i;

16、i-)SD_CLK=0;SD_DI=(n&0x80);n<<=1;SD_CLK=1;SD_DI=1;/= /從 SD 卡讀一字節(jié) ,模擬 SPI 總線方式unsigned char SdRead()unsigned char n,i;for(i=8;i;i-)SD_CLK=1;SD_CLK=0;n<<=1;if(SD_DO) n|=1;return n;/= /檢測(cè) SD 卡的響應(yīng)unsigned char SdResponse()uchar i=0,response=0;while(i<=8)response = SdRead(); if(respons

17、e=0x00)break;if(response=0x01)break;i+;return response; /= /發(fā)命令到 SD 卡void SdCommand(unsigned char command, unsigned long argument, unsigned char CRC) SdWrite(command|0x40);/*SdWrite(unsigned char *)&argument)0);SdWrite(unsigned char *)&argument)1);SdWrite(unsigned char *)&argument)2);SdW

18、rite(unsigned char *)&argument)3);*/SdWrite(argument>>24);SdWrite(argument>>16);SdWrite(argument>>8);SdWrite(argument);SdWrite(CRC);/= /初始化 SD 卡unsigned char SdInit(void)unsigned char i;unsigned char response=0xFF;P3=0xff;SD_CS=1;for(i=0;i<=0xfe;i+)SdWrite(0xff);SD_CS=0;SdCo

19、mmand(0x00,0,0x95);SD_DI=1; response=SdResponse();if(response!=0x01)return 0;if(response=0x01) / 不管什么 SD 卡都能進(jìn)入這一步,同時(shí)也說(shuō)明硬件沒(méi)問(wèn)題 SD_CS=1;/Beep=0;/while(1);/ 用來(lái)查看程序能否運(yùn)行到這一步,去掉/即可SdWrite(0xff);SD_CS=0;while(1)SdCommand(0x01,0,0xff);/SdCommand(0x01,0x00000000,0xff);/ 進(jìn) SPI response=0xff;SD_DI=1; for(i=0;i&

20、lt;250;i+)/response!=0x00/ 等待回復(fù) response=SdResponse(); /Beep=0;/ if(response=0) break;if(response=O) break;/回復(fù)0則通過(guò)SPI,只要通過(guò) SPI后面的指令才能繼/續(xù)/Beep=0;/Beep=0;看程序能否跳出來(lái),挑不出來(lái)則進(jìn)不了SPISD_CS=1;SdWrite(0xff);SD_CS=0;/Beep=0;return 1;/=/往 SD 卡指定地址寫(xiě)數(shù)據(jù) ,一次最多 512 字節(jié) 最好不要亂寫(xiě) 否則 fat 系統(tǒng)被改掉 SD 卡打不 開(kāi)unsigned char SdWriteBl

21、ock(unsigned char *Block, unsigned long address,int len)unsigned int count;unsigned char dataResp;SD_CS=0;SdCommand(0x18,address,0xff);if(SdResponse()=00)SdWrite(0xff);SdWrite(0xff);SdWrite(0xff);/command was a success - now send data/start with DATA TOKEN = 0xFESdWrite(0xfe);/now send datafor(count

22、=0;count<len;count+) SdWrite(*Block+); for(;count<512;count+) SdWrite(0);/data block sent - now send checksumSdWrite(0xff); / 兩字節(jié) CRC 校驗(yàn) , 為 0XFFFF 表示不考慮 CRCSdWrite(0xff);/Now read in the DA TA RESPONSE token dataResp=SdRead();while(SdRead()=0); dataResp=dataResp&0x0f; /mask the high byte of the DATA RESPONSE token SD_CS=1;SdWrite(0xff); if(dataResp=0x0b) return 0;if(dataResp=0x05)return 1;return 0;/printf("Command 0x18 (Write) was not received by the SD.n"

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論