Was fehlt Dir denn jetzt?
Ich habe dich so verstanden, dass du den Arduino (welchen denn?)
verwendest, um den beide Sensor VL53L0X abzufragen und die Daten unter
einer anderen Adresse erreichbar zu machen.
1 | Sensor1 ------+-----Arduino-------------STM32
|
2 | (Slave) | (Master) (Slave) (Master)
|
3 | |
|
4 | Sensor2 ------+
|
5 | (Slave)
|
Ist das richtig? Oder ist es so?:
1 | Sensor1 ------+-----Arduino
|
2 | (Slave) | (Master+Slave)
|
3 | |
|
4 | Sensor2 ------+-------STM32
|
5 | (Slave) (Master)
|
Oder so:
1 | Sensor1 ------+-----Arduino
|
2 | (Slave) | (Master)
|
3 | |
|
4 | Sensor2 ------+-------STM32
|
5 | (Slave) (Slave)
|
Oder noch anders?
Hast du andere viel einfachere Alternativen bedacht?:
- Einen zweiten I²C Bus zu verwenden (der STM32L476 hat ja mehrere)
- Einen Multiplexer am I²C Bus zu verwenden um zwischen den beiden
Sensoren umzuschalten (es gibt so gar spezielle für I²C)
- Mittels XSHUT Pin zwischen parallel geschalteten Chips zu multiplexen
- Soft-I²C (Bit-Banging) auf beliebigen I/O Pins
- Einen kleinen ATtiny ohne Schnickschnack drumherum als Adress-Umsetzer
Wenn ja, welche hast du bedacht und warum nicht verwendet?
I2C Slave Implementierungen für Arduino Module gibt es jede Menge im
Netz. Welche davon verwendest du? Mit welchem Quelltext? Wie sehen die
Signale auf dem Bus aus? Hast du einen Logic Analyzer? Wenn nicht,
besorge Dir einen bevor du weiter machst.
By the way: Hast du das Datenblatt des Sensors gelesen? Da steht nur
ganz oben links in der Marketing ecke "Programmable I²C address". Es
fehlt aber die Erklärung, wie man die Adresse nun konkret ändert. Es
kann also auch sein, dass das gar nicht geht! Vielleicht ist die
Funktion für den Fall gedacht, dass du eine andere Variante des Chips
mit anderer fest programmierter Adresse verwenden kannst (das wäre gar
nicht unüblich).
Hast du die Application Note AN4846 gelesen?