Hallo, da ich bisher nirgendwo eine Doku zu dem SPI Interface und dessen Beschränkungen gefunden habe. Ich würde SPI gerne für eine Schaltung mit 3 ATmega8535 einsetzen, da ich an drei relativ weit entfernten Stellen analoge Daten loggen und auswerten muß, ich aber leider nicht so viele Kabel verlegen kann. Die Prozessoren liegen jeweils 3m auseinander. |Proz 1| ---(3m)---- |Proz Master| ---(3m)--- |Porz 2| Hat jemand von Euch das schonmal gemacht und wie gut ist die Datenrate über eine solche Distanz per SPI? Danke für Eure Hilfe Marcus
Hallo, so weit ich weiss, ist SPI nicht für lange Strecken gedacht, eher für die Kommunikation auf einer Schaltung. Viele Grüße
@Jürgen: Hab ich auch schon dran gedacht, nur ich würde irgendwie gerne die 3 Prozessoren recht einfach "flashen" können und wollte mir dafür die UART lassen. Wäre es eventuell möglich das Problem, mit einem RS232 auf RS485 Wandler zu umgehen? Kennt jemand von Euch einen solchen Wandler? Ein MAX323 und ein MAX485 gekoppelt reicht? Danke für die Antworten Marcus PS: Mich würde schon mal interessieren, wo es zu dem SPI Interface genauere Daten gibt.
@Marcus Maul Die Angaben mußt Du Dir aus dem Datenblatt des verwendeten Bauteiles holen. Zwar ist der SPI nur für interne Verbindungen gedacht, aber es kommt darauf an wie du ihn einsetzen willst. Als einfachen Single Master Bus (da gibt es keine bidirektionalen Leitungen) kannst Du den Bus über externe Treiber (7404) entkoppeln und damit auch 3 Meter überwinden (die meisten älteren Busse sind sowiso nur mit wenigen MHz zu betreiben).Letztlich handelt es sich bei diesem Bus (im SM Betrieb) nur um einen "Schieberegister Anschluß". MfG Manfred Glahe
Ich habs mal für ein Muster mit SPI-Ausgabe und und 32 x 74HCT4094 (256 LEDs) gemacht, die Gesamtlänge betrug 4m, lief mit ca. 100kHz Takt und funktionierte völlig problemlos. Da Einzelstück, habe ich keine weiteren Messungen gemacht.
Wie wäre es als Alternative I²C zu benutzen. Da bräuchtest du nur 2 Leitungen und könntest locker die 3m überbrücken. Ich hab hier eine Strecke von 100 m mit I²C übebrückt bei einer Taktrate von ca. 30 KHz.
Danke, für Eure Tips. Da die ganze Sache nicht soo wild ist, werd ich das per RS485 machen. Den I²C Bus habe ich leider schon anderweitig verplant. Ich suche jetzt nur noch eine Möglichkeit, die Daten der RS232 des PC's irgendwie in RS485 konforme Umgebung zu bringen. MAX232 an einen MX485 anschließen und das ganze dann an die serielle Schnittstelle klemmen??? Wäre da smöglich?
beides brauchst du auf keinen Fall - der MAX485 ist sowas wie der MAX232, ein Konverter für die entsprechende Norm. Also an jeden MC einen MAX485, fertig. Am einfachsten ist Halb-Duplex-Betrieb.
@crazy horse Danke, für den Hinweis. Mir war diese Anschlußmöglichkeit des MAX485 aber schon aus anderen Beiträgen in diesem Forum zu Ohren gekommen. Meine Frage bezog sich auch auf die RS232 eines PErsonal Computers (Notebook, PC) bzw. PDA. Kann ich an deren RS232 einfach nen MAX485 hängen?? Gruß Marcus
So einfach geht das nicht. Als erstes müssen RXD und TXD vor dem Max485 negiert werden. Dafür reicht ein einfacher Transistor. Dann brauchst Du noch ein Signal zur Richtungsumschaltung. Da wird meist RTS verwendet. Die Spannung für den MAX485 kann man übrigens problemlos aus einem anderem Statussignal Z.B. CTS gewinnen. Aber Achtung der Pegel bei der RS232 ist von +3V..+12V als High definiert und bei -3V..-12V als Low. PDAs und Pocket PCs arbeiten meist mit +/-5V und ein normaler PC mit MAX232 kompatiblen Treiberbausteinen mit +/-10V. Also je nach Einsatzfall brauche ich evtl. noch zusätzlich einen Spannungsstabilisator. Wenn Interesse besteht, ich habe mal so ein Teil als Minni-Dongel aufgebaut. Die Schaltung (ist eh nichts herrausragendes) kann ich gern mal hier reinstellen. Steffen
@Steffen, Danke für die Info. Was mich immer wieder ärgert, ist das die Funktionsweise der RS232 RS 422 RS485 überall beschrieben ist, wie aber die einzelnen Leitungen angesteuert werden, das darfst Du meist selber immer wieder raus finden. Wär Dir aber Dankbar, wenn Du mir die SChaltung zukommen lassen würdest, da ich somit relativ viel Zeit gespaart hätte. THX Gruß Marcus
Anbei die Schaltung, damit alle etwas davon haben. Ist nicht 100%-ig aber funktioniert. JP1,Pin2 --> RXD vom PC JP1,Pin3 --> TXD vom PC JP1,Pin4 --> DTR vom PC (Spannungsversorgung) JP1,Pin5 --> Masse JP2,Pin1 --> RTS (keine Ahnung, warum ich damals noch einen Verbinder in die Schaltung eingebaut hab. Ich glaube aber, das war wegen einseitiger LP direkt zum verlöten mit einem 9-pol. Sub-D Stecker und DTR dann über ein Stück Draht.) Die Schaltung funktioniert soweit an mehreren PC´s. RTS wird unter anderem zur "Vorgaugelung" eines Pegels von -10V missbraucht. Beim Empfang von Daten liegen dort aber +10V, und damit an JP1,Pin2 0V an. Das wird von den meisten PCs (ich hatte noch kein Gegenteil) trotzdem als Low interpretiert. Ein Elko von 10µ parallel zu R18 sollte das aber beheben. Verwendet habe ich ich nicht den MAX485 sondern einen MAX483. Steffen
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.