www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

SD flash SPI
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Čet Okt 09, 2008 10:25 pm    Naslov sporočila:  SD flash SPI Odgovori s citatom

Oj

se je kdo že ukvarjal z SD flash karticami

imam 64Mb kartico na PIC18F8722 in mi zadeva ne gre preko CMD0

CMD0 vrne prav 0x01, se pravi gre kartica v idle state,

vse naprej od tega pa vrača 0x05, command not suported

poizkusil sem CDM1, ACMD41 (cmd55 + cmd41), cmd8 ...
nix

ima kdo kakšno idejo :S

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Pet Okt 10, 2008 7:56 am    Naslov sporočila:   Odgovori s citatom

mi je uspelo Very Happy

pošiljanje CMD41 dokler ne vrne 0x00

z tem da se vmes CS signal menja in delay vmes med impulzom

poleg tega obvezno ko se CS signal vrne na 1 se pošlje 1 bajt 0xFF po SPI

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Ned Okt 12, 2008 7:31 pm    Naslov sporočila:   Odgovori s citatom

no sem naletel na novi zid,

nikakor ne spravim kartice preko inicializacije

druga čudna stvar mi je pa ta da na kartici sicer piše da je miniSD (iz nokie 64Mb),
inicializiram jo pa lahko samo kot MMC kartico.

ne morem brat ne CID, ne CSD registrov :S

je kdo pisal kodo za SD kartice preko SPI vodila????

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mirkatmir
Član
Član



Pridružen-a: Pet 25 Jul 2003 9:14
Prispevkov: 1876
Aktiv.: 7.92
Kraj: Ribnica (JN75IR)

PrispevekObjavljeno: Ned Okt 12, 2008 8:38 pm    Naslov sporočila:   Odgovori s citatom

Če ti tole kaj pomaga. Nekje sem prebral, da miniSD nima enak protokol kot navadna, ne vem pa, če je to res.
_________________
lp, Miran (Miro - S51SK)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 10.33
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Ned Okt 12, 2008 8:54 pm    Naslov sporočila:   Odgovori s citatom

mirkatmir je napisal/a:
Če ti tole kaj pomaga. Nekje sem prebral, da miniSD nima enak protokol kot navadna, ne vem pa, če je to res.


Hmm, tole pa bi težko verjel. Imam namreč microSD kartico, ki ima adapter za miniSD in navadno DS. Tako da je "ista figa".

_________________
Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Pon Okt 13, 2008 11:15 am    Naslov sporočila:   Odgovori s citatom

mirkatmir je napisal/a:
Če ti tole kaj pomaga. Nekje sem prebral, da miniSD nima enak protokol kot navadna, ne vem pa, če je to res.


ja to sem že gledal, pa ni bilo uspeha.
Sedaj sem na netu nekje videl da ima delay potem ko pošlje CMD55 in ACMD41,
upam da jih bo to obudilo Very Happy

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Čet Okt 23, 2008 4:13 pm    Naslov sporočila:   Odgovori s citatom

Sem našel foro. pomagalo je da sem po vsakem ukazu CS linijo "resetiral"
Ko se inicializira pa lahko ostane vedno na 0 kadar se kartica rabi Razz

Zdaj že pridno berem stvra z kartice. Moram samo še spilit zadeve in narediti pisanje na kartico, da lahko dokončam projekt

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Pet Jan 16, 2009 8:29 am    Naslov sporočila:   Odgovori s citatom

Še ne problem Very Happy

Z CMD13 berem status kartice. Zanima me namreč busy flag kadar zapisujem 1 sektor na kartico. Pa nisem siguren da mi tale busy procedura sploh dela vredu.

A ve kdo kako bi naj to šlo pravilno?

Trenutno imam proceduro tako napisano:

Pošljem CMD24 za write sektor in pokama na reply
Pošljem 0xFF in 0xFE kar je start data token
pošljem 512 + 2crc byta
potem počakam na reply

potem pa berem busy flag dokler se pač ne sprosti, kar bi pomenilo, da je sektor zapisan in lahko nadaljujem. Samo tukaj dobim vedno ven samo 0xFF znake in nobene potrditve.

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
RisPo
Neznanec
Neznanec



Pridružen-a: Pet 03 Feb 2006 12:15
Prispevkov: 5
Aktiv.: 0.02

PrispevekObjavljeno: Tor Jun 30, 2009 10:35 pm    Naslov sporočila:   Odgovori s citatom

Zanima me, če se je kdo ukvarjal s SD karticami na 18F4520 in če so bili kakšni problemi?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Sre Jul 01, 2009 8:15 am    Naslov sporočila:   Odgovori s citatom

načeloma isto sranje, SPI vodilo kot SPI vodilo.

jaz imam edino problem s kartico da mi občasno SPI čisto zablokira, in ne morem potem ostalih stvari na SPI vodilu uporabljat (imam RTC še na spi in mi vrača čist levi datum/uro). Tega problema še nišem rešil ker ga je full težko debugirat.

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
domen_puncer
Član
Član



Pridružen-a: Čet 01 Maj 2008 13:30
Prispevkov: 78
Aktiv.: 0.37
Kraj: Ljubljana, Mozirje

PrispevekObjavljeno: Sre Jul 01, 2009 8:21 pm    Naslov sporočila:   Odgovori s citatom

Uh, sele zdaj vidim post.

Ce se vedno imas problem z "busy" po write... kolikor se spomnim kartica po write vraca 0x00 dokler je busy, 0xff, ko ni vec. Sigurno pa pise v specifikaciji, samo glej za SPI mode, ne za SD.

Hmm... deljenje SPI-ja bi lahko bilo problematicno, ker SD kartica v nekaterih primerih odgovarja tudi ko ima CS low.

_________________
Tiskanje sudoku
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Sre Jul 01, 2009 10:29 pm    Naslov sporočila:   Odgovori s citatom

ja sej to se mi včasih obesi, da kartica odgovarja tudi če ni selektana in mi RTC ura zataji. Drugače je pa že narejeno da čaka dokler se iz 00 ne prelevi v ff pa še vedno zmrzne. Kot rečeno je teško to debugirat, ker se ponavadi zgodi šele po nekaj urah delovanja ali celo po enem dnevu
_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Neper
Član
Član



Pridružen-a: Sob 11 Apr 2009 9:51
Prispevkov: 83
Aktiv.: 0.42
Kraj: Ljubljana

PrispevekObjavljeno: Sob Nov 27, 2010 6:01 pm    Naslov sporočila:   Odgovori s citatom

Upam da tole še kdo bere, ker bi namreč lepo prosil za malo pomoči.

Sam sem namreč naletel na podoben problem kot red_mamba in sicer, po inicializaciji mi COM0 še gre skozi (vrne 0x01), potek pa začnem pošiljati CMD55,ACMD41 vendar mi nikoli ne da pravilnega odgovora. Dobiti bi moral 0x00 vrne pa vedno 0x01. Poizkusil sem tudi z CMD1 vendar je rezultat isti.

Koda je takale:

Koda:

tmp=sd_send_command(CMD0,R1,SDresponse,SDargument);
  i=0;
  do
  {
  tmp=sd_send_command(CMD55,R1,SDresponse,SDargument);
  tmp=sd_send_command(ACMD41,R1,SDresponse,SDargument);
//  tmp=sd_send_command(CMD1,R1,SDresponse,SDargument);
  if (tmp==0)
  {return 0;} //kartica ni dobila odgovora na komando - bejž vn in vrni nulo
  i=i+1;
  }
  while (((SDresponse[0]&0x01)==1)&i<100000);


funkcija sd_send_command(...) pošlje ukaz z argumentom(v primeru uporabljenih komand so to same ničle), počaka na odgovor in ga shrani v globalni array SDresponse. Po branju drugega posta sem v funkcijo dodal še en zapis 0xFF na vodilo, ko je CS pin že na enici (kartica ni naslovljena).

Edino kar ne znam razbrati iz drugega posta je kaj pomeni menjanje signala CS. Ga ko je že na enici daš spet na ničlo, malo delaya in potem nazaj na enico?

Ima kdo kakšno idejo kje tiči problem?

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
red_mamba
Član
Član



Pridružen-a: Ned 20 Feb 2005 17:56
Prispevkov: 1486
Aktiv.: 6.27
Kraj: Yogyakarta

PrispevekObjavljeno: Ned Nov 28, 2010 12:11 am    Naslov sporočila:   Odgovori s citatom

Koda:

Char initSD(void)
{
   char tmp;
   char cTmp;
   int cnt;

EN_FLASH = 1;

   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);
   WriteSPI1(0xFF);

enableSD();

   commandSDcr( 0x40, 0x00, 0x00, 0x00, 0x00 ); //CMD0

   if (R1SD() != 0x01)
   {
      if (_DEBUG_ == 1)
         writesUSBcr("TimeOUT!!!\r\nX");
      disableSD();
      return 0;
   }
disableSD();
   cnt = 0x20;
   cTmp = 0xFF;
   while ( (cnt>0) & (cTmp != 0x00) )
   {
enableSD();
      WriteSPI1(0x77);
      WriteSPI1(0x00);
      WriteSPI1(0x00);
      WriteSPI1(0x00);
      WriteSPI1(0x00);
      WriteSPI1(0x95);
      //commandSDcr( 0x77, 0x00, 0x00, 0x00, 0x00 );
      R1SD();
disableSD();
delay_ms(50);
enableSD();
      WriteSPI1(0x69);
      WriteSPI1(0x00);
      WriteSPI1(0x00);
      WriteSPI1(0x00);
      WriteSPI1(0x00);
      WriteSPI1(0x95);
      //commandSDcr( 0x69, 0x00, 0x00, 0x00, 0x00 );
      cTmp = R1SD();

      cnt--;
disableSD();
delay_ms(100);
   }
//disableSD();

   if (cTmp != 0x00)
      return 0;

/**
enableSD();
   commandSDcr( 0x50, 0x00, 0x00, 0x02, 0x00 ); //CMD0
   R1SD();
disableSD(); /**/

   return 1;
}


Kaj bolj jasno? Very Happy

_________________
Bad things happen to good people all the time for no reason!
Blog
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Neper
Član
Član



Pridružen-a: Sob 11 Apr 2009 9:51
Prispevkov: 83
Aktiv.: 0.42
Kraj: Ljubljana

PrispevekObjavljeno: Ned Nov 28, 2010 12:24 am    Naslov sporočila:   Odgovori s citatom

Hvala za poslano kodo!
Torej se tisti ekstra 0xFF ki se pošlje ko se naslovi kartico, pošlje znotraj enableSD() funcije?
In delay fja je najbrž zgolj časoven delay in nič ne pošilja, je res?
Bi se dalo prosim pripeti še kodo uporabljenih funkcij? Ker kolikor jaz razumem tole kodo naredi isto kot moja vendar meni ne dela.
Kolikor sem prebrskal po raznih forumih je menda tudi od kartic odvisno kako delujejo, ker se ne držijo vse čisto SD standarda. Bom sprobal še ko dobim še kakšno drugo kartico.

Pa še eno vprašanje: V priročniku za SD kartice:
http://alumni.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf
piše, da nekatere komande kot argument sprejmajo katerokoli vrednost (don't cares) nekatere pa rabijo "stuff bits". Meni se nekako zdi da je to vse isto pa vendar ne vem zakaj so potem dvakrat drugače zapisali. Ima kdo kakšno idejo kako je s tem
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group