Hallo, ich plane gerade ein kleines Projekt. Hierbei habe ich einen 32 Bit Haupt PIC(Master) und 6 weitere(Slaves), teilweise 8, 16 oder auch 32 Bit PICs. Jetzt brauche ich ja für jeden Slave eine weitere SS Leitung aber die MOSI, MISO und SCLK Leitungen kann ich an alle anschließen, quasi wie ein Bus. Um noch mehr PIN´s zu sparen würde ich die SS Leitungen über einen Demultiplexer ansteuern. Soweit der Plan, jedoch bin ich mir nicht sicher ob ich die MOSI, MISO und SCLK Leitungen einfach an alle Slaves anschließen kann oder ob ich so etwas wie einen Tristate Buffer für jeden Slave, der abhängig von der SS Leitung durchschaltet, dazwischen setzen sollte? Ich würde eigentlich denken ja, da ja der MISO Pin jedes Slaves immer den Zustand LOW oder HIGH haben würde wodurch es ja zu Kurzschlüssen kommen würde wenn die alle an der Selben Leitung mir unterschiedlichen Zuständen hängen. Reicht es vielleicht auch einfach den MISO Pin jedes Slaves einfach auf input zu setzten solange die entsprechende SS Leitung HIGH ist? (Hier würde ich mir aber auch sorgen machen, dass durch einen Software Fehler trotzdem ein Kurzschluss zustande käme) Und wie lang sollten die Bus Leitungen maximal sein, währen 30cm unter Umständen ein Problem?
@ Osccon (Gast) >Jetzt brauche ich ja für jeden Slave eine weitere SS Leitung aber die >MOSI, MISO und SCLK Leitungen kann ich an alle anschließen, quasi wie >ein Bus. SPI IST ein Bus. >Um noch mehr PIN´s zu sparen würde ich die SS Leitungen über einen >Demultiplexer ansteuern. 74HC138 >Soweit der Plan, jedoch bin ich mir nicht sicher ob ich die MOSI, MISO >und SCLK Leitungen einfach an alle Slaves anschließen kann Ja, alles parallel verdrahten. > oder ob ich >so etwas wie einen Tristate Buffer für jeden Slave, der abhängig von der >SS Leitung durchschaltet, dazwischen setzen sollte? Nein. >Ich würde eigentlich denken ja, da ja der MISO Pin jedes Slaves immer >den Zustand LOW oder HIGH haben würde wodurch es ja zu Kurzschlüssen >kommen würde wenn die alle an der Selben Leitung mir unterschiedlichen >Zuständen hängen. Nein. Wenn die Slave nicht aktiviert sind, müssen sie MISO auf Tristate schalten. Auf MISO darf immer nur einer "reden". >Reicht es vielleicht auch einfach den MISO Pin jedes Slaves einfach auf >input zu setzten solange die entsprechende SS Leitung HIGH ist? Das macht das SPI-Modul in den Slaves eigentlich allein. >(Hier würde ich mir aber auch sorgen machen, dass durch einen Software >Fehler trotzdem ein Kurzschluss zustande käme) Dadurch geht die Welt nicht unter. >Und wie lang sollten die Bus Leitungen maximal sein, währen 30cm unter >Umständen ein Problem? 30cm sind schon OK, aber trotzdem kann man sich Probleme einfangen, wenn man das ganze zu wild verdrahtet. Im Idealfall zieht man den Bus linienförmig mit minimalen Stichleitungen zu jedem Slave und packt an das Ende eine AC-Terminierung, siehe Wellenwiderstand.
Osccon schrieb: > aber die MOSI, MISO und SCLK Leitungen kann ich an alle anschließen, > quasi wie ein Bus. Du kannst auch SCLK an alle Bausteine legen und MOSI/MISO als Serienschaltung verdrahten.
Falk B. schrieb: >>Reicht es vielleicht auch einfach den MISO Pin jedes Slaves einfach auf >>input zu setzten solange die entsprechende SS Leitung HIGH ist? > > Das macht das SPI-Modul in den Slaves eigentlich allein. Ok, also kümmert sich das SPI Modul darum, dass weder HIGH noch LOW auf die Leitung gelegt wird, wenn SS nicht LOW ist? Falk B. schrieb: >>(Hier würde ich mir aber auch sorgen machen, dass durch einen Software >>Fehler trotzdem ein Kurzschluss zustande käme) > > Dadurch geht die Welt nicht unter. Aber angenommen es passiert, dass 5 Slaves MISO auf LOW haben und der 6. auf HIGH, könnten bei diesem Kurzschluss nicht gleich mehrere PICs kaputt gehen abgesehen vom Netzteil(Weiß nicht wie es reagiert, wenn es einen Kurzschluss hat). Das wäre schon ärgerlich wenn ich mir auf einmal mehrere PICs kaputt mache. Wie könnte man sich für so einen Fall absichern? Vielen Dank für die Antworten :)
@ Osccon (Gast) >Ok, also kümmert sich das SPI Modul darum, dass weder HIGH noch LOW auf >die Leitung gelegt wird, wenn SS nicht LOW ist? Das hoffe ich. Genaues kennt dein Datenblatt. >Aber angenommen es passiert, dass 5 Slaves MISO auf LOW haben und der 6. >auf HIGH, könnten bei diesem Kurzschluss nicht gleich mehrere PICs >kaputt gehen Eher nicht. > abgesehen vom Netzteil(Weiß nicht wie es reagiert, wenn es >einen Kurzschluss hat). Dieser "Kurzschluß" läßt bestenfalls ein paar Dutzend mA fließen, das zwingt kein Netzteil in die Knie. >Das wäre schon ärgerlich wenn ich mir auf einmal mehrere PICs kaputt >mache. Lehrgeld. >Wie könnte man sich für so einen Fall absichern? Wenn du einen Dekoder ala 74HC138 nutzt, kann immer nur ein CS aktiv sind. Wenn dann die Slaves sauber initialisiert sind, passt das schon. Man kann die ja Schritt für Schritt in Betrieb nehmen.
>Aber angenommen es passiert, dass 5 Slaves MISO auf LOW haben und der 6. >auf HIGH, könnten bei diesem Kurzschluss nicht gleich mehrere PICs >kaputt gehen Ich habe 15 PIC18 Slaves an einem PIC32 Master angeschlossen. Jeweils 3 Slaves haben eine gemeinsame SS Leitung. Um bei einem Softwarefehler zu verhindern, dass wenn 2 oder mehrere Slaves zeitgleich senden wollen, 2 Ausgänge sich gegensinnig aufeinanderprallen, habe ich einen 100 Ohm Widerstand in die MISO Leitung bei jedem Slave eingefügt....
Einfach einen 100 Ohm Widerstand dazwischen klingt auch nach einer ganz guten Lösung. Echt vielen Dank für eure Antworten :)
Osccon schrieb: > Wie könnte man sich für so einen Fall absichern? Du könntest ... Tom E. schrieb: > ... MOSI/MISO als Serienschaltung verdrahten
@ Tom E. (Gast) >Du könntest ... >Tom E. schrieb: >> ... MOSI/MISO als Serienschaltung verdrahten Nein, das kann er nicht, denn SPI ist nur in Ausnahmefällen als Daisy Chain Struktur nutzbar.
Falk B. schrieb: > Nein, das kann er nicht, denn SPI ist nur in Ausnahmefällen als Daisy > Chain Struktur nutzbar. Dann wäre es Zeit, das mal zu klären oder zu überlegen, ob nicht I2C oder CAN dann doch besser geeignet wären.
@ Tom E. (Gast) >> Nein, das kann er nicht, denn SPI ist nur in Ausnahmefällen als Daisy >> Chain Struktur nutzbar. >Dann wäre es Zeit, das mal zu klären oder zu überlegen, ob nicht I2C >oder CAN dann doch besser geeignet wären. GESCHWÄTZ! Nur weil ein kleines Mädchen Angst vor Programmierfehlern hat! Millionen Schaltungen nutzen mehrere ICs am SPI-Bus!
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.