Startseite > Nachrichten > Inhalt

Kontaktiere uns

Hinzufügen: Block 5, Fuqiang Technology Park, Zhugushi Straße, Wulian, Longgang 518116

Mob: + 86-13510459036

E-Mail: info@panadisplay.com

FT800-FT801 Interner Taktabgleich
Nov 03, 2018

FT800-FT801 Interner Taktabgleich


Die FTDI FT800 und FT801 Video Controller bieten eine kostengünstige Lösung für Embedded-Grafikanforderungen. Neben der Grafik bieten die Touchscreen-Eingänge und ein Audio-Ausgang eine vollständige Schnittstelle zwischen Mensch und Maschine nach außen.

Diese Application Note enthält eine Programmiersequenz, wie der interne Takt des Chips für eine höhere Genauigkeit getrimmt wird, damit Anwendungen ohne externen Quarz laufen können.

Die Verwendung von FTDI-Geräten in lebenserhaltenden und / oder sicherheitsrelevanten Anwendungen erfolgt vollständig auf Risiko des Benutzers. Der Benutzer verpflichtet sich, FTDI von jeglichen Schäden, Ansprüchen, Klagen oder Kosten, die sich aus einer solchen Verwendung ergeben, zu verteidigen, freizustellen und freizustellen.


1. Einleitung

Der FT800 / FT801 arbeitet als SPI- oder I²C-Peripheriegerät für einen Hauptsystemprozessor und bietet dadurch eine kostengünstige und dennoch vollständige Benutzeroberfläche durch die Verwendung von Grafik-Rendering, Touchscreen-Erkennung und Audiofunktionen. Die Steuerung erfolgt über eine SPI- oder I2C-Schnittstelle mit geringer Bandbreite, so dass praktisch jeder Mikrocontroller verwendet werden kann.

Der FT800 / FT801 unterstützt sowohl die interne Uhr als auch die externe Uhr

Operationen. Der interne Takt ist ein Relaxationsoszillator, der für eine höhere Genauigkeit durch ein Register getrimmt werden kann, so dass für viele Anwendungen kein externer Quarz oder Takt erforderlich ist.


2 Taktschaltung

Die FT800 / FT801-Taktschaltungen umfassen eine Eingangstaktquelle und eine PLL. Taktquelle kann ausgewählt werden

zwischen internem Relaxationsoszillator und 12MHz Quarzoszillator. Die PLL multipliziert die Eingabe

Takt um 4 (Standardeinstellung), um einen nominalen Systemtakt von 48 MHz zu erzeugen, der den Takt für alle internen liefert

Register, Speicher und Prozessoren.

Der interne Relaxationsoszillatortakt reicht von 4,46 MHz bis 12,11 MHz (nicht getrimmt) und kann sein

getrimmt durch Schreiben in das Trimmregister (REG_TRIM). Nach dem Trimmen kann die Uhr bei 12MHz liegen

die Abstimmgenauigkeit von +/- 2,5%. Die eingestellte Frequenz kann im Betrieb um +/- 3% variieren

Temperatur und Spannungen.

Der FT800 / FT801 verfügt über 2 Ausgangspins, mit denen der Systemtakt überwacht und berechnet werden kann

Frequenz. Der PCLK-Ausgangspin gibt einen Takt aus, dessen Frequenz gleich fsys_clk / REG_PCLK ist

(REG_PCLK auf einen Wert ungleich Null programmiert). Nehmen Sie beispielsweise an, dass REG_PCLK programmiert ist

bis 5, und die PCLK-Ausgangsfrequenz wird bei 9,6 MHz gemessen. In diesem Fall ist fclk_sys = 5 *.

9,6 MHz = 48 MHz.

Alternativ kann fclk_sys durch Messen der Taktfrequenz am AUDIO_L-Pin berechnet werden. Das

Der Pin AUDIO_L gibt ein PWM-Signal für das Mono-Audiosignal aus. Die Frequenz des PWM-Signals beträgt

fclk_sys / 512. Wenn die gemessene Frequenz am AUDIO_L-Pin 93,75 kHz beträgt, ist fclk_sys = 512 *.

93,75 kHz = 48 MHz.

Die Taktschaltung des FT800 / FT801 ist in Abbildung 2-1 dargestellt. Für Anwendungen mit der inneren Entspannung

Nur Uhr, der externe Quarz ist nicht erforderlich. In diesem Fall muss der Pin X1 / CLKIN mit GND verbunden sein

und der X2-Pin muss nicht angeschlossen sein, wie in Abbildung 2-2 gezeigt.

image

Abbildung 2-1 Taktschaltung FT800 / FT801

image

Abbildung 2-2 Pin-Verbindung im internen Taktmodus

 

3 Clock-Trimm-Sequenz

Die interne Relaxationsoszillatorfrequenz wird durch den RC-Wert der Oszillatorschaltung bestimmt.

Der On-Chip-Widerstand und der Kondensator weisen im Wafer-Prozess eine recht große Streuung auf. Durch das Stimmen

Um den effektiven RC-Wert über Register zu steuern, ist es möglich, die Taktfrequenz auf einen höheren Wert einzustellen

Richtigkeit.

3.1 Nützliche Registerbeschreibung

An den Takttrimmsequenzen sind mehrere Register beteiligt. Dieser Abschnitt beschreibt

im Detail die Funktion dieser Register.

REG_TRIM

Das Trimmregister REG_TRIM hat 5 gültige Bits Trimm [4: 0], was insgesamt 32 Trimmeinstellungen ermöglicht. Standard

ist 0. Wenn der Trimmregisterwert erhöht wird, nimmt der effektive RC-Wert des Oszillators ab, so

dass die Taktfrequenz entsprechend zunimmt.

REG_CLOCK

Dieses 32-Bit-Register zählt die Anzahl der FT800 / FT801-Haupttakte seit dem Zurücksetzen. Durch Lesen

In diesem Register kann die Host-MCU die Haupttaktfrequenz auf der Grundlage des genauen Zeitgebers in berechnen

die MCU.

REG_FREQUENCY

Dieses 32-Bit-Register speichert den Wert der aktuellen Haupttaktfrequenz. Software muss aktualisiert werden

Dieses Register, sobald der Taktabgleich abgeschlossen ist.

3.2 Trimmmethode

Während der Initialisierung beim Einschalten kann die interne Taktzeit des Oszillators durch die Software auf den Takt eingestellt werden

gewünschter Wert. Der Zielwert ist 12MHz, so dass der Haupttakt bei 48MHz arbeitet.

Nachdem der Chip in den aktiven Modus versetzt wurde, läuft die interne Uhr (PLL) und das System

Hauptuhr wird verfügbar sein. Der REG_CLOCK beginnt jeden Haupttakt zu zählen. Durch Lesen

der REG_CLOCK zweimal in einem definierten Intervall (dh 1us basiert auf der MCU-Uhr oder dem Timer), der Hauptuhr

Frequenz kann berechnet werden. Wenn die gemessene Frequenz niedriger als das Ziel ist, erhöhen Sie den Wert

Wert von REG_TRIM. Wiederholen Sie diesen Vorgang, bis die gemessene Frequenz innerhalb von +/- 3% der Frequenz liegt

Zielfrequenz.

3.3 Detaillierte Sequenzen

Die folgenden Schritte enthalten eine detaillierte Programmiersequenz zum Einstellen der internen Uhr.

1. Nach einem Hardware-Reset (Einschalten oder Umschalten des PD_N-Pins) geht der FT800 / FT801 in den STANDBY-Modus

Modus. Der interne Relaxationsoszillatortakt wird als Taktquelle der PLL ausgewählt.

Sowohl der interne Takt als auch die PLL sind eingeschaltet, der Haupttakt zur Kernlogik ist jedoch

ausgeschaltet.

2. Setzen Sie den Chip in den ACTIVE-Modus, indem Sie eine Dummy-Leseoperation über die Host-Schnittstelle ausführen

(SPI oder I2C).

3. Messen Sie die aktuelle Taktfrequenz

ein. Lesen Sie REG_CLOCK als t0

b. Verzögerung 1us

c. Lesen Sie REG_CLOCK als t1

d. Berechnen Sie die Taktfrequenz f = (t1-t0) / 1us

4. Wenn die gemessene Frequenz unter 48MHz - 3% liegt, erhöhen Sie das REG_TRIM-Register um 1

5. Wiederholen Sie die Schritte 3 und 4, bis die gemessene Frequenz innerhalb von 48 MHz +/- 3% liegt, oder

REG_TRIM erreicht bereits den Maximalwert von 31 (was seit dem Trimmen unwahrscheinlich ist)

Bereich ist definiert, um die Uhr auf das Ziel abstimmen zu können)

6. Schreiben Sie die zuletzt gemessene Frequenz f in REG_FREQUENCY

Im Folgenden finden Sie den C-Code für die interne Uhr, der von der Gameduinuo 2-Anwendung verwendet wird:

/ ************************************************** *******

#define REG_CLOCK 0x102408

uint32_t GDClass :: measure_freq (void)

{

unsigned long t0 = GDTR.rd32 (REG_CLOCK);

delayMicroseconds (15625);

unsigned long t1 = GDTR.rd32 (REG_CLOCK);

Rückkehr (t1 - t0) <>

}

#define REG_TRIM 0x10256C

#define REG_FREQUENCY 0x10240C

#define LOW_FREQ_BOUND 47040000UL

void GDClass :: tune (void)

{

unsigniertes Zeichen i = 0;

uint32_t f;

for (Byte i = 0; (i <31) &&="" ((f="Taktfrequenz" ())="">

GDTR.wr (REG_TRIM, i);

GDTR.wr32 (REG_FREQUENCY, f);

}

Da das REG_TRIM bei jedem Hardware-Reset auf 0 zurückgesetzt wird, muss es ausgeführt werden

die Taktabgleichsequenz in der Reset-Initialisierungsroutine.