Funktioniert die Verwendung eines CMOS OCXO als externer Oszillator für den XTAL-Eingang für LPC1114FN28?

Ich versuche, eine Schaltung herzustellen, die das Zeitintervall zwischen zwei Impulsen genau misst. Dazu habe ich mich für einen OCXO mit CMOS-Ausgang und den Mikroprozessor LPC1114FN28 entschieden.

Ich plane, den Mikroprozessor über den OCXO-Ausgang an den XTALIN-Pin anzusteuern und die Impulse, deren Intervall gemessen werden soll, in den CT32B0_CAP0-Pin einzuspeisen, der 32-Bit-Timer arbeitet im "Capture" -Modus, wobei die Anzahl der PCLK-Taktzyklen zwischen den steigende Flanken der Pulse werden vom TC-Register zum Capture-Register übertragen.

Meine Zweifel:

(1) Wird die Verwendung eines CMOS-OCXO-Ausgangs, der mit dem XTALIN-Pin verbunden ist, den uC ansteuern? Was soll ich mit dem XTALOUT-Pin machen?

(2) Wenn ich die interne PLL verwende, um die Frequenz zu erhöhen, wird die Genauigkeit der PCLK-Uhr im Vergleich zum OCXO-Ausgang verschlechtert?

Irgendwelche Ideen? Abhishek

Eine Anleitung zur Verwendung eines externen Oszillators finden Sie im Datenblatt in Abschnitt 12.3 cache.nxp.com/documents/data_sheet/LPC111X.pdf?pspll=1
Hallo Peter, ja das habe ich gesehen, aber es geht um die Verwendung von Kristallen mit Kondensatoren. Ich spreche von einem Quarzoszillator-"Paket", das nur Vcc, Ground und Osc hat. Pins raus.
Abhishek: In dem betreffenden Abschnitt heißt es: "Wenn der Oszillator von einer Uhr im Slave-Modus angetrieben wird ..." - eine Uhr ist, wie wir uns oft auf einen externen Oszillator beziehen, was Sie haben. Verwenden Sie also die Anleitung hier, um xtal von Ihrem Oszillator einzutreiben.

Antworten (1)

Laut Seite 97 des Datenblatts :

Die Eingangsspannung zu den On-Chip-Oszillatoren ist auf 1,8 V begrenzt. Wenn der Oszillator im Slave-Modus von einer Uhr angesteuert wird, wird empfohlen, den Eingang über einen Kondensator mit Ci = 100 pF zu koppeln. Um die Eingangsspannung auf den angegebenen Bereich zu begrenzen, wählen Sie einen zusätzlichen Kondensator gegen Masse Cg, der die Eingangsspannung um einen Faktor Ci/(Ci + Cg) dämpft.

Im Slave-Modus werden mindestens 200 mV (RMS) benötigt. Im Slave-Modus sollte das Eingangstaktsignal über einen Kondensator von 100 pF (Abbildung 49) mit einer Amplitude zwischen 200 mV (RMS) und 1000 mV (RMS) gekoppelt werden. Dies entspricht einem Rechtecksignal mit einem Signalhub zwischen 280 mV und 1,4 V. Der XTALOUT-Pin kann in dieser Konfiguration unbeschaltet bleiben.

Dies beantwortet im Wesentlichen Ihre Frage (1). Sie können einen externen Takt verwenden, um den XTALIN-Pin anzusteuern, solange Sie den Spannungshub auf zwischen 200 mV und 1000 mV RMS begrenzen. Der (NXP) empfiehlt, dies mit zwei Kondensatoren zu tun, um den Takt AC zu koppeln und als Dämpfungsglied zu fungieren. Siehe Diagramm auf Seite 97.

Weiter heißt es, Sie sollten XTALOUT unverbunden lassen - dh nichts daran anschließen, keine Masse, keinen Widerstand, nichts.


Bei Frage (2) besteht die Aufgabe einer PLL darin, einen Takt zu erzeugen, der eine höhere (oder niedrigere) Frequenz als der Referenztakt hat, aber mit ihm phasenverriegelt ist. Mit anderen Worten, wenn Sie eine x2-PLL hätten, hätten Sie einen Ausgangstakt von genau dem Zweifachen des Eingangstakts, vorausgesetzt, die PLL ist gesperrt.

Es ist möglich, dass die Uhr etwas driftet, aber dies wird durch die PLL begrenzt, wie weit sie geht, bevor sie korrigiert wird. Die maximale Drift bestimmt, wie viel Jitter Sie auf die Uhr bekommen - etwas, das irgendwo im Datenblatt angegeben sein sollte (habe nicht nachgesehen), scheint jedoch nicht im Datenblatt angegeben zu sein. Der Jitter ist im Grunde eine kleine Variation der Frequenz, da die ansteigenden und abfallenden Flanken des Takts aufgrund der PLL-Bandbreite und Driftkorrektur nicht genau im richtigen Moment sind.

Die Verwendung eines CMOS-Ausgangsoszillators scheint also nicht in Frage zu kommen. Die, die ich verwenden möchte, hat eine minimale HIGH-Spannung von 4,5 V und eine maximale LOW-Spannung von 0,5 V, sodass die Schwingung 4 Volt beträgt.
Außerdem führt die Verwendung der PLL-Schleife Drift und damit Fehler in die Intervallmessung ein
@Abhishek 4,5 V sind kein Problem, dafür sind die auf Seite 97 beschriebenen Kondensatoren da. Berechnung durchführen C G = v Ö C ich v ich v Ö ergibt etwa 30 pF für Cg bei Verwendung des empfohlenen Ci (100 pF). Was die PLL-Drift betrifft, sollte dies nur passieren, wenn die PLL nicht verriegelt ist. Sobald es gesperrt ist, werden Sie nur noch Jitter sehen - Sie sollten niemals eine Abweichung von mehr als einem halben Taktzyklus in beide Richtungen sehen.
Danke für die Klärung des ersten Punktes! Beim anderen plane ich AOCJY1-A-10MHz OCXO zu verwenden, das bei element-14 recht günstig erhältlich ist. Die Stabilität für dieses Gerät wird mit 50 ppb angegeben. Sie haben erwähnt, dass die Drift mit der PLL so oder so einen halben Takt beträgt, also 0,5 Hz/ 10 MHz = 50 ppb. Die Verwendung der PLL erhöht also den Gesamtfehler auf 100 ppb. Natürlich könnte ich die PLL auch ganz weglassen und mit geringeren Taktraten leben.
Die andere Option, über die ich nachdenke, besteht darin, den eingebauten Oszillator (12 MHz) und die PLL zu verwenden, um den PCLK auf 48 MHz zu bringen, aber den OCXO-Ausgang an den CT32B0_CAP0-Pin zu senden, wobei der 32-Bit-Timer/Zähler als Zähler konfiguriert ist. Die Impulse, deren Intervall ich messen muss, lösen einen Interrupt in einem der GPIO-Pins aus, während dessen ich den Inhalt des TC-Registers kopiere und zurücksetze.
@Abhishek Wenn Sie Ihren genauen Takteingang für den dedizierten Zähler verwenden, wird Ihr Code wahrscheinlich viel deterministischer. Die Erwartung, genaue Zählzyklen zu erhalten, ist am besten mit einer guten Auswahl an uC bedient, die den Zähler direkt mit einem externen Pin starten und stoppen können, ohne auf eine variable Interrupt-Latenz zu warten. Wenn Sie vorhaben, einen OCXO zu verwenden, werden Sie möglicherweise feststellen, dass ein paar andere Gremlins aus dem Holz kommen, bevor Sie die maximal angegebene Zeitgenauigkeit erreichen.
@KaleMP Danke für deinen Vorschlag! Ich denke jetzt an die Verwendung von LPC2148 mit AOCJY3A-10MHz CMOS OCXO. Ich plane, den Timer0 als Zähler zu konfigurieren, indem ich das OCXO-Signal verwende, das dem CAP0.1-Pin zugeführt wird (dh das T0CTCR-Register auf 01 00 setzen). Die Impulse, deren Lücke ich messen möchte, werden dem CAP0.0-Pin zugeführt, und das T0CCR-Register wird so eingestellt, dass CR0 an der steigenden Flanke des Impulses erfasst, den Inhalt des TC in CR0 lädt und einen Interrupt erzeugt (dh set Bits 0 und 2 auf 1 im T0CCR-Register). Klingt das richtig?