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!
Ist der externe PullUp-Widerstand korrekt beschaltet und dimensioniert?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.