Sie können hier wirklich nicht einmal eine Auswahl treffen, ohne die PHY-Ebene zu bestimmen, aber einige Ideen:
Wenn das System wirklich wie gezeichnet verkettet ist, rufen Sie jedes Gerät der Reihe nach auf. Werkseitiges Programm an die "Broadcast-Adresse", falls der PHY eine hat (wie I2C). Lassen Sie dann einfach jedes Gerät eine Adresse auswählen und diese Adresse an das nächste Gerät senden, während es sich die Kette entlang bewegt.
Wenn Sie 8-Bit-UIDs verwenden, erhalten Sie Bonuspunkte, zumindest von mir, wenn Sie etwas Komisches in ASCII mit den folgenden Adressen buchstabieren:
Master: "Hey Gerät 1, wählen Sie eine Adresse "Gerät 1:" M ", hey Gerät 2 wählen Sie eine Adresse Gerät 2:" y "Gerät 3:" B "Gerät 4:" o "Gerät 5:" s "Gerät 6:" s "Gerät 7:" S "Gerät 8: "u" Gerät 9: "c" Gerät 10: "k" Gerät 11: "s"
Alternativ, wenn Ihr Design eine feste Anzahl von Geräten hat: Ich hatte ein Design, das eine Rückwandplatine verwendete Es konnten bis zu 4 Karten eingesteckt werden. Am Ende habe ich einen I2C-basierten GPIO-Expander auf der Rückwandplatine platziert (eigentlich war es ein Lüftersteuerungs-IC, den ich sowieso brauchte. Ich habe nur einen mit I2C-Schnittstelle und einige GPIOs ausgewählt ).
Ich habe einen GPIO über jeden Kartenrandanschluss zum Reset-Pin des DSP auf jeder Einsteckkarte geleitet. Alle DSPs wurden werkseitig auf 1 Adresse programmiert. Der Systemcontroller brachte die Steckplätze jeweils aus Reset 1 heraus, es wurde ein I2C-Befehl gesendet. Wenn etwas bestätigt wurde, wurde angenommen, dass der Steckplatz gefüllt war, und es wurde ein Befehl gesendet, seine I2C-Adresse in eine UID für diesen Steckplatz zu ändern. Dies wurde für jeden Steckplatz mit einem angemessenen Antwortzeitlimit durchgeführt.
Wenn es sich um einen gemeinsam genutzten Bus handelt, der Slaves initiieren kann, auch bekannt als Multi-Master. Lassen Sie einfach das Slave-Gerät die Kontrolle über den Bus übernehmen und fragen Sie den Master nach einer Adresse. Der Master gibt ihm nur die nächste Adresse in der Zeile, denken Sie an DHCP. Gleiche Bonuspunkte wie oben.
Wenn der PHY ein einzelner Master ist und Sie eine völlig unbekannte Anzahl von Geräten haben ... verketten Sie einen GPIO durch diese und steuern Sie damit, ob sie auf eine werkseitig programmierte Adresse reagieren? Wenn der Slave dann seine Adresse erhält, deaktiviert er das nächste Gerät in der Zeile? Auf diese Weise benötigen Sie nur 2 GPIO-Pins pro Gerät und 1 für den Master, und Sie können Geräte einzeln aufrufen. Sollte funktionieren, denke ich.
Wie auch immer, ehrlich gesagt alle Spekulationen, bis Sie sich für eine PHY entscheiden und uns mehr darüber erzählen können, wie das Gesamtsystem verbunden ist.