Hallo, ich versuche eine RTC an einem PIC32MX795 ans laufen zu bekommen. Mit 100kHz arbeitet alles wunderbar. Wenn ich aber den Bus mit 400kHz fahren will funktioniert es nicht mehr. Die RTC kann laut Spec. 400kHz Fast Mode. Meine Init Funktion für den Bus: void init_i2c_2(int peripheral_clock) { I2CConfigure(I2C_BUS, I2C_ENABLE_HIGH_SPEED); I2CSetFrequency(I2C_BUS, peripheral_clock, I2C_CLOCK_FREQ); I2CEnable(I2C_BUS, true); } peripheral_clock = 40MHz I2C_CLOCK_FREQ = 400kHz Ich habe es auch ohne das setzen des Bits "I2C_ENABLE_HIGH_SPEED" versucht, hat aber nichts gebracht. Das Oszi zeigt mir eine Clock Flanke, danach passiert nichts mehr. Ich schätze mal das die RTC sich nicht regt. Hat jemand eine Idee? Ralf
Welchen Wert haben deine Pull-Ups? Wie steil sind die Flanken? Normal liegts eher daran als an den verbauten Komponenten. Dennoch darfst du auch gerne verraten welche RTC du gewählt hast :)
Hallo, die PullUps sind 4,7k groß und als RTC habe ich eine RX8010SJ. Grüße Ralf
Sorry wegen der verspäteten Antwort, hab glatt drauf vergessen. 4k7 ist wohl ok, wenn die Leitungen kurz genug sind und wenig Kapazität haben. Hast du mal in Betracht gezogen die I²C-Lib selbst zu bauen? Ich hab das vor Jahren einmal erledigt und seither keine Probleme.
Ralf Herms schrieb: > Das Oszi zeigt mir eine Clock Flanke, danach passiert nichts mehr. Ich > schätze mal das die RTC sich nicht regt. Der Master schlägt den Takt, d.h. die Clock muß kommen egal was der Slave macht, selbst wenn er gar nicht da ist. MfG Klaus
Klaus schrieb: > Ralf Herms schrieb: >> Das Oszi zeigt mir eine Clock Flanke, danach passiert nichts mehr. Ich >> schätze mal das die RTC sich nicht regt. > > Der Master schlägt den Takt, d.h. die Clock muß kommen egal was der > Slave macht, selbst wenn er gar nicht da ist. > > MfG Klaus Naja, fast. Dank Clock-Streching kann ein schlecht implementierter Slave allerdings den Pegel auf Low halten und somit erscheint keine weitere Flanke. Das Problem aus meiner Sicht ist nur, wenn wirklich nur eine Flanke kommt, dann ist zu dem Zeitpunkt nicht relevant ob 100 oder 400kHz verwendet werden, die Flanken sind immer gleich steil. Der gewählte PIC hat ein recht ausführliches Errata-Sheet, wo auch einige Sachen bezüglich I²C vorkommen. Eventuell liegt der Fehler hier.
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.