Forum: Mikrocontroller und Digitale Elektronik STM32F446 FMP I2C kein Open Drain möglich?!


von MOBA 2. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich verzweifele gerade am STM32F446 mit dem FastMode+ I2C (FMPI2C).
Die Funktionen für das I2C an sich sind denke ich korrekt geschrieben.
Das Problem, so wie ich das sehe, liegt an der I/O Init.

Ich initialisiere PC6/7 wie folgt (Datenblatt ab Seite 184 GPIO 
Registers):

Register MODE:            Bit13,15 setzen       (Alternative Funktion)
Register SPEED:           Bit10,11,12,13 setzen (High Speed)
Register PullUpDown:      0                     (Externer Pull-Up)
Register AlternativeFctHi 0
Register AlternativeFctLo Bit26,30 setzen       (I2C Active)
Register OutputType       Bit6,7 setzen         (Open Drain)


Jetzt passiert folgendes:

Wenn ich im OutputType nur Bit 6 setze (CLK) wird mir ein wunderschönes 
Signal erzeugt mit 100 kHz, Daten werden gesendet sieht alles gut aus.
Problem: SDA ist PushPull und damit kann der Slave den ACK nicht auf 0 
ziehen.

Setze ich jetzt auch noch das Bit 7 im OutputType Register (SDA as Open 
Drain), dann ist SDA auf High im Ruhezustand, CLK geht sofort nach der 
Init auf 0 und es wird mir, egal was ich mit den FMP-Registern mache, 
kein Takt und Daten mehr erzeugt.


Jetzt meine Frage: Was mache ich hier falsch?! Ich verstehe es absolut 
nicht mehr. Habe ich was übersehen?! Bitte um Hilfe!

von Markus (Gast)


Lesenswert?

Ist der externe PullUp-Widerstand korrekt beschaltet und dimensioniert?

von MOBA 2. (Gast)


Lesenswert?

Markus schrieb:
> Ist der externe PullUp-Widerstand korrekt beschaltet und dimensioniert?

Ja, leider....
1K gegen VCC. Ich habe auch schon Bit12,14 im PullUpDown Register 
gesetzt.
Er zieht das AKTIV gegen Masse.

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.