Hallo zusammen, ich habe eine Schaltung entworfen, bei der ich zwei I2C-Busse nutzen möchte, eine interne (wo ich Master bin) und eine zur externen Kommunikation (dort bin ich Slave). Jetzt habe ich festgestellt, dass im Datenblatt beide mit I2C1 bezeichnet sind, einmal auf Pin 46,47 und einmal auf Pin 58,59 meines LPC2362. (einfach im Datenblatt nach SDA1 suchen). Heißt dass, dass ich nur ein I2C1-Interface habe, das ich auf verschiedene Pins mappen kann? Oder stecken da 2 Interfaces dahinter? Muss ich jetzt einen Bus umlöten auf ein anderes I2C-Interface, oder gibt es da eine Softwareseitige Lösung? Und ist sowas üblich, so komische Doppelbelegungen zu machen? Dazu hab ich nichtmal ne Fußnote gefunden... Vielen Dank im Voraus für Infos! Viele Grüße Stefan PS: Jetzt bitte nicht vorschlagen, dass ich den I2C auch manuell auf GPIO-Pins umsetzen kann...
Im Datenblatt steht 3x I2C. mehrfaches mapping ist üblich, sonst schließen sich zu vile funktionen gegenseitig aus. es gibt noch I2C0 und I2C2, wobei nur I2C wirklich I2C ist und nur dort sichergestellt ist, dass der Bus nicht gestört wird, wenn der Controller ohne Versorgung ist. Steht ALLES im Datenblatt.
Also gibt es wohl keinen Workaround :( Da ich zuerst die HW und dann SW entwickele, blende ich solche Details (ob ich jetzt konkret an I2C0, 1 oder 2 hänge) aus, die sind ja erst bei der SW relevant. Aber wenn diese Doppelbelegungen üblich sein sollten, dann kann ich auch irgendwo verstehen dass dafür keine Fußnote spendiert wird, und muss in den sauren Apfel beißen. Schade. Ein schönes Restwochenende und danke für die fixe Antwort! Und beim Uart hatte ich übrigens Glück ;)
gurkenking schrieb: > Heißt dass, dass ich nur ein I2C1-Interface habe, das ich auf > verschiedene Pins mappen kann? Ja, genau das heisst das. Ausserdem sind die Pins 58,59 nur eingeschränkt für I2C brauch bar, da nicht open drain. Wenn du es nicht per GPIO implementieren möchtest, bleibt dir nur umverdrahten, z.B. 48,49 (I2C2) statt 58,59.
Ich werde dann umverdrahten, ist zum Glück nebeneinander und unbelegt... Wenn ich das richtig gelesen habe, muss ich das mit dem Open Drain beachten, wenn mein LPC2362 nicht gepowert ist, und somit "tot" am Bus hängt. In diesem Fall hat er 10k zwischen GND und I2C-Bus (gerade gemessen). Das sollte doch die anderen Pegel auf dem Bus dann nicht weiter stören...
wie sehr muss der hersteller dir das denn vorkauen? Es gibt SCL0/SDA0, SCL1/SDA1 und SCL2/SDA2, eben für I2C0 bis I2C2. Das sollte man schon merken. Dann erstmal HW machen, ohne sich zumindest Gedanken über die SW zu machen, kann nur schief gehen. NUR I2C0 an 25 und 24 ist richtiges I2C. Die Portpins besitzen gar keine Push/Pull-Stufe und können auch als GPIO kein Vcc ausgeben. I2C1 und I2C2 sind identisch.
>> Dann erstmal HW machen, ohne sich zumindest Gedanken über die SW >>zu machen, kann nur schief gehen. Ja Mist, selbstverständlich habe ich mir zu nix vorher Gedanken gemacht! >> "Aber wenn diese Doppelbelegungen üblich sein sollten" - damit hatte ich halt nicht gerechnet, nicht mehr und nicht weniger. Für einen Insider mag das alles selbstverständlich sein, aber für einen Neuling? Das demotiviert, wenn für Dich sowieso klar ist, dass alles schief gehen muss...
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.