www.mikrocontroller.net

Forum: PC-Programmierung SD/MMC SPI-Zugriff mit PC


Autor: Vaillant S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mikrocontroller Community,

bin dabei eine SD/MMC-Karte im SPI-Modus über RS232 auszulesen
(irgendwann auch zu beschreiben ;-) ).

Habe den Beispielkode von cc5x.de (für borland C++ und WinXP)angepasst
und mir ein paar Routinen zum setzen/abfragen der RS23 Pins
geschrieben.

Soweit dass Vorspiel !

Mein Problem:
Ich bekomme die SD/MMC-Karte nur sporadisch in den SPI-Modus und
erhalte häufig die Antwort 3 ("in idle state" & "erase reset") von
der Karte (sowohl bei Init als auch während der Abfrage).

Hat sowas schon mal erlebt/versucht/erfolgreich beendet ?
Könnt ihr mir mal ein Paar Tipps geben ?


DAnke im Vorraus

Autor: Vaillant S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS23 sollte eigentlich RS232 heißen ;-)
TxD -> CS Chipselect
DTR -> Do Dataout
DTR -> Clk Clock
DSR -> DI DataIn

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm. Mir scheint das eine der weniger geeigneten Schnittstellen für ein
derartiges Unterfangen zu sein.
Ist das ein "proof-of-concept", daß sich die serielle Schnittstelle
zu jedem Kram ver...biegen lässt oder worin besteht der tiefere Sinn?

Wenn schon überhaupt eine Schnittstelle zum "bit-banging" verwendet
werden muss, dann sollte es doch die parallele sein - ja, mit
entsprechender Treiberunterstützung lässt sich die auch unter den
ernstgemeinten Windows-Versionen ansprechen.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist 1. arsch langsam und 2. nicht gerade elegant.. du darfst nämlich
entweder einen  schönen triber mit der ddk schreiben oder aber sowas wie
giveio verwenden...

gut das mit der ddk wäre schon ok in meinen augen nur 1. hast du die
ddk und 2. hast du ahnung von driver schreiben ??? ich nicht drum würde
ich empfehlen einen kleinen uC nehmen der einen uart hat und einfach
eine rs232<=>spi bridge damit zu machen... damit sollte es viel
einfacher und schneller gehen als im polling betrieb unter
windows...benötigt aber extra hardware...


gut soviel zu meinen einwänden g


wie hast du die bösen rs232 leitungen an die karte gegeben ?? ich hoffe
nicht direkt...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans:
Wenn sich Dein Beitrag auf meinen Hinweis beziehen sollte:

Glaubst Du allen Ernstes, daß "bit-banging" an der seriellen
Schnittstelle eines PCs auch nur annähernd so schnell funktioniert wie
"bit-banging" an der parallelen Schnittstelle?
Das ist nochmal deutlich langsamer.

Eine sinnvolle Lösung (mal von einem der tausenden fertigen
SD-Card-Lesegeräten abgesehen) wäre der FT2232C, der nämlich eine frei
programmierbare Multiprotokollschnittstelle namens "MPSSE", mit der
sich vorzüglich auch SPI realisieren lässt.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
offensichtlich hab ich mehr als 4min gebraucht um zu tippsen ;)

und ich meinte nicht bitbangen sonder byte an den avr über rs232 und
der schiebts weiter... und das in beiden richtungen.. also nur eine
dumme rs232<=>spi bridge...

aber der ft wäre natürlich ideal... wusste garnicht das es sowas gibt
;)

der könnte eigentilch beim logic analyzer projekt sehr nützlich sein..
mal gucken ;)

73

Autor: Vaillant S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit rs232 klappts soweit ganz gut
Langsam: OK

Hatte nen unsauberen Pegel auf CS
1k pulldown und die welt ist in Ordnung

Zugriff auf die Pinns hab ich mittels
DTR/RTS EscapeCommFunction(hFlie,SET/CLRpin)
Txd EscapeCommFunction(hFlie,SET/CLRBREAK)

Funktioniert tadellos

Proof-Of-Concept Stimmt
soll ne SW zum Laufen bringen und wollte mir das Eval-kit sparen

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
giveio und dergleichen sollte auf gar keinen Fall dazu verwendet
werden, direkt mit der seriellen Schnittstelle zu kommunizieren. Das
Problem liegt in den nicht behandelbaren Interrupts, die die
Schnittstelle auslöst und obendrein im Devicetreiber der seriellen
Schnittstelle, der damit nicht glücklich ist, wenn im "unter'm
Arsch" an der Hardware 'rumgefummelt wird.

Autor: Vaillant S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char SPI(unsigned char sndbyt)
{
 unsigned char ret=0;
 DWORD dwCommModemStatus;

 for (unsigned char i=8;i>=1;i--)
 {
  if (sndbyt & ex(i-1))EscapeCommFunction(hFile,CLRDTR);//out
  else EscapeCommFunction(hFile,SETDTR);

  EscapeCommFunction(hFile,CLRRTS);                     //Clk _--
  for (int sl=0;sl<250000;sl++);

  GetCommModemStatus(hFile,&dwCommModemStatus);         //in
  if (!(dwCommModemStatus & MS_DSR_ON)) ret+=ex(i-1);

  EscapeCommFunction(hFile,SETRTS);                     //Clk --_
 }
 return ret;
}

Autor: didi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich muss MSP430 programmieren mit dem software IAR/C, ich weiss ehrlich
gesagt nicht wie ich anfane.
kann mir jemand beispiele geben oder kurse dafür wie man die pins
definiert usw

Autor: no_one (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub du bist hier im falschen Thread.  ;-)
Der is seit 26.7. quasi tot.

Mach doch am Besten nen neuen auf.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.