Hi, ich will mir ne Schaltung bauen dafür habe ich einen ATMEGA8 und nen MAX7221 diese verbinde ich über die SPI. Nun ist meine frage wie lang darf maximal die Leitung zwischen den Bausteinen sein??? Ich würde mit den 3x SPI und 2x Spannungs Adern haufen Kabel sparen statt dem 16 Adern die vom MAx7221 abgehen. Es wären sicher so 2 Meter und ich glaube nichrt, dass das SPI dafür ausgelegt ist. mfg Nook
Das kommt im wesentlichen auf die Frequenz und die Terminierung der Leitungen an. Auf der Treiberseite ein kleiner R (10-50 Ohm) auf der Empfängerseite ein RC-Snubber (50-470 Ohm + 0,1µF) auf Gnd und jede zweite Ader auf GND, da sind sogar 5 - 20 Meter drin. Aber mit einer 5-adrigen Leitung wird das nicht gehen, schon allein wg. des Spannungsabfalls in den Versorgungsleitungen. 10 Adern (Gnd Clk Gnd Data Gnd SS Gnd Vcc Vcc Vcc) sind das absolute Minimum, außer Du hast auf der 7221-Seite eine eigene Versorgung.
Ich habe einen Sensor mit SPI-Interface über drei RS422-Transceiver an mein Board angeschlossen. Da wird die Leitungslänge quasi nur durch die Stromversorgung begrenzt... Es kommt halt darauf an, wieviel Strom du vor Ort brauchst...
Das Thema interessiert mich auch gerade, >Auf der Treiberseite ein kleiner R (10-50 Ohm) was ist der Treiber der normale Portpin ? >RC-Snubber<- meinst du damit einen Tiefpass? @Profi Welche Leitungslänge bei welcher Frequenz hast du damit erreicht @Rahul Wie sorgst du dafür das die RS422 Tranceiver auf der Sensoren nicht gegeneinander treiben? Schließt du dazu den SS Pin noch auf einen INT Pin an und aktivierst den Transceiver?
RS422 ist nur eine Punkt-Zu-Punkt-Verbindung, wobei die Endpunkte zimelich weit auseinanderliegen können (Quasi Langstrecken RS232). Ich übertrage nur Clock, Data_in und Data_out. Eigentlich ist es gar kein kompletter SPI-Sensor, sondern nur einer, den man wie ein Schieberegister anspricht und eher wie I2C arbeitet... Die Start-Condition wird wie bei I2C mit Clock und Data_in realisiert. Sonst müsste man noch einen Transmitter und entsprechende Leitungen für /SlaveSelect mit vorsehen...
Hi, also Strom ist kein Problem. Der MAX7221 kann bis zu 2A ziehen. halt ob das mit dem SPI nochklappt ist halt die frage. @Profi kannst du es bitte nochmal für anfänger erklären. mfg Nook
Also wenn ich mich hier mal einklinken darf, ist nämlich auch für mich von Interesse, da ich beabsichtige, einige DA Wandler von einem MEGA8 aus zu steuern... folgendes Szenario und eine Bitte um geht- geht nicht- Antwort... µC als Master, wobei die SCK, MOSI und MISO in ihrer Richtung über bidirektionale Bustreiber (74245) betrieben werden, da die Ports auch noch anderweitig verwendet werden sollen. Ein weiterer Port dient der Adressselektion (CE). Die Ausgänge gehen dann direkt auf ein Bussystem (SPI, Adress..., und Power) für Steckkarten, wobei die Slavedevices (4 pro Karte) am ende empfängerseitig terminiert sind. Verständnissfrage jetzt hierbei, Terminierung heisst für mich, dass am empfangenden Gerät terminiert wird, um Reflexionen zu verhindern. Oder soll der R(50) am Senderausgang gegen Masse und am Empfängereingang die RC-Kombi? Christian
Könntest du das vielleicht mal aufmalen? Terminierung brauchst es IMHO bei SPI nicht. Oder hast du RS422-Wandler dazwischen? Und selbst da braucht man erst ab bestimmten Leitungslängen und Geschwindigkeiten Terminierungen.
Hi, @Nook: Ich denke das Beste ist wenn Du es ausprobierst, und dann postest ob es geht. Generell muss man mit der Übertragungsgeschwindigkeit runtergehen, wenn die Strecke größer wird. Gruß, Feadi
@Feadi: Ja werd ich wohl machen müssen. Naja wird sich aber noch in die länge ziehen bis ich es tetsen kann. muss noch meine LEDs verlöten und dann mich ins programmieren stürzen in Microprozessor programmieren bin ich noch ein totaler anfänger ist mein erstes projekt.
Auf einer ATMEGA Platine habe ich eine 20 poligen Wannenstecker, ueber den ich z.B. die SPI Signale weiterreiche. Einen gleichen Stecker bediene ich auch mit einem FTDI2232. Ueber Flachbandkabel schliesse ich verschiede Hardware an. Z.B. den ADS8344. Gerade der ADS8344 ist sehr empfindlich. Wenn das Kabel zu lang wird (vielleicht 50 cm) oder man mehrere Lasten am Flachbandkabel haengen hat, dann "spotzt" der ADS8344. Am Skope kann man klingeln z.B. an SCL erkennen, dass den ADS8344 aus dem Tritt bringt. Kurzum: Vermeidet es SPI Signale als solche (Single_Ended) von der Platine runterzuleiten...
Danke für die Infos, aber wenn ich richtig in der Annahme gehe, könnte ich sog. "Spotzen" auf den Leitungen und damit verbundene Übertragungsfehler durch absetzen der Taktrate vermindern, bzw. entgegenwirken. würd ich ja auch einfach ausprobieren, nur möchte ich vermeiden, etwas zu probieren, was von vorneherein ausgeschlossen ist. Ist ja bald Wochenende, hoffe, da dann mal weiterzukommen. Über hoffentlichen Erfolg, sei berichtet. Christian
Das Klingeln (ringing) kommt ja gerade daher, dass die Leitung nicht oder falsch terminiert ist. Signal--50R---------------------------*---------------Input *--100R--100nF--Gnd Die 50 Ohm erhöhen die Senderimpedanz, damit zusammen mit der Leitungskapazität ein Tiefpass entsteht. Wo keine harten Flanken, da auch weniger Übersprechen und Ringing. der 100R--100nF ist als semi-aktiver Abschluss gedacht, d.h. nur der Wechselstromanteil wird terminiert. Ohne den 100nF würde das Signal DC-mäßig stark belastet. Die Werte musst Du durch Probieren und Messen (Oszi) ermitteln. Herabsetzen der Taktrate allein bringt noch garnichts, da das Ringen zwar seltener wird, aber gleich stark bleibt. Bei langsamer Übertragung kannst Du das Signal am C abnehmen, dann ist das Ringing weggefiltert. Bei hoher Frequenz wird die Amplitude am C recht gering sein, muss man probieren, evtl. Komparator zum Aufbessern des Pegels. Noch Fragen? Nur her damit!
Leuchtet ein, wenn ich jedoch eh ein Komparator benutze, kann ich mir den DC-Blocker ja theroretisch schenken. Erinnert mich alles an einen Versuchsaufbau in Signaltechnik auf der Berufsschule... lang ist es her :-) Ich gehe davon aus, mit den 100 Ohm berufst Du dich auf den Wellenwiederstand von Flachbandkabel (SCSI-Endterminatoren sind ja 100 Ohm Wiederstandsnetzwerke.) Nur meine Frage, wieso passt Du die Quellimpendanz nicht in dem Fall mit der des Kabels bzw. Senders an? (Satteliten un Antennentechnik 75Ohm rein 75 Ohm raus) Ansonsten ist das Gebilde ja recht verständlich. Könnte ja notfalls mit Repeatern aufbereitet werden, sollten Die Wege zu lang werden! Zurück zum Thema, gehört ja schon fast zu einem eigenen Thread. Schönes Wochenende Christian
@Profi: Es ist ein weitverbreiteter Fehler zu denken, dass Kingeln dann kein Problem mehr ist, wenn man mit langsamen Taken arbeitet. Wenn der Baustein schnell genug ist, was bei der heutigen Technik meistens der Fall ist, dann sieht der Baustein an den Taktflanken dass Klingeln, egal ob die Taktflanken jetzt schnell kommen, oder nur selten.
@Christian: 1. Deinen Hinweis auf den DC-Blocker und den Komparator verstehe ich noch nicht ganz. Könntest Du nochmal näher erleutern, was Du damit meinst? Mir geht es darum, dass nicht unnötig DC-Power verheizt wird. 2. Ja, Du hast Recht, im Idealfall sollte Sender- und Empfängerimpedanz gleich sein. Meiner Erfahrung nach reicht es jedoch, wenn sie annähernd ähnlich sind. Wer weiß denn genau, wie hoch der Wellenwiderstand des Kabels ist? Wichtig ist eher, dass die Impedanzen nicht um Größenordnungen verschieden sind, was z.B. bei einer gar nicht terminierten Leitung der Fall ist. 75Ohm hast Du doch richtig geschrieben, nur das Space fehlte. @Uwe: jetzt verstehe ich nicht ganz, was Du damit sagen willst. Stehe ich heute auf der Leitung (oder bin ich nicht passend terminiert)? (-:
Hab' bez. SPI und Reichweite auch einige Tests durchgeführt und will euch meine Erfahrungen mitteilen. Ich fahre den SPI mit 125kHz. Master und Slave sind auf verschiedenen Platinen und waren bisher nur ca. 20cm von einander entfernt. Meine Flachbandkabelverbindung verursachte da keinerlei Probleme. Nun bin ich gezwungen, die beiden Platinen räumlich ca. 15m von einander zu trennen. Also habe ich Versuche mit einem Ethernet Kabel (Cat6) durchgeführt. Glücklicherweise brauche ich auf der Slave Seite nur sehr wenig Strom, weshalb ich auch die Spannungsversorgung über die Ethernet Verbindung liefern kann (5V und 12V). In meinem Fall kann ich also auf die 8 Adern MISO, MOSI, SCLK, 5V, 12V, ein Chipselect und 2 x GND legen. Und nun der Clou, ich hatte für den ersten Test eine 20m Ethernetverbindung gelegt und nach meinen Messungen auf der Slave Seite sahen die Signale MOSI und SCLK einfach super aus, ein kleines Überschwingen aber das war's. Sogar bei 40m waren die Signale noch verwendbar wenn auch mit geringerer Flankensteilheit. Wenn man beim Messen am Slave das GND von der Masterseite als Bezugspunkt heranzieht, dann sehen die Signale natürlich fürchterlich aus. Deshalb hatte ich auch Bedenken wie es mit dem Rücksignal vom Slave zum Master auf der Masterseite dann aussieht. Aber auch hier die Überraschung, alles wunderbar sauber. Ich fahre allerdings nicht direkt vom Master Controller zum Slave Baustein sondern habe jeweils einen 74HCT04 als Puffer dazwischen. An den Sendepins sind noch 100 Ohm Widerstände angebracht. Beim Empfänger hat eine R-C Kombination außer einem danach auftretenden Gleichspannungsanteil nichts gebracht, bei keiner meiner getesteten Leitungslängen (20cm, 50cm, 20m und 40m). Also habe ich sie im Moment weggelassen. Nach diesen Versuchen bin ich nun geneigt die SPI Übertragung zwischen den beiden Platinen beizubehalten und nicht auf ein anderes Verfahren auszuweichen, was meint ihr?
Wusste gar nicht, daß man ein SPI FAHREN kann. Wie gut hängt das denn am Gas? Und die Kurvenstabilität? Wie war denn die FAHRT vom Master Controller zum Slave Baustein?
@ Teo > Ich fahre den SPI mit 125kHz. Master und Slave sind auf verschiedenen Die FREQUENZ ist egal. Entscheidend ist die Anstiegszeit der Treiberausgänge. Beitrag "8 MHz SPI über 75cm Flachbandkabel?" > Baustein sondern habe jeweils einen 74HCT04 als Puffer dazwischen. Brauchst du nicht, die Ausgänge vom AVR & Co sind nahe zu identisch. > An den Sendepins sind noch 100 Ohm Widerstände angebracht. DAS ist der entscheidende Punkt. Serienterminierung. > auszuweichen, was meint ihr? Passt so. MfG Falk
@Falk - Danke Ja, die Serienterminierung hält das Überschwingen doch gut in Grenzen, ohne hatte ich deutlich mehr. Die Treiber werde ich doch lieber drinnen lassen, da ich nicht unbedingt mit Pins vom Controller direkt nach außen fahren will, hab' da immer irgendwelche Interfaces dazwischen. Und sollte wirklich mal irgendwoher eine Spannungsspitze kommen, ist mir lieber, mein gesockelter DIP HCT04 gibt den Geist auf als der SMD gelötete Controller (übrigens kein AVR sondern 68HC908) ;-). Nachdem ich mich zuvor in diesem Forum zu dem Thema ein wenig umgesehen hatte, bin ich nun doch ziemlich verwundert, daß es so problemlos (auch über 40m) funktioniert hat.
@ Teo > Nachdem ich mich zuvor in diesem Forum zu dem Thema ein wenig umgesehen > hatte, bin ich nun doch ziemlich verwundert, daß es so problemlos (auch > über 40m) funktioniert hat. Auch lange nach dem Zeitalter der Aufklärung gibt es mehr als genug Mythen, auch (oder gerade dort?) im HighTec Bereich. Die oft vorhandene Portion Halbwissen tut ihr übriges dazu. MfG Falk
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.