Forum: Mikrocontroller und Digitale Elektronik i2C ACK Pegel Problem


von Chris S. (chris_si)


Angehängte Dateien:

Lesenswert?

Hallo Leute

Zurzeit versuche ich das Display EA Dogm204-A mit einem MSP430 über i2c 
zu betrieben. Den I2C benutze ich auf 1.8V, das Display Auf 2,8V. 
Eigentlich wäre 3,3V die richtige Spannung aber 2,8 geht laut Datenblatt 
auch(min. 2,4V). Ich benutze die 2,8V da ich diese sowieso auf meiner 
platine hatte und keinen seperaten Spannungsregler für 3,3 zusätzlich 
verwenden wollte. Zwischen den MSP430 und dem display sitzt deshalb ein 
Pegelwandler TXS0102DCU. Versuche ich nun aber die beiden über I2C 
kommunizieren zu lassen kann der Slave das ACK bit nicht kompett auf Low 
ziehen (siehe Bild). Hat jemand eine Idee an was das liegen könnte?


Danke im Voraus

Gruß Christian

von Joe F. (easylife)


Lesenswert?

Das sind eher 1.8V und nicht 2.8V, oder?

Beim TXS0102DCU muss man aufpassen, auf welcher Seite die höhere 
Spannung ist (VCCA ≤ VCCB).

: Bearbeitet durch User
von Chris S. (chris_si)


Lesenswert?

Die Signale auf dem Bild sind vor dem Pegelwandler abgegriffen. Also auf 
der 1,8V I2C Seite

von Joe F. (easylife)


Lesenswert?

achso sorry, du schriebst ja, du hast 1.8V auf einer Seite (der MSP 
Seite nehme ich an). Die muss dann VCCA beim Levelshifter sein.

Wie sieht denn SDA auf der Slave-Seite (2.8V) aus?
Miss mal SDA gleichzeitig auf beiden Seiten.

Welche Pullups verwendest du (auf den jeweiligen Seiten)?

: Bearbeitet durch User
von Chris S. (chris_si)


Angehängte Dateien:

Lesenswert?

Der Pegelwandler müsste richtig beschalten sein. Auch an (VCCA ≤ VCCB) 
habe ich mich gehalten

von Deutschlehra (Gast)


Lesenswert?

Chris S. schrieb:
> Der Pegelwandler müsste richtig beschalten sein

 beschalten  --> tun
 beschaltet  --> Eigenwchaft

von Chris S. (chris_si)


Angehängte Dateien:

Lesenswert?

Im angehängten Bild sind beide Seiten von SDA. Wobei Signal 2 Die 1,8V 
seite ist und Signal 3 die 2,8V Seite. Hierbei ist zu beachten,dass ich 
bei Signal 3 am Oszi 2V/Div eingestellt habe, damit sich die Signale 
nicht überschneiden.

Pullups hatte ich ursprünglich auf der 1,8V Seite bei sda und scl 
jeweils 2k7. Als es so nicht ging hab ich nochmals ins Datenblatt des 
Pegelwandlers gesehen. und die internen 10k gesehen. Siehe Bild 2. Dann 
hab ich meine externen 2k7 rausgelötet, weil ich dachte dass man die 
nicht braucht wenn da ja 10k drin sind oder?. Auf der 2,8V seite hatte 
ich ursprünglich keine Pullups vorgesehen .. nur die im Pegelwandler 
internen 10k

von (prx) A. K. (prx)


Lesenswert?

Ist das die vollständige Sequenz einer wiederholten Verbindungsaufnahme, 
jeweilige START condition inklusive? Den Glitch beim ersten Puls finde 
ich nämlich interessant, im ersten Bild. Könnte lohnen, da mal näher ran 
zu gehen.

Und mach mal etwas programmierte Pause zwischen die einzelnen 
Verbindungsversuche.

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Ist da noch ein Serienwiderstand in der Größenordnung 1-2K in der SDA 
Leitug zwischen Level-Shifter und Display?

von Chris S. (chris_si)


Lesenswert?

Joe F. schrieb:
> Ist da noch ein Serienwiderstand in der Größenordnung 1-2K in der SDA
> Leitug zwischen Level-Shifter und Display?

Also extern von mir hinzuGESCHALTET nicht. Aber vielleicht intern im 
Display Controller ? (SDD1803A)

von Chris S. (chris_si)


Angehängte Dateien:

Lesenswert?

A. K. schrieb:
> Ist das die vollständige Sequenz einer wiederholten Verbindungsaufnahme,
> jeweilige START condition inklusive? Den Glitch beim ersten Puls finde
> ich nämlich interessant, im ersten Bild. Könnte lohnen, da mal näher ran
> zu gehen.

Hier nochmal die erste Sequenz.

