O MMC Card Read / Write

C

conkhicon

Guest
Spoštovani, sem v razvoju PIC 18F8720 projekt uporabe MMC s funkcijo strojne SPI vmesnik MCU, sem imel uspešno narediti reset in inicializacijo MMC in branje OCR, CSD Register OK, in se lahko bere-singleBolck (CMD17) OK (Status vrnitev OK vendar ne vem, podatkov je res), ampak ko hočem napisati-blok (CMD24) za MMC, odgovor-data je čudno, da je 0x07 (pravilna je 0xE5). lahko katera koli od pomagajte mi, kaj napaka? (I uporabo Kingmax in Sandisk Card). Block Size = 512Bytes, naslov je meja za 512 Če uporabljam Nokia, Seimen MMC kartice in sem samo Write OK (pripada vrnitev status) in Napaka pri branju.
 
Sem dobil samo čudne odgovore SD / MMC, ko sem zamudil nekatere korak. Ali lahko opišeš natančno zaporedje, ki ga uporabljate za izdajo CMD24 in opravljajo pisati?
 
# Define BLOCK_LEN 512 unsigned char readBlockMMC (unsigned int dolgo DWAddr, unsigned char * PDEs) {unsigned char extern tmpkd []; unsigned char localRD; unsigned char commandResponse; unsigned char dataToken; unsigned int localc; SetCSSPI (); WriteSPI (0xff) ; / / Dummy ClearCSSPI (); / / Card Active writeCMD (17, DWAddr, 0xff); / / ukaz za branje (ni CRC) commandResponse = MCCResponse (); if (commandResponse! = 0) {SetCSSPI (); / / Card In-Active WriteSPI (0xff); / / Dummy MMC_Err = 0x30; vrnitev (1);} localc = 0, medtem ko (1) {/ / Waiting DATA ravnaj ali ERROR ravnaj dataToken = ReadSPI (); if (dataToken == 0xfe ) break; / / Success localc + +; if ((dataToken & 0xe0) == 0) {/ / Napaka Token if (dataToken! = 0) {MMC_Err = 0x31; vrnitev (1);}}} NOP (); za (localRD = 0; localRD
 
Obstaja zelo dober uporabe, določenih v kleti vezja # 176. Mogoče lahko preverite in videli, da primerjati, če delaš kaj narobe.
 
Če nisem razumel svojo kodo, ki jo wating za podatke žetonov ... Ampak, ko izda CMD24 morate poslati podatke žetoni, Tu je del delovnega koda: mmc_CS_on; r_value = mmc_cmd (CMD24, naslov, 0); / / notranje čaka na odgovor R1 mmc_putchar (0xff); mmc_putchar (0xFE) ; / / pošiljal podatke, žeton za (i = 0; i <512, + + i) mmc_putchar (buffer ); / / pošilja podatke 512B mmc_putchar (0x00); / / pošilja LUTKE 16bits CRC mmc_putchar (0x00), medtem ko (mmc_read_r1 () == 0xff); (! (U0RXBUF & 0x1F) = 0x05), če error_data_write_count + +, medtem ko (mmc_read_r1 () == 0x00); / / čaka, WRITE do konca .. mmc_CS_off;
 
Sem popraviti svoj problem Vsak od uporabljati strojno Pheripral SPI vmesnik PIC MMC Card udeležili: ko ste prebrali SPI () za čakanje na odgovor, ura je premik ven, podatkov je premik v PIC, vendar v istem času, podatki v SSPBUF premik ven v MMC je ramdom, ker je to MMC kartico zavrne. Zamenjaj koda: odgovor = ReadSPI (); S: WriteSPI (0xff); odgovor = SSPBUF;
 
imam podobne težave z MMC Card tudi, jaz bi zapisovalnik podatkov, prej sem rabil SD Card za shranjevanje, potem ko naredite test in veliko uspeha, hočem ga lahko uporabili MMC kartice preveč, tako da sem spremeniti SDCard z MMC kartico. vendar pa pri uporabi MMC Card sistema visi v Write file .. jaz ne vem razloga .. Med inicializacijo obeh kartice dati stanje pripravljenosti, tako da mislim, da je v redu inicializacijo .. prosim pokaži mi moja napaka ..
 

Welcome to EDABoard.com

Sponsor

Back
Top