Forum: Mikrocontroller und Digitale Elektronik I2C doppelt belegt auf LPC23xx


von gurkenking (Gast)


Lesenswert?

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...

von henning (Gast)


Lesenswert?

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.

von gurkenking (Gast)


Lesenswert?

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  ;)

von Lattice User (Gast)


Lesenswert?

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.

von gurkenking (Gast)


Lesenswert?

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...

von henning (Gast)


Lesenswert?

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.

von gurkenking (Gast)


Lesenswert?

>> 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
Noch kein Account? Hier anmelden.