Over MMC-kaart lezen / schrijven

C

conkhicon

Guest
Beste allemaal, ik PIC 18F8720 project gebruik MMC te ontwikkelen met de hardware SPI functie in MCU-interface, moest ik met succes te doen resetten en de MMC en Read OCR, CSD Register op OK te initialiseren, en kan worden afgelezen singleBolck (CMD17) OK (Status terug OK maar weet u niet de gegevens waar is), maar als ik wil schrijven-blok (CMD24) naar de MMC, de respons-data is vreemd, het is 0x07 (de juiste is 0xE5). iemand kan mij helpen, wat fout? (Ik gebruik Kingmax en Sandisk Card). Blokgrootte = 512 bytes, het adres is grens van 512 Als ik Nokia, Seimen MMC-kaart en ik alleen maar schrijven op OK (behoren tot de status van retour) en lees het niet.
 
Ik heb alleen maar rare reacties van SD / MMC toen miste ik een bepaalde stap. Kun je de exacte volgorde die u gebruikt om een ​​CMD24 uit te geven en de schrijfsnelheid te voeren?
 
# Define BLOCK_LEN 512 unsigned char readBlockMMC (unsigned long int DWAddr, unsigned char * PDE's) {externe unsigned char tmpkd []; unsigned char localRD; unsigned char commandResponse; unsigned char dataToken; unsigned int localc; SetCSSPI (); WriteSPI (0xff) / / Dummy ClearCSSPI (); / / Card Actieve writeCMD (17, DWAddr, 0xff) / / READ-commando (Geen CRC) commandResponse = MCCResponse (); if (commandResponse! = 0) {SetCSSPI (); / / Kaart In-Actief WriteSPI (0xff) / / Dummy MMC_Err = 0x30; return (1);} localc = 0; while (1) {/ / Wachten DATA token of FOUT TOKEN dataToken = ReadSPI (); if (dataToken == 0xFE ) te breken; / / Succes localc + +; if ((dataToken & 0xE0) == 0) {/ / Error Token if (dataToken! = 0) {MMC_Err = 0x31; return (1);}}} Nop (); voor (localRD = 0; localRD
 
Er is een zeer goede applicatie die in circuit kelder # 176. Misschien kun je controleren en zien dat te vergelijken als je aan het doen niets verkeerd.
 
Als ik niet verkeerd begrijpen uw code, wordt u wating voor data-fiches ... Maar wanneer je geeft een CMD24 u gegevens tokens te versturen, Hier is stukje werkende code: mmc_CS_on; r_value = mmc_cmd (CMD24, adres, 0); / / intern wacht op reactie R1 mmc_putchar (0xFF); mmc_putchar (0xFE) / / stuurt gegevens token for (i = 0; i <512, + + i) mmc_putchar (buffer ); / / stuurt 512B gegevens mmc_putchar (0x00) / / stuurt DUMMY 16bits CRC mmc_putchar (0x00), terwijl (mmc_read_r1 () == 0xFF); if ((U0RXBUF & 0x1F) = 0x05!) error_data_write_count + +, terwijl (mmc_read_r1 () == 0x00) ;/ / wacht op WRITE te eindigen .. mmc_CS_off;
 
Los ik mijn probleem Elk gebruik hardware Pheripral SPI in PIC-interface MMC-kaart bij te wonen: als je SPI () te lezen voor het wachten een reactie, klok verschuiven uit, gegevens verschuiving in PIC, maar tegelijkertijd gegevens in SSPBUF verschuiven naar MMC is ramdom, want weigeren dit MMC-kaart gebruiken. Vervang de code: reactie = ReadSPI (); Met: WriteSPI (0xff); reactie = SSPBUF;
 
ik heb hetzelfde probleem met MMC-kaart zijn ook van, ik heb een datalogger te maken, Eerder heb ik gebruikt SD-kaart voor opslag, dan na hebben vele test en succes, ik wil het in staat om MMC-kaart te gebruiken, zodat ik de SDCard met MMC-kaart te wijzigen. maar bij het gebruik van MMC-kaart gebruiken het systeem vastlopen bij het schrijven bestand .. Ik weet niet de reden .. zowel tijdens de initialisatie van de kaart geven de status klaar, dus ik denk dat het goed is in de initialisatie .. Toon mij mijn fout ..
 

Welcome to EDABoard.com

Sponsor

Back
Top