Hallo zusammen, ich bin gerade dabei ein eigenes Master-Slave-Verfahren zu Konzeptionierung: Zunächst einmal ein paar Infos: IC Master: TI AM2431 IC Slave: TI MCU280039C Bustopologie: Alle Slaves parallel am Bus, lineare Verbindung zwischen den Slaves über GPIOs Pegel: RS485 Jetzt stehe ich vor der Frage, wie ich es schaffe, den Busteilnehmern eine eindeutige Adresse zuzuweisen. Wichtig ist zu erwähnen dass ich keine interne Schnittstelle mehr zur Verfügung habe (kein SPI, I2C, UART) und mir nur max. 2 GPIOs pro Slave zur Verfügung stehen. Ich hatte schon die Idee, mithilfe von verschieden einstellbaren Frequenzen im GPIO Signal und einer Frequenzmessung und Wertetabelle im Speicher dann die passende Adresse zuzuordnen und für den nächsten Teilnehmer dann die Frequenz anzupassen usw. Fällt jemand eine bessere Idee dazu ein? Oder gibt es eine andere Möglichkeit, eine Kommunikation über ein Kabel herzustellen? Schonmal vielen Dank. LG Joshua
Daisy Chain der beiden I/Os beim Powerup, als Enable-In und -Out?
Joshua schrieb: > IC Slave: TI MCU280039C Das Ding heißt aber TMS320F280039C. Beide haben doch CAN, da würde ich nen Teufel tun und was anderes nehmen als CAN. Man kann seine Lebenszeit auch sinnvoller verschwenden, als sich umständlich Protokolle selber zusammen zu schmieden. Es wird eh nicht zuverlässig laufen und Du wirst irgendwann aufgeben. Diese großen Boliden haben oft eine einmalige Seriennummer, darüber kann man prima die Adressierung aushandeln. Bei kleinen MCs (ATtiny) habe ich schon 2 Widerstände an einem ADC-Pin zur Adressierung verwendet. 32 Slaves sind mit 1% Widerständen möglich.
:
Bearbeitet durch User
CAN oder LIN sind hierbei deine Freunde…Spar dir die Lebenszeit und nimm direkt etwas erprobtes und vor allem zuverlässiges! Aus deiner Beschreibung wird man auch nicht wirklich schlau. Hast du ein blockschaltbild, Entfernungen der Geräte untereinander sowie benötigte Baudrate ? Ansonsten ist der Tipp von prx Gold wert. Alternativ kann man auch für erste Initialisierung mit einem langen random Delay arbeiten solange sich die Controller über ihre Firmware eindeutig in Funktion identifizieren lassen (wobei man dann hier auch einfach die Adressen direkt vergeben kann) Letztendlich ein paar mehr Details bitte
Man kann diese Daisy Chain auch mit Reset als Input betreiben und benötigt nur einen Output Pin. Der Master kann dann jederzeit den Bus resetten und die Initialisierung wiederholen. Wenn der Output vom Letzten wieder beim Master landet, erkennt er darüber ein Hotplug Event.
:
Bearbeitet durch User
TestX schrieb: > Aus deiner Beschreibung wird man auch nicht wirklich schlau. Hast du ein > blockschaltbild, Entfernungen der Geräte untereinander sowie benötigte > Baudrate ? Die Entfernungen zwischen den Geräten beträgt maximal 15-20cm, eher weniger. Ich habe vor, eine relativ hohe Baudrate von 2MBit/s zu fahren. (prx) A. K. schrieb: > Man kann diese Daisy Chain auch mit Reset als Input betreiben und > benötigt nur einen Output Pin. Der Master kann dann jederzeit den Bus > resetten und die Initialisierung wiederholen. Wenn ich dich hier richtig verstanden habe, ist die Idee, dass man die Slaves nacheinander enabled und dann mit der zugewiesenen Adressinformation als Datenstrom über den RS485-Bus versorgt? Falls ja, ist das dann möglich, dass ich diese Nachricht ohne Adressierung an den Slave schicken kann (er hat im ersten Moment ja noch keine Adresse)? Und wie läuft das dann beim Nächsten Slave ab? Der vorhergehende Slave ist dann ja ebenfalls enabled, allerdings mit Adresse?
Joshua schrieb: > Wenn ich dich hier richtig verstanden habe, ist die Idee, dass man die > Slaves nacheinander enabled und dann mit der zugewiesenen > Adressinformation als Datenstrom über den RS485-Bus versorgt? Ich bezog mich zunächst nur auf die Frage zur Adressvergabe eines bestehenden Busses irgendeiner Art, mit den beiden Pins als zusätzlichem Element. Mehr stand ja nicht drin, die Info "Pegel=RS485" bringt keine nützliche Information. Oder diesen diese beiden Pins gleichzeitig auch zur Datenkommunikation?
Joshua schrieb: > Falls ja, ist das dann möglich, dass ich diese Nachricht ohne > Adressierung an den Slave schicken kann (er hat im ersten Moment ja noch > keine Adresse)? Und wie läuft das dann beim Nächsten Slave ab? Der > vorhergehende Slave ist dann ja ebenfalls enabled, allerdings mit > Adresse? Anfangs ist nach diesem Schema jeder Slave disabled, oder auch direkt im Reset, wenn man Reset als Enable-In nutzt, ggf mit Pulldown/up. Der Master gibt nun den ersten Slave frei, und der reagiert auf eine Standard-Adresse. Über das Datenprotokoll vergibt ihm der Master die neue Adresse. Anschliessen wird ihm über diese neue Adresse mitgeteilt, dass er die Standadresse ignorieren und sein Enable-Out freigeben soll. Damit ist er durch, der nächste in der Kette ist enabled und die Prozedur wiederholt sich bei ihm. Das Enable-Out des letzten Slaves landet beim Master, und der weiss nun, dass alle durch sind. Alternativ kriegt er das auch per Timeout beim Zugriff auf die Standardadresse mit. In der Reset-Variante gehen bei einer Unterbrechung die Slaves unterhalb davon automatisch in Reset und der Eingang vom Master kriegt das mit. Der kann dann wiederholt die gesamte Kette zurücksetzen und neu Initialisieren, bis sie wieder vollständig funktioniert.
:
Bearbeitet durch User
Ah, ja das macht Sinn, mit diesem Grundgedanken kann ich weiterarbeiten. Vielen Dank :)
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.