Hierfür eignet sich ein I2C Multiplexer, dieser hat auch noch den Vorteil das er als Levelshifter arbeitet und man so einfach 5V/3,3V /1,7V Sensoren und Prozessoren in einem System mischen kann. Der I2C Bus besitzt Beschränkungen von der maximalen Leitungskapazität, diese lässt sich durch aufteilen auf mehrere Busse vermeiden.
Will man später mehr Sensoren zu einem System addieren ohne das Layout zu änder kann man den Multiplexer nachträglich als "Verteiler" an einen Vorhandenen I2C Bus einfach anhängen.
Wie man sieht benötigt man nur für jeden separaten Bus die passenden Pullup Widerstände zur entsprechenden Bus Spannung.
tca9548.png
Quelle: ti.com/lit/ds/symlink/tca9548a.pdf
Mein Testmodul:
Image2017_070117_212709_00000.jpg
Leider ist das Datenblatt etwas „ungenau“. Im Datenblatt im Netz findet man die Device Adresse Hex 70. Passt leider nicht, das Datenblatt zeigt aber auch ein Bitmuster: 01110000 = E0 wenn man es in Hex umrechnet und alle Adresseingänge logisch null sind. Sind Adresseingänge gesetzt einfach für A0=2,A1=4,A2=8 addieren. Darauf reagiert er dann auch richtig:
Alles anzeigen
Will man später mehr Sensoren zu einem System addieren ohne das Layout zu änder kann man den Multiplexer nachträglich als "Verteiler" an einen Vorhandenen I2C Bus einfach anhängen.
Wie man sieht benötigt man nur für jeden separaten Bus die passenden Pullup Widerstände zur entsprechenden Bus Spannung.
tca9548.png
Quelle: ti.com/lit/ds/symlink/tca9548a.pdf
Mein Testmodul:
Image2017_070117_212709_00000.jpg
Leider ist das Datenblatt etwas „ungenau“. Im Datenblatt im Netz findet man die Device Adresse Hex 70. Passt leider nicht, das Datenblatt zeigt aber auch ein Bitmuster: 01110000 = E0 wenn man es in Hex umrechnet und alle Adresseingänge logisch null sind. Sind Adresseingänge gesetzt einfach für A0=2,A1=4,A2=8 addieren. Darauf reagiert er dann auch richtig:
Quellcode
- const TCA9548write = &HE0 ‘A0,A1 undA2 Adresseingänge =0
- i2cstart
- i2cwbyte TCA9548write ‘ multiplexer ansprechen
- i2cwbyte 1 'kanal waehlen
- i2cstop 'ganz wichtig I2C zu stoppen bevor man den neuen Kanal anspricht
- i2Cstart .... 'Jetzt das Device ansprechen als ob der Multiplexer nicht da währe
- ...
- ...
- I2Cstop 'Bus Stoppen um den 2ten Kanal zu waehlen
- i2cstart
- i2cwbyte TCA9548write ‘ multiplexer ansprechen
- i2cwbyte 2 'kanal waehlen
- i2cstop 'ganz wichtig I2C zu stoppen bevor man den neuen Kanal anspricht
- i2Cstart .... 'Jetzt das Device ansprechen als ob der Multiplexer nicht da währe
- ...
9.315 mal gelesen