Sari la conținut
ELFORUM - Forumul electronistilor

Interfata cu un card de memorie


Postări Recomandate

Vreau sa conectez un microcontroller la un card de memorie flash, gen SD,CF,MMC etc, in care tin minte niste "samples"uri pentru a genera niste cuvinte.Problema este ca am cautat pe net modalitati de interfata pentru mai multe tipuri de carduri, dar nu am gasit mai nimic. Va rog,daca ati lucrat cu asa ceva, care ar fi cel mai usor de folosit card de memorie, protocol usor... Daca m-ati ajuta si cu niste scheme, ar fi perfectMultumesc

Link spre comentariu
  • Răspunsuri 6
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

nu am reusit sa fac mai nimic. incerc sa conectez cardul la portul paralel al calculatorului.Am reusit sa comunic cu cardul, imi raspunde la comanda CMD0, dar la CMD1 nu reusesc nicicum sa il conving sa-mi raspunda cu 00h.A lucrat cineva cu card mmc pe portul paralel? nu reusesc sa-i dau de cap,am incercat toate combinatiile de comenzi

Pai cum l-ai "legat"? Cum l-ai alimentat?
Link spre comentariu

l-am alimentat de la 2 acumulatori. multimetrul indica aproximativ 2.6 V. Data In, CS si CLK le-am conectat la pinii 4,3,2 respectiv de la portul paralel iar Data Out la pinul 10. Conectarea nu a fost directa, ci prin tranzistori NPN.Ce mi s-a parut ciudat este faptul ca valoarea de intrare a portului paralel (379h) depindea de niste valori de delay intre instructiuni. cam greu de explicat, mai bine atasez o portiune din cod.Am lucrat in Delphi sub Windows XP. Portul paralel lucreaza bine, am instalat ce trebuie. Functia ce trimite comanda:parametrii functiei vor fi de forma .. (1,1,1,1, 1,1,1,1) pentru comanda FFData In = pinul 4CS = pinul 3CLK = pinul 2 al portului paralelfunction trimite_comanda(a0,a1,a2,a3,a4,a5,a6,a7:integer):integer;var final:word;begin final:=0; intrare:=4*a0; //Data In=A0, CS=0, CLK=0 portout(888,intrare); //Trimit datele spre card sleep(1); intrare:=intrare+1; //CLK=1, restul la fel portout(888,intrare); //Trimit datele spre card sleep(1); if (PortIn(889)<>126) then final:=final*2+1 else final:=final*2; // Am citit datele de la intrare. Daca valoarea este diferita de 126, am 1 logic, daca e 126, am 0 logic.// In "final" se retine valoarea de la intrare, dupa 8 clock-uriFunctia are 8 portiuni asemanatoare, cu diferenta:intrare:=4*a1, ... ,a7=======================================

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări