Hallo zusammen,
ich habe seit einiger Zeit mit dem I2C meines STM32F4 auf dem
Discoveryboard ein paar kleine Probleme. Und zwar scheint hin und wieder
die Übertragung einfach Fehler zu produzieren. Was genau passiert kann
ich leider noch nicht feststellen. Die Flanken auf dem Bus sehen sehr
sauber aus die Leitungen sind mit unter 10cm doch eher kurz und die
Konfiguration hab ich jetzt auch schon mehrfach überprüft.
Wackelkontakte schließe ich auch aus, da auch eine Lötbrücke über den
einzigen Stecker keine Veränderung brachte.
Ich betreibe den Bus allerdings mit 400kHz (was das maximum des STM ist)
und mir fällt auf, dass die Probleme bei geringeren Frequenzen (z.B.
100kHz) nicht auftreten.
Jetzt habe ich im Datenblatt noch einmal nachgelesen und finde da eine
Passage, die mir Kopfzerbrechen bereitet:
1 | RM0090 - Seite 738 - Abschnitt 25.6.8
|
2 | f_PCLK1 must be at least 2 MHz to achieve standard mode I²C frequencies. It must be at least 4 MHz to achieve fast mode I²C frequencies. It must be a multiple of 10MHz to reach the 400 kHz maximum I²C fast mode clock.
|
http://www.st.com/web/en/resource/technical/document/reference_manual/DM00031020.pdf
"a multiple of 10MHz" ?
f_PCLK ist bei mir aber 1/4 des Systemtaktes der mit 168MHz pfeift, also
42MHz und das ist zumindes kein gerades vielfaches von 10MHz wie
vermutlich jeder nachvollziehen kann...
Könnte das Probleme (ganz im Allgemeinen) verursachen?
Und kann mir jemand erklären warum da ein "multiple" steht nur nicht nur
"at least 10MHz" was ich eher erwartet hätte? Gibt es dafür überhaupt
eine "benutzer-verständliche" Antwort?
Vielen Dank
lg Leo