I2C und Multiplexer

Gast #4278671
Lesenswert?

Hallo Zusammen,

ich habe eine Frage zum Thema Multiplexer. Ich habe ein Board mit 
fertigen Treibern, dass ich als Control Einheit verwende. Auf dem Board 
ist ein I2C Bus und ein Multiplexer. Ich möchte einen der internen DACs 
ansteuern. Dazu muss ich den Multiplexer auf den gewünschten Bus 
schalten und dnan sozusagen eine Sequenz für den DAC absetzen. Aber was 
ist genau damit gemeint?

Ich habe ein Kommando ähnlich I2C 0 71 x xz
Wobei 0 das R/W, 71 wahrscheinlich A0 bis A6 also 7MSB denke ich,x die 
Schreibrichtung und y der Kanal. Aber was genau kann ich tun um als 
erstes den Multiplexer auf den gewünschten i2c bis zu schalten. Kann ich 
dann über die Kommandoshell eines Rechners, an dem das Board per USB 
angeschlossen ist, machen? Oder muss das auch in dem Protokolfile sein, 
dass ich dann für den Controller schreibe, um dann Gerste über I2C 
anzusteuern?
Gast #4279036
Lesenswert?

Jim M. schrieb:
> Da fehlen alle relevanten Infos (Board Typ etc.) um die Frage auch
> nur
> im Ansatz sinnvoll beantworten zu können. Meine Glaskugel ist in
> Reparatur.

....quatsch,Du hast bloß keine Ahnung!
Den Multiplexer erreichst Du ganz bequem über das Kommando 
(write,<adresse>,<wert>)
Gast #4279226
Lesenswert?

Es handelt sich dabei um kein kommerzielles Board. Mir geht es nur
darum:

Es wird an einem Raspberry Py per USb angeschlossen und verfügt intern
bereits über alle Treiber. Meine Frage ist nur wie ich den internen
Multiplexer dieses Boards auf einen der I2C-Bus schalte? Aus der
Kommandoshell aus? Mir geht es einfach nur um das Prinzip!
Gast #4279286
Lesenswert?

Thomas schrieb:
> Meine Frage ist nur wie ich den internen
> Multiplexer dieses Boards auf einen der I2C-Bus schalte? Aus der
> Kommandoshell aus? Mir geht es einfach nur um das Prinzip!

So, wie es vom Entwickler des Boards vorgesehen ist. Andere 
Möglichkeiten sind nicht ausgeschlossen, aber doch eher selten. So ist 
das im Prinzip immer.
Gast #4279327
Lesenswert?

PS: Befehle schicken & empfangen geht zB per libusb in einem C-Programm, 
welches du über deine Kommandoshell kompilierst und ausführst.Alternativ 
passt vielleicht ja ein im Kernel vorhandener Treiber auf die 
gewünschten Befehle, den du dann über seine spezifische Schnittstelle ( 
/dev Dateien oder so ) ansprechen kannst.
Gast #4279341
Lesenswert?

Hier kennt sich ja wieder keiner aus, schrecklich...

Der per USB steuerbare I²C Multiplexer ist natürlich völlig zweifelsfrei 
Conrad # 409667.


Dummerweise gibt es zum Kanal-Wechseln nur eine Windows-Software.

Deshalb:

Thomas schrieb:
> Aber was genau kann ich tun um als
> erstes den Multiplexer auf den gewünschten i2c bis zu schalten. Kann ich
> dann über die Kommandoshell eines Rechners, an dem das Board per USB
> angeschlossen ist, machen?
Gast #4279424
Lesenswert?

Planlos schrieb:
> Der per USB steuerbare I²C Multiplexer ist natürlich völlig zweifelsfrei
> Conrad # 409667.

Na du hast ja eine tolle Glaskugel ...

> Dummerweise gibt es zum Kanal-Wechseln nur eine Windows-Software.

Auch die wird USB-Konforme Dinge über den USB schicken, die man dann 
natürlich auch unter dem (unbekannten) Betriebssystem des Rechners des 
TOs irgendwie auf den Weg bekommen würde.
Gast #4279443
Lesenswert?

W.A. schrieb:
> (unbekannten) Betriebssystem des Rechners des TOs

Nachdem der Rechner ein Raspi (erm, RasbPy?) ist, wird das OS darauf 
nicht allzu unbekannt sein.... Oder ist das Raspi-Windows10 schon 
fertig?

Thomas schrieb:
> Es wird an einem Raspberry Py per USb angeschlossen und verfügt intern
> bereits über alle Treiber. Meine Frage ist nur wie ich den internen
> Multiplexer dieses Boards auf einen der I2C-Bus schalte? Aus der
> Kommandoshell aus? Mir geht es einfach nur um das Prinzip!
Gast #4279637
Lesenswert?

Peter D. schrieb:
> Hast Du mal den Schaltplan?

Den braucht er ja nicht.
Denn:

Thomas schrieb:
> Ich habe ein Board mit
> fertigen Treibern,

und wenn die Linux-Treiber für das (unbekannte) Board laufen, werden sie 
den (unbekannten) I²C Multiplexer ansprechen können.

Alle Details über den Multiplexer werden Kernel-Intern gehandhabt.
Für die Userspace-Programme stehen einfach mehrere I2C-Bus-Devicenodes 
zur Verfügung.

Richtiges Devicenode verwenden => Kernel kümmert sich um den Rest.

Hier noch ein Link mit schickem ASCII-Art Bild für die Graphisch 
Orientierte Leserschaft:

https://i2c.wiki.kernel.org/index.php/I2C_bus_multiplexing


Zitat:
1
If your system has one (or more) I2C controller(s) and one (or more) I2C
2
multiplexer(s), you should be able to access each I2C device on any
3
segment without doing "strange" operations but i2c classic ones.
4
In other words, the user shouldn't have to know the I2C bus topology 
5
details nor the multiplexer internals. By considering each i2c multiplexer
6
branch as an independent segment we can reach the goal, in fact the user 
7
simply can exchange data with an I2C device by accessing to the relevant 
8
segment.


Stand so aber auch schon im Parallel-Thread.

Timmo H. schrieb:
> dann erledigt Linux die Umschaltung automatisch wenn du
> den i2c bus ansprichst (i2c-0, i2c-1 ...)
Gast #4279997
Lesenswert?

Stefan U. schrieb:
> @Bestromer:
> Hä? Wir wissen ja noch nichtmal, um welches Board es geht. Kennt ihr
> euch persönlch, oder woher weist du mehr?

...ich weis natürlich nicht mehr wie alle Anderen auch....mit den 
spärlichen Angaben des TO kann man nix Anfangen, genau so wenig wie mit 
meiner Antwort....beides sehr rätselhaft und Zeitverschwendung....das 
war die Botschaft dahinter :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren