STM32F446 FMP I2C kein Open Drain möglich?!

Gast #4989654
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!
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren