Hallo, mit einem MSP430FR5739 möchte ich über einen I2C-Bus mehrere Drucksensoren (MPL3115A2 von Freescale, bis zu 10 Stück) auslesen. Bei einem Drucksensor funktioniert das bereits. Um mehrere Drucksensoren nacheinander anzusprechen es gibt nur eine einzige Adresse für alle), habe ich mir überlegt die Sensoren nacheinander einzuschalten, auszulesen und wieder auszuschalten. Leider spielt der I2C-Bus dabei nicht mit. Hat jemand eine Idee, wie man das alternativ machen könnte? Hatte auch noch überlegt jedem Sensor einen Baustein am SCL und SDA zu spendieren, damit diese Pins nach Abschaltung hochohmig am Bus erscheinen und diesen somit nicht mehr beeinflussen. Hat jemand eine Lösung um mehrere Sensoren gleicher Adresse an einem I2C-Bus zu betreiben? Danke Helmut
Danke, doch ein Multiplexer vervielfältigt leider auch die Anzahl der Busleitungen.
Hallo Dennis, das mit der "SCLOCK-Leitung über einen DeMultiplexer" versteh ich nicht. Ist mir unbekannt.
Helmut Fritz schrieb: > Danke, > doch ein Multiplexer vervielfältigt leider auch die Anzahl der > Busleitungen. Die SDA-leitung bleibt für alle gleich beim Demultiplexer, nur die SCL wird für jeden eigens verdrahtet. So in der Art ... http://www.onsemi.com/pub_link/Collateral/AND9061-D.PDF Wenn dir der Aufwand ja nicht zu groß ist :) nimm einen sehr sehr sehr sehr kleinen Tiny und nehm ihn als I2C-Bridge vor den MPL3115A2. Den kannste ja dann auf individuelle Adressen reagieren lassen und sogar von Master-Seite mit OneWire oder anderen Protokollen betreiben.
:
Bearbeitet durch User
Danke, beide Lösungen sind sehr interessant. Zu 1.: Bei der ersten könnte jedoch weiterhin ein Problem bestehen, da SDA ja keine Entkopplung erfährt. Das werde ich aber testen. Vorteilhaft wäre auch, dass ich alle Sensoren ohne Unterbrechung mit Strom versorgen könnte. Zum Strom-Sparen würde man dann die Sensoren in den Sleep-Modus versetzen. Zu 2.: Gibt es für die Tiny-s bereits Beispiellösungen? Ja, es scheint aufwändig zu sein, denn jedes Teil muss vor dem Einbau programmiert und verwaltet werden.
Helmut Fritz schrieb: > Danke, beide Lösungen sind sehr interessant. > > Zu 1.: Bei der ersten könnte jedoch weiterhin ein Problem bestehen, da > SDA ja keine Entkopplung erfährt. Das werde ich aber testen. > Vorteilhaft wäre auch, dass ich alle Sensoren ohne Unterbrechung mit > Strom versorgen könnte. > Zum Strom-Sparen würde man dann die Sensoren in den Sleep-Modus > versetzen. > > Zu 2.: Gibt es für die Tiny-s bereits Beispiellösungen? > Ja, es scheint aufwändig zu sein, denn jedes Teil muss vor dem Einbau > programmiert und verwaltet werden. Der Tiny wäre ein I2C-Client und ein I2C-Master in einem. Bei nem Tiny25 z.b. I2C-Client über USI und I2C-Master über Software-I2C. Die Adresse des I2C kann man sich ja über eine 2te I2C-Adresse in den EEPROM programmieren, wenn das Gerät allein am I2C-Bus hängt. Es wäre ja auch möglich noch die Abfrage etc. dem Tiny25 zu überlassen und er gibt nur noch fertige Ergebnisse weiter per I2C-Bus.
Wie hast du die Sensoren an- und ausgeschaltet? Versorgungsspannung getrennt? Soweit ich weiß sind die Pins am I2C Bus im Ruhezustand auf high. Eventuell verhalten sie sich anders wenn der Chip aus ist. Du könntest es mit pull-up Widerständen versuchen. Jst
Andere Frage mal MSP430FR5739 hast du nicht 10 + 1 Pins am MSP430 frei für eine I2C-Implementierung ?
Als Multiplexer gibt es von NXP z.B. den PCA9547 (8 Kanäle). Die Kanalumschaltung erfolgt auch über I2C und erfordert somit keine extra Steuerleitungen. http://www.nxp.com/products/interface_and_connectivity/i2c/i2c_multiplexers_switches/#products
Wenn die Sensoren weit auseinander liegen und keine Sternschaltung erwünscht oder möglich ist, könntest du jeden Sensor mit einem PCF8574(A) ausstatten und darüber die SCL-Leitung schalten.
Jonas G. schrieb: > Soweit ich weiß sind die Pins am I2C Bus im Ruhezustand auf high. > Eventuell verhalten sie sich anders wenn der Chip aus ist. Wenn dann dann eine der Signalleitungen auf High geht, versucht sie den Chip über die Substratdiode zu speisen. Das funktioniert meist nicht besonders gut, der Chip ist dann halb an, halb aus. Jonas G. schrieb: > Du könntest es mit pull-up Widerständen versuchen. Die sind bei I2C sowieso da. MfG Klaus
Mit 2 Mosfets und 2 Pullups pro Drucksensor sollte die Trennung bei Abschaltung der Versorgungsspannung klappen: http://www.nxp.com/documents/application_note/AN10441.pdf "isolates a powered-down bus section from the rest of the bus system"
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.