Forum: Mikrocontroller und Digitale Elektronik SPI und SD-Card


von Karsten S. (scottyrebel)


Lesenswert?

Hallo,
nur zum Verständnis. Ich kann ja eine CD-Card an die SPI-Schnittstelle 
anschliessen. Jetzt habe ich gelesen, das ich den Pin SS der SD-Card auf 
Low ziehen muss, bevor ich die Übertragung einleite. Jetzt steht da aber 
auch, das ich nur einen Slave anschließen kann. Irgendwie widerspricht 
sich das doch. Hintergrund ist das ich zwei Slaves habe(ein mal die 
SD-Card und ein mal das RFM12-Modul) beide sollten über die 
SPI-Schnittstelle mit dem Controller kommunizieren. Das was bei der 
SD-Card der SS-Pin ist, ist beim RFM12 der nSEL-Pin. Ich bräuchte also 
nur die Daten und Clock-Leitungen parallel schalten und über 2 
zusätzlich Leitungen(SS und nSel) auswählen können mit welchem Slave 
sich der Controller "unterhalten" soll.
Eigentlich sollte das funktionieren, oder sehe ich das falsch?
Ich weiß das ich eine Pegelanpassung brauche, aber sollte nicht das 
Problem darstellen, da ich das RFM12-Modul auch mit 3.3V betreiben kann 
wie es die SD-Card vorgibt.

Danke für jeden Tipp.
--
Gruß Karsten

von Purzel H. (hacky)


Lesenswert?

Zwei Slaves bedeuten 2 SS Leitungen. Die Zweite muss man dann eben zu 
Fuss mit einem Port Pin machen.

von Karsten S. (scottyrebel)


Lesenswert?

Dürrer Zitterknilch schrieb:
> Zwei Slaves bedeuten 2 SS Leitungen. Die Zweite muss man dann eben zu
> Fuss mit einem Port Pin machen.

Das meine ich ja, bei der SD-Card heißt der Pin SS, beim RFM12 ist es 
nSel. Wenn ich den Controller grundsätzlich als Master laufen lasse 
müsste ich ja sowieso die Funktionalität des/ der SS-Pin(s) 
bereitstellen. Auszug Docu zum ATMega:
"When configured as a Master, the SPI interface has no automatic control 
of the SS line."
Jetzt habe ich nur Problem. Der Controller wird ja auch über SPI 
programmiert. Das bedeutet doch eigentlich das ich sicherstellen muss, 
dass die Slaves High-Signal am SS-Pin führen, wenn der Controller mal 
neu programmiert werden muss.
--
Gruß Karsten

von Purzel H. (hacky)


Lesenswert?

Bein Einstecken des ISP Programmers wird im Mode mit Reset=Low 
gearbeitet. Dann muss kommt SCK, MISO und MOSI vom ISP Stecker.

von ... .. (docean) Benutzerseite


Lesenswert?

Karsten Sosna schrieb:
> Das bedeutet doch eigentlich das ich sicherstellen muss,
> dass die Slaves High-Signal am SS-Pin führen, wenn der Controller mal
> neu programmiert werden muss.

ALso Pullup an die Leitungen und fertig.

von Karsten S. (scottyrebel)


Lesenswert?

> Bein Einstecken des ISP Programmers wird im Mode mit Reset=Low
> gearbeitet. Dann muss kommt SCK, MISO und MOSI vom ISP Stecker.

Dann scheint mein Programmiergerät anders zu 
funktionieren(http://www.eproo.de/index.php?module=artikel&action=artikel&id=10). 
Wenn ich hier teste brauche ich den ISP-Stecker nicht zu lösen, damit 
der Prozessor "normal" läuft. Die Reset-Leitung wird also wohl nur beim 
Programmieren selber auf Low gezogen. Was mit dem Port-Pins während des 
Programmierens passiert habe ich noch nicht getestet, ich weiß nicht ob 
die in ein Z-State gehen. Hier auf meinem Testboard habe ich am PortB 
LEDs hängen, die werden auf jeden Fall abgeschaltet, was ja theoretisch 
einem Low-Signal entspricht. Damit würden die SS-Pins auch auf Low 
gezogen(auch mit Pull-Up-Widerstand). Das wiederum würde aber bedeuten, 
das sich die Slaves angesprochen fühlen, weil das SS-Signal Low-Aktiv 
ist. Eigentlich dürfte das so nicht funktionieren, denn die Slaves 
würden dem Programmer "dazwischen quatschen".
--
Gruß Karsten

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.