Par MMC Card Read / Write

C

conkhicon

Guest
Dear all, Es jaunattīstības PIC 18F8720 projektu lietošanas MMC ar aparatūras SPI funkciju MCU interfeiss, man bija veiksmīgi darīt reset un sāktu MMC un izlasiet OCR, CSD reģistrs OK, un to var lasīt singleBolck (CMD17) OK (statuss atpakaļ OK bet nezinu, dati ir patiess), bet, kad es gribu rakstīt bloka (CMD24), lai MMC, atbilde-dati ir dīvaini, tas ir 0x07 (pareizo ir 0xE5). kāds var man palīdzēt, ko kļūda? (I use Kingmax un Sandisk karti). Bloķēt Izmērs = 512Bytes, adrese ir robeža 512 Ja es lietotu Nokia, Seimen MMC karte un es tikai rakstīt OK (pieder pie statusa atpakaļ) un nolasīt kļūdu.
 
Esmu tikai got dīvaini atbildes SD / MMC, kad es nokavēju noteiktu soli. Vai jūs varat aprakstīt tieši secību jūs izmantojat izdot CMD24 un veikt rakstīt?
 
# Define BLOCK_LEN 512 unsigned char readBlockMMC (neparakstīts garš int DWAddr, neparakstītu char * pdes) {extern neparakstīta CHAR tmpkd []; unsigned char localRD; unsigned char commandResponse; unsigned char dataToken; unsigned int localc, SetCSSPI (); WriteSPI (0xff) ; / / Antenu ClearCSSPI () / / karte Aktīvs writeCMD (17 DWAddr, 0xff); / / Lasīt VADĪBA (Nav CRC) commandResponse = MCCResponse (), ja (= 0 commandResponse!) {SetCSSPI () / / kartes In-Active WriteSPI (0xff) / / Dummy MMC_Err = 0x30; atgriešanos (1);} localc = 0, savukārt (1) {/ / Gaida DATA iezīmējot ERROR TOKEN dataToken = ReadSPI (), ja (dataToken == 0xFE ) pauze; / / Veiksmes localc + +; if ((dataToken & 0xe0) == 0) {/ / Kļūda Token, ja (dataToken! = 0) {MMC_Err = 0x31; atgriešanos (1);}}} NOP (), jo (localRD = 0; localRD
 
Ir ļoti labs pieteikums dots ķēdes pagrabā # 176. Varbūt jūs varat pārbaudīt un redzēt, ka salīdzināt, ja jūs darāt kaut ko nepareizi.
 
Ja man nav Nepārprotiet kodu, jums ir wating datu žetoni ... Bet, ja jūs jautājums CMD24 jums ir jānosūta dati žetoniem, Te ir gabals darba kods: mmc_CS_on; r_value = mmc_cmd (CMD24, adrese, 0); / / iekšēji gaida atbildi R1 mmc_putchar (0xFF) mmc_putchar (0xFE) ; / / sūta datus marķieri (i = 0; i <512; + + i) mmc_putchar (buferšķīdums ); / / nosūta 512B datu mmc_putchar (0x00), / / nosūta MANEKENA 16bits CRC mmc_putchar (0x00), savukārt (mmc_read_r1 () == 0xFF) (! (U0RXBUF & 0x1F) = 0x05), ja error_data_write_count + +, savukārt (mmc_read_r1 () == 0x00) / / gaida rakstīt gala .. mmc_CS_off;
 
Es noteikt manu problēmu Jebkura lietot aparatūru Pheripral SPI PIC saskarne MMC Card apmeklēt: ja jūs lasīt SPI (), lai gaida atbildi, pulksteņa maiņa ārā, dati ir PIC maiņu, bet tajā pašā laikā, dati SSPBUF maiņu ārā MMC ir ramdom, jo tas MMC Card atteikties. Aizstāt kods: raksturlīkne = ReadSPI (); ar: WriteSPI (0xff) raksturlīkne = SSPBUF;
 
Man ir līdzīga problēma ar MMC karti arī, i, lai izveidotu datu malkas cirtējs, kas iepriekš i izmanto SD Card glabāšanai, tad pēc darīt daudz testu un panākumu, es gribu to varētu izmantot MMC karti pārāk, tāpēc es mainītu SDCard ar MMC karti. bet, ja izmanto MMC kartes sistēma ir karājas laikā Rakstīt failā .. Es nezinu iemeslu .. gadā inicializēšanai gan kartes dod gatava statusu, tāpēc es domāju, ka tas ir labi, kas inicializācijas .. Lūdzu, parādiet man mana kļūda ..
 

Welcome to EDABoard.com

Sponsor

Back
Top