Habe jetzt auf beiden Seiten des Pegelwandler jeweils an SDA und SCL 3k3 
als pullups hinzugefügt. Die müssten dann ja Parallel mit dem 10k intern 
im Pegelwandler jeweils einen Pullupvon 2k48 ergeben ... Jetzt könnte 
man meinen, dass der komische halbe Pegel am Ende beim ACK größer 
geworden ist. Zumindest bei der 1,8V Seite

von Joe F. (easylife)


Lesenswert?

Ja, genau solche Probleme häufen sich leider gerade...

Beitrag "DOG XL 240-7 antwortet ab und zu mit NAK?"
Beitrag "I2C Acknowledge Problem"

Weniger als die im Level-Shifter eingebauten 10K pullups kannst du dann 
wohl nicht nehmen.
Wird denn dieses ACK von deinem Controller noch erkannt?

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Der Display-Controller ist extrem stromschwach auf den Ausgängen. 
Maximal 100µA laut Datasheet. Die 10K Ohm des Pegelwandlers stellen also 
bereits eine zu hohe Last dar.
http://www.lcd-module.de/fileadmin/eng/pdf/zubehoer/ssd1803a_2_0.pdf

Auch das Datasheet vom Display weist darauf hin, wenngleich etwas 
zurückhaltend: "Bitte beachten Sie, dass aufgrund der COG-Technik die 
Strombelastbarkeit der Ausgänge begrenzt ist."

: Bearbeitet durch User
von Chris S. (chris_si)


Lesenswert?

A. K. schrieb:
> Der Display-Controller ist extrem stromschwach auf den Ausgängen.
> Maximal 100µA laut Datasheet. Die 10K Ohm des Pegelwandlers stellen also
> bereits eine zu hohe Last dar.

Ja aber wenn ich extern, wie bereits oben beschrieben, jeweils einen 3k3 
pullup dran hänge. dan sind die 3k3 ja parallel zu den 10k und ich 
bekomme ca. 2k45 was ja eine kleinere Last ist... Oder begehe ich da 
einen Denkfehler?

von (prx) A. K. (prx)


Lesenswert?

Chris S. schrieb:
> Oder begehe ich da einen Denkfehler?

Ja. Der Display-Controller kriegt den Pegel nicht auf low runter 
gezogen. Deine Reduktion der Pullups macht das noch schlimmer, weil sie 
den Pegel noch weiter ansteigen lässt.

Bitte auch beachten, dass bei Pegelwandlern dieser Bauweise der Ausgang 
die Pullups beider Seiten runter ziehen muss. Das sind also effektiv 
weniger als 10K Ohm.

Mit diesem Pegelwandler wird das nichts.

: Bearbeitet durch User
von Chris S. (chris_si)


Angehängte Dateien:

Lesenswert?

So hab jetzt einen "eigenen" Pegelwandler mit N-Mos Transistoren 
aufgebaut. Nach folgender Schaltung:
https://de.wikipedia.org/wiki/Pegelumsetzer#/media/File:Bidirektionaler_pegelumsetzer_wikide.svg

Wobei bei mir die linke Spannung wie gesagt 1,8V und die rechte 2,8V 
sind.
R1 ist 20k und R2 hab ich auf 33k.

Die Pullups kann ich doch berechnen mit U=2,8 die Spannung die ich 
runterziehen will und I= 100uA der Strom den das Display max. kann. Dann 
komme ich auf 28k was ich dan auf 33k aufgerundet habe.


Wenn ich dann die Leitungen mit dem Oszi anschaue, sehen ich sie wie im 
hochgeladenen Bild.

Kommen die Haifischflossen förmigen Aufladevorgänge durch die Gate 
Transistor? und wenn ja, wie kann ich das beseitigen?

Habe folgenden N-Mos genommen: BSH 105

Und warum schaft er es bei der 2,8V seite (Signal 3) jetzt garnichtmehr 
auf 0V runterzuziehen?

von (prx) A. K. (prx)


Lesenswert?

Ich schrieb oben: "Bitte auch beachten, dass bei Pegelwandlern dieser 
Bauweise der Ausgang die Pullups beider Seiten runter ziehen muss."

Strom R1 = 1,8V/20K = 90µA
Strom R2 = 2,8V/33K = 85µA
Strom Display: 90µ + 85µA = 175µA.

Das dürfte hier aber nicht das Problem sein, da der Ausgang im gezeigten 
Screenshot wohl auf der 1,8V Seite liegt.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Ja, die Chip on Glas LCDs sind Mist, jede Signalbahn hat ~1k 
Innenwiderstand.
Besser den 4/8Bit Mode nehmen, dann sind alles nur Eingänge.
Notfalls nen PCF8574 als Umsetzer.

von Stefan F. (Gast)


Lesenswert?

> ca. 2k45 was ja eine kleinere Last ist

Zwei Widerstände parallel belasten mehr, als ein einzelner Widerstand.

2k45 ist weniger als 3,3k Ohm. Also fliesst dann mehr Strom -> Mehr 
Last.

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.