Hallo, kann man eine SPI Schnittstelle bedenkenlos verwenden um 9 ICs anzusprechen? Mein uC hätte noch einen zweiten SPI Ausgang, empfiehlt es sich die ICs auf beide Schnittstellen zu verteilen? Danke für jede Hilfe. Mark
:
Verschoben durch Admin
Die Frage ist ob due die 9 IC's als Daisy-Chain schaltest oder jeden über sein eigenes Chip-Select ansprichst. Bei ersterer Variante ist das überhaupt kein problem. Bei zweiter Variante musst du schauen ob deine SPI Leitungen (MISO, MOSI, SCK) genug Strom treiben können damit die Flanken noch steil genug sind.
Ich habe mir die Datenblätter der ICs angeschaut. Es ist nichts von der Möglichkeit einer daisy-chain Schaltung erwähnt. Vermute dies bedeutet das es nicht geht. Ich verstehe allerdings nicht wieso die "normale" SPI Konfiguration mehr Strom benötigt. Ich dachte dass bei Allen nicht angesprochenen ICs die CLK, MISO und MOSI Pins kein Strom verbrauchen.
Es stehen zwei uC zu Auswahl: ARM7 NXP LPC2387, laut Datenblatt sind "HIGH-level output current" und "LOW-level output current" jeweils 4mA. Bei "LOW-level input current" und "HIGH-level input current" sind es 3uA. ARM9 Freescale i.MXL: ebenfalls 4mA output. Bei den ICs finde ich den Strom nirgends Angaben zum Strom der input Pins.
Bei CMOS ICs ist der Eingangsstrom weitgehend irrelevant, das sind kapazitive Lasten. Wenn man zu viele Eingänge an einen Ausgang hängt, dann leidet die Flankensteilheit und damit die maximale Taktfrequenz vom SPI. Es ist einfacher, wenn beide Seiten wissen worüber man sich unterhält. Wenn du also das Geheimnis um die mysteriösen 9 ICs lüften würdest. Und verrätst, an welchen SPI Takt du gedacht hattest. Von solchen Details abgesehen: Ja, im Prinzip kann man das machen. Der Einzelfall verdient jedoch nähere Betrachtung, es muss nicht in jedem Fall funktionieren.
Danke A.K. und Albert. In einem ersten Entwurf (immerhin soll es mein erstes PCB werden) sind eigentlich nur 3 ICs geplant. Gelingt dies, würde ich das Design erweitern auf besagten 9 ICs. Hier die Details: 1x LSI LS7366R 32-Bit Quadrature Clock Counter with Serial Interface http://www.lsicsi.com/pdfs/Data_Sheets/LS7366R.pdf 1x Trinamic TMC429 - Stepper Motor Controller (Profil Generator) für 3 Stepper Motoren http://www.trinamic.com/tmc/render.php?sess_pid=480 1x ADC IC - Modell noch nicht ausgesucht In der endgültigen Ausbaustufe würde noch ein zweiter Trinamic TMC429 dazukommen, und 5 Stepper Motor Treiber, Trinamic TMC 261(http://www.trinamic.com/tmc/render.php?sess_pid=485) Angepeilte SPI CLK Taktung ist 1 oder 2 MHz. Grüsse, Mark
1 bis 2 MHz ist schon einigermaßen schnell, und die kapazative Last von 9 ICs-Eingängen ist auch ein wenig was, aber normalerweise sollte das funktionieren. Was du machen kannst: Die SPI-Leitungen (Data und Clock) nicht Sternförmig verlegen, sondern als eine Leitung an der nacheinander die ICs hängen ohne große Abzweigungen und direkt an den SPI-Ausgang einen Serienwiderstand vorsehen. Den Widerstand (ca. 15..50 Ohm) dann so wählen dass man am Oszi die Reflexionen minimiert. Möglicherweise dann noch am Ende der Leitungen (d.h. am letzten IC) eine Serienschaltung Widerstand und 100nF gegen GND (wieder mit Oszi den Widerstand auf minimale Reflexionen wählen). Kommt drauf an wie lang deine SPI Leitung ist. Unter 30cm braucht es das eher nicht, bei über 100cm aber auf jeden Fall. Dann möglicherweise noch einen Bustreiber-IC passend zu deiner Betriebsspannung aussuchen (sowas wie 74AHC1G125GW oder SN74LVC1G125), die können einiges an kapazativer Last treiben, aber das ist bei "nur" 9 ICs vermutlich sogar übertrieben. HTH
Danke asd! Bustreiber-IC - wieder was dazu gelernt. Der Einsatz klingt vernünftig. Die ICs kosten mich weniger als es ohne zu testen und festzustellen dass es doch nicht klappt... Ich denke die 30cm sollten reichen, werde es also erstmal ohne Widerstände zur Minimierung der Reflexionen versuchen. Grüsse
An sich hätte ich das bei 30cm Leitung anders rum empfohlen: Dann lieber keine Bustreiber. Dadurch dass diese schön knackig steile Flanken produzieren wird das Thema Reflexionen/Überschwinger erst richtig aktuell und die Widerstände zum Dämpfen der Reflexionen am Anfang und Ende der Leitung werden wichtiger. Bei 30cm und 9 Inputs sollten die normalen Port-Ausgänge auch reichen.
Mark O. schrieb: > Bustreiber-IC - wieder was dazu gelernt. Der Einsatz klingt vernünftig. Wenn alle ICs auch senden, dann braucht jedes IC seinen Bustreiber. Jedes sendende IC muß den Bus treiben können.
Um das kurz zu ergänzen. Ein sehr schöner Versuch ist der mit dem Rechteckgenerator, dem 50m-50Ohm-Koaxkabel und dem 2-Kanal-Oszi einmal vorn, einmal hinten am Kabel. Wenn man das passend einstellt (duty cycle 25% und passende Frequenz, Generatorimpedanz 50 Ohm), dann sieht man vorne am Generator ein 50%-duty cycle Rechtecksignal und am hinteren Ende "fehlt" jeder zweite Puls. so hat mein Prof uns damals klar gemacht, was mit "Reflexionen" gemeint ist. Wenn man dann an das hintere Kabelende Widerstände anklemmt (1k, 220R, 100R, 50R, 25R und 0 Ohm/Kurzschluss) und jeweils dsa Bild beobachtet, dann wird einem schlagartig einiges klar. Hintergrund ist, dass jedes (elektrische) Signal energie enthält. Diese kann bekanntlich nicht vernichtet werden. Wenn die also ein Kabel entlangläuft und an einem offenen Kabelende ankommt, dann kann die nirgendwo hin, sie läuft einfach zurück: eine Reflexion. Daher muss eine Leitung terminiert sein. Die Terminierung setzt die einlaufende Energie in Wärme um (Umwandeln geht ja). Genau das macht der Widerstand am Ende. Der ohmsche Wert muss dabei der Kabelimpedanz entsprechen, was aus Leistungsanpassung folgt und was wir hier mal eben weglassen; also: nicht die Tatsache (steht ja da) nur die Herleitung und Begründung .-) Die Terminierung, die asd angegeben hat (selektierten Widerstand und 100nF) sll genau das erreichen: wenn das Signal ankommt, dann wird es an dieser Stelle in Wärme umgesetzt und rennt nicht wieder zurück und bringt alle durcheinander. Das ist in der Tat nur dann nötig, wenn der Treiber - also das Teil, was die Leitung und die Kapazitäten aller Eingänge und so weiter auf High-Pegel auflädt bzw. auf Low-Pegel entlädt - Richtig Leistung liefern kann. Die Bustreiber sind genau dafür da (Leistung liefern), die können das also, da ist dann Terminierung besonders wichtig. Ein Controller-Ausgang ist da idR. schwächer und da kann man dann schon mal ohne Terminierung auskommen, speziell wenn die Leitungen so kurz sind (30 cm), dass die reflexion schon durch ist bevor das nächste Bit angelegt wird. 30cm sind ja ziemlich genau eine Nanosekunde Laufzeit, ein Meter also derer drei. Nochmal zum Aufladen/Entladen: Du hast Recht, "Strom verbrauchen" tun CMOS-Eingänge eigentlich nicht: der Eingangswiderstand ist so hoch, dass da praktisch kein Strom reinfliesst. Dennoch muss Strom fliessen: für eine Transition low->high (z.B. 0V->5V) müssen die Gates der Transistoren, die die Eingänge bilden, auf diese Spannung aufgeladen werden. Ausserdem stellt die Leiterbahn gegenüber Masse einen Kondensator dar, der aufgeladen werden will. Das sind zwar alles nur wenige pF. Aber: Kapazität ist Ladungsmenge pro Volt. Strom ist Ladungsmenge pro Sekunde. Willst Du also 1 pF in 1 ns aufladen auf 5V, dann brauchst Du 5 * 10E-12 * 10E9 Ampere, also 5 mA. Da sehen wir auch den Grund, warum SCSI damals den Weg von 5V zu LVD gegangen ist: man kann schneller auf Endspannung aufladen bei gleichem Strom. Die Spannungssenkungen bei den Kernspannungen/Versorgungsspannungen haben teilweise den gleichen (schnellere Logik) teilweise andere (kleinere Strukturen bei gleicher Spannung => immens grössere elektrische Felder, daher muss die Spannung runter) Gründe. Und am Schluss möchte ich den Tip mit dem Oszi von asd wiederholen und dringend an Dein Herz legen: nicht vermuten, messen! Die Bustreiber kannst Du im Layout erstmal vorsehen, die Dämpfungswiderstände/Terminierungswiderstände aber bitte auch. Und dann fange die Experimente an mit Bustreibern, die durch Drahtbrücken ersetzt sind, ohne Terminierung und gebrückten Dämpfungswiderständen. Dann Signale beobachten und das "Klingeln" und die Reflexionsläufe im Auge behalten. Wenn es so funktioniert: schön! Wenn nicht, sind a) die Flanken zu weich/flach => Treiber einfügen b) die Flanken steil aber die Reflexionen sorgen für Überschwinger und Signalkuddelmuddel => Terminierung und Dämpfung einfügen Klingt wie Rumfrickeln im sinne von "Ey! Wir entwickeln hier, wir sind doch keine Frickler!" Aber merke: "Das Experiment ist eine anerkannte wissenschaftliche Methode zum Erkenntnisgewinn". hase
Hallo hase für die tolle Erklärung, durch die so vieles klarer geworden ist, möchte ich mich sehr bei Dir bedanken. Grüsse mark
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.