SI5351 Problem

OP #7949539
Lesenswert?

Hallo,

ich arbeite gerade mit einem Adafruit-SI5351-Modul (https://learn.adafruit.com/adafruit-si5351-clock-generator-breakout/overview), Ansteuerung per Arduino und der bekannten SI5351-Library (https://github.com/etherkit/Si5351Arduino). Funktioniert alles perfekt.

Nun will ich den SI aber an einem FPGA betreiben, in dem ein RISC-V System läuft. Die Arduino-Software habe ich an den I2C-Controller im RISC-V angepasst (funktioniert etwas anders als im Arduino), dabei aber nur die I2C-Aufrufe geändert, nicht die Funktionen der SI-Library selbst. Die Kommunikation zwischen RISC-V und SI5351 läuft problemlos, auch das Busprotokoll sieht auf dem Logi richtig aus, alle Schreibvorgänge liefern ein ACK.

Trotzdem macht der SI nicht, was er soll. Das Merkwürdigste ist: im Statusregister 0 ist das LOS_XTAL-Bit gesetzt, was anzeigt, das angeblich kein Eingangstakt vorhanden ist. Der kommt aber von einem Quarz auf dem Adafruit-Board - warum sollte also der Eingangtakt fehlen? Die PLLs sind angeblich gelockt (LOS_A=LOS_B=0). An den Taktausgängen kommt aber eine Frequenz in der Nähe des 25-MHz Referenztakes heraus, die keine Ähnlichkeit mit dem eingestellten Takt hat.

Kennt jemand das Verhalten, dass der SI5351 LOS_XTAL=1 meldet bei einem fest verbundenden Quarz? Welche Ursache kann das haben?

OP #7952654
Lesenswert?

Ich jage da wohl einem Phantom hinterher. Sehr lange Geschichte. Nach ein paar Bugfixes und endlosem Herumprobieren mit verschiedenen Versionen der Arduino-Lib (von denen die neueste (2.2) bei mir auch auf dem Arduino nicht funktioniert), besteht das Problem immernoch: Das Statusregister meldet einen fehlenden Ref-Clock und eine unsinnige RevID (0x1 statt 0x3), beide PLLs sind aber gelockt. Das ergbit überhaupt keinen Sinn. Aber nur auf dem RISC-V, nicht auf Arduino, obwohl die Daten, die per I2C an die PLL geschrieben werden, bei beiden bis aufs Bit identisch sind. Ich habe sie sogar zurückgelesen und mit den Arduino-Werten verglichen, es gibt keine Unterschiede außer dem Status.

Heute habe ich dann mal im Labor gemessen, was die PLLs eigentlich veranstalten. Und siehe da: beide laufen einwandfrei, mit exakt den in der SW eingestellten Frequenzen. Offenbar steht also Unsinn im Statusregister. Ich habe keine Idee, warum das so ist, aber das Teil tut jetzt was es soll und ich ignoriere den Status einfach.

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