Hallo, gibt es Bausteine, die ich ansprechen kann, mit denen ich aus einer SS/CS Leitungen mehre machen kann? Ich habe nur MOSI, MISO, SCK und SS zur Verfügung, möchte aber verschiedene Geräte ansprechen. Dachte mir so etwas wie ein Umschalter IC. Was kann man da einsetzen?
Für i2c gibt es sowas. Idee - ungetestet: ein Schieberegister / eine Porterweiterung die nur bei CS=H Daten einliest und die Ausgänge dann mit dem CS UND verknüpfen. Also dann zuerst ein Byte bei CS=H über MOSI und SCK ausgeben und danach normal mit CS=L und den verundeten Ausgängen des Registers an die einzelnen SPI Devices durchreichen. Einfacher ist natürlich vom µC noch ein Pin zu opfern - oder mehr - und ggf einen Dekoder zu benutzen.
Oder falls die Devices in der Lage dazu sind wie im Bild1: https://de.wikipedia.org/wiki/Serial_Peripheral_Interface
Hallo, @ hp-freund: ich brauche es zwar gerade nicht, die Idee gefäält mir aber, die muß ich mir merken. Ich habe dss jetzt nicht zuende geschaut, mit dem 595 müßte das fast ohne Zusatzteile machbar sein. Gruß aus Berlin Michael
Und wie willst du den Multiplexer ansprechen ? Der IC muss ja schließlich auch wissen welcher CS Pin geschaltet werden soll. Also ein paar Pins mehr als das was du jetzt hast wirst du schon investieren müssen.
@ Michael U. (amiga) >Ich habe dss jetzt nicht zuende geschaut, mit dem 595 müßte das fast >ohne Zusatzteile machbar sein. Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder ala 74HC138.
Falk B. schrieb: > @ Michael U. (amiga) > >>Ich habe dss jetzt nicht zuende geschaut, mit dem 595 müßte das fast >>ohne Zusatzteile machbar sein. > > Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder > ala 74HC138. Hast du das schon probiert? Kannst du das begründen?
Falk B. schrieb: > @ Michael U. (amiga) > > Ich habe dss jetzt nicht zuende geschaut, mit dem 595 müßte das fast >>ohne Zusatzteile machbar sein. > > Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder > ala 74HC138 Wenn er den /OE des 595 auch mit dem uC verbindet und den CS Eingängen Pullups spendiert sollte das gehen.
Hallo, in die Richtung ging meine Überlegung. Einfach reinschieben mit SPI, /OE mit an SS und PullUps. Ich habe aber noch nicht geschaut, ob sich mit SS = L der 595 festnageln läßt, entweder über das Latch oder über den Clock-Eingang. Gruß aus Berlin Michael
@ Max H. (hartl192) >Wenn er den /OE des 595 auch mit dem uC verbindet und den CS Eingängen >Pullups spendiert sollte das gehen. Ok, mit dem Trick geht es. @ Bernd (Gast) >> Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder >> ala 74HC138. >Hast du das schon probiert? Nein. > Kannst du das begründen? Ich weiß es ;-) Ohne den Trick von oben hast du keine Möglichkeit, das Schieberegister, welches als normales SPI-IC am Bus hängt, zu deaktivieren, sodass keinerlei anderes SPI-IC sich angesprochen fühlt. Beispiel. - Dein 595 hat alle Ausgänge auf HIGH -> Alles anderen SPI-ICs sind deaktiviert. - Nun schiebst du ein 0x7F rein, das SPI-IC am Bit#7 wird jetzt aktiviert. - Beim nächsten SPI-Zugriff fühlt es sich angesprochen, man kann keine Daten mehr ins Schieberegister laden, ohne dass ein anderes IC "zuhört" Das nennt man einen Deadlock.
:
Bearbeitet durch User
Falk B. schrieb: > Ich weiß es Dann solltest du an deinem Wissen noch ein bisschen arbeiten.
:
Bearbeitet durch User
@ Max H. (hartl192) >> Ich weiß es >Dann solltest du an deinem Wissen noch ein bisschen arbeiten. Du hast meinen Beitrag vollständig gelesen? Beitrag "Re: Verschiedene SPI Devices mit einem SS/CS"
Falk B. schrieb: > @ Bernd (Gast) > >>> Geht nicht. Die einzige Möglichkeit Pins zu sparen ist ein 3:8 Dekoder >>> ala 74HC138. > >>Hast du das schon probiert? > > Nein. Das ist schlecht :) >> Kannst du das begründen? > Ich weiß es ;-) Das ist doch stark zu bezweifeln :) µC 595 SPI-Bausteine -------------------------------------------- SerialOut SerialIn SerialIn plus PullUps Clock SRCLK Clock SlaveSelect /OE RCLK SlaveSelect High bewirkt, dass der 595 über /OE alle Ausgänge auf Tri-State schaltet und damit die SPI-Bausteine nicht ausgewählt sind. Über den SerialOut des µCs wird der 595 "geladen". Nach dem Laden, wird der /OE-Eingang des 595 über den SlaveSelct des µCs auf Low gelegt. Die alten Chipselect erscheinen an den Ausgängen. Wird SlaveSelcet jetzt wieder auf High gesetzt, dann über nimmt der 595 die neuen Daten, da RCLK eine High-Flanke sieht. Diese erscheinen nach einem erneuten Setzen des SlaveSelct auf Low an den Ausgängen des 595. Ab jetzt kann der ausgewählte Baustein mit Daten versorgt werden. Kann das jemand prüfen, ob es so funktioniert?
Hallo Leute, da es mich auch interessiert hat ob das so funktioniert habe ich mal wieder meinen Simulator bemüht. Ist nicht für den 595 sondern für ein Schieberegister im CPLD, sollte aber nachvollziehbar sein. Wichtig ist das vor einen normalen SPI Zugriff das Register gefüttert wird, sonst sind alle Ausgänge auf Low!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.