Casa > notizia > Contenuto
Categorie di prodotti

Contattaci

Aggiungi: Block 5, Fuqiang Technology Park, Zhugushi Road, Wulian, Longgang 518116

Mob: + 86-13510459036

E-mail: info@panadisplay.com

FT800-FT801 Ritaglio orologio interno
Nov 03, 2018

FT800-FT801 Ritaglio orologio interno


I controller video FTDI FT800 e FT801 offrono una soluzione a basso costo per i requisiti di grafica incorporata. Oltre alla grafica, gli input touch screen e un'uscita audio forniscono un'interfaccia uomo-macchina completa al mondo esterno.

Questa nota applicativa fornirà una sequenza di programmazione su come tagliare l'orologio interno del chip per una maggiore precisione in modo che le applicazioni possano funzionare senza un cristallo esterno.

L'uso di dispositivi FTDI in supporto vitale e / o applicazioni di sicurezza è interamente a rischio dell'utente e l'utente si impegna a difendere, indennizzare e tenere indenne FTDI da qualsiasi e tutti i danni, reclami, cause o spese risultanti da tale uso.


1. Introduzione

L'FT800 / FT801 opera come periferica SPI o I²C su un processore di sistema principale, fornendo quindi un'esperienza di interfaccia umana a basso costo, ma completa, incorporando rendering grafico, rilevamento touch screen e funzionalità audio. È controllato tramite un'interfaccia SPI o I2C a larghezza di banda ridotta che consente di utilizzare praticamente qualsiasi microcontrollore.

L'FT800 / FT801 supporta sia l'orologio interno che l'orologio esterno

operazioni. L'orologio interno è un oscillatore di rilassamento che può essere ritagliato da un registro per una maggiore precisione, in modo che per molte applicazioni non è richiesto il cristallo o l'orologio esterni.


2 Circuito orologio

I circuiti di clock FT800 / FT801 includono la sorgente di clock di ingresso e PLL. La sorgente di clock può essere selezionata

tra oscillatore di rilassamento interno e oscillatore a cristallo 12 MHz. Il PLL moltiplicherà l'input

orologio per 4 (predefinito) per generare un clock di sistema nominale a 48 MHz, che fornisce l'orologio per tutti gli interni

registri, memorie e processori.

L'orologio oscillatore di rilassamento interno va da 4.46 MHz a 12.11 MHz (non tagliato) e può essere

ritagliata scrivendo sul registro di ritaglio (REG_TRIM). Dopo il taglio l'orologio può raggiungere 12 MHz a

la precisione di accordatura di +/- 2,5%. La frequenza sintonizzata può variare entro +/- 3% durante il funzionamento

temperatura e tensioni.

L'FT800 / FT801 ha 2 pin di uscita che possono essere utilizzati per monitorare e calcolare l'orologio di sistema

frequenza. Il pin di uscita PCLK emetterà un orologio con la sua frequenza uguale a fsys_clk / REG_PCLK

(REG_PCLK programmato su valore zero). Ad esempio, si supponga che REG_PCLK sia programmato

a 5, e la frequenza di uscita PCLK è misurata a 9,6 MHz, in questo caso il fclk_sys = 5 *

9.6 MHz = 48 MHz.

In alternativa, fclk_sys può essere calcolato misurando la frequenza di clock sul pin AUDIO_L. Il

Il pin AUDIO_L emette il segnale PWM per il segnale audio mono. La frequenza del segnale PWM è

fclk_sys / 512. Se la frequenza misurata sul pin AUDIO_L è 93.75kHz, fclk_sys = 512 *

93,75 kHz = 48 MHz.

Il circuito di clock FT800 / FT801 è mostrato in Figura 2-1. Per le applicazioni che utilizzano il rilassamento interno

solo orologio, il cristallo esterno non è richiesto. In questo caso il pin X1 / CLKIN deve essere legato a GND

e il pin X2 deve essere lasciato scollegato, come mostrato nella Figura 2-2.

image

Figura 2-1 Circuito orologio FT800 / FT801

image

Figura 2-2 Collegamento pin della modalità orologio interno

 

3 Sequenza di ritaglio dell'orologio

La frequenza dell'oscillatore di rilassamento interno è determinata dal valore RC del circuito dell'oscillatore.

Il resistore e il condensatore on-chip hanno una variazione abbastanza ampia nel processo di wafer. Sintonizzando

l'effettivo valore RC attraverso i registri, è possibile tagliare la frequenza di clock per maggiore

precisione.

3.1 Descrizione del registro utile

Vi sono numerosi registri coinvolti nelle sequenze di ritaglio dell'orologio. Questa sezione descrive

in dettaglio la funzione di questi registri.

REG_TRIM

Il registro di trim REG_TRIM ha 5 bit validi Trim [4: 0], che consente un totale di 32 impostazioni di assetto. Predefinito

è 0. Quando si aumenta il valore del registro di trim, il valore RC effettivo dell'oscillatore diminuisce, quindi

che la frequenza di clock aumenta di conseguenza.

REG_CLOCK

Questo registro a 32 bit conta il numero di cicli di clock principali dell'FT800 / FT801 dal reset. Leggendo

questo registro, l'MCU host può calcolare la frequenza di clock principale in base al timer preciso in

il MCU.

REG_FREQUENCY

Questo registro a 32 bit memorizza il valore della frequenza di clock principale corrente. Il software deve essere aggiornato

questo registro una volta completato il ritaglio dell'orologio.

3.2 Metodo di ritaglio

Durante l'inizializzazione dell'alimentazione, il software può regolare l'orologio dell'oscillatore di rilassamento interno su

valore desiderato Il valore target è 12 MHz, in modo che l'orologio principale si attivi a 48 MHz.

Dopo che il chip è entrato in modalità attiva, l'orologio interno, PLL, sarà in esecuzione e il sistema

l'orologio principale sarà disponibile. Il REG_CLOCK inizierà a contare ogni ciclo di clock principale. Leggendo

il REG_CLOCK due volte in un intervallo definito (ad esempio 1us basato su orologio o timer MCU), l'orologio principale

la frequenza può essere calcolata. Se la frequenza misurata è inferiore all'obiettivo, aumentare il valore

valore di REG_TRIM. Ripetere questa operazione fino a quando la frequenza misurata si trova entro +/- 3% del valore

frequenza target.

3.3 Sequenze dettagliate

I seguenti passaggi forniscono una sequenza di programmazione dettagliata per tagliare l'orologio interno.

1. Dopo un reset hardware (accensione o commutazione del pin PD_N), l'FT800 / FT801 entra in STANDBY

modalità. L'orologio oscillatore di rilassamento interno è selezionato come sorgente di clock del PLL.

Sia l'orologio interno che il PLL sono accesi, ma l'orologio principale è la logica principale

spento.

2. Impostare il chip sulla modalità ATTIVA eseguendo un'operazione di lettura fittizia tramite l'interfaccia host

(SPI o I2C).

3. Misurare la frequenza di clock corrente

un. Leggi REG_CLOCK come t0

b. Ritardo 1us

c. Leggi REG_CLOCK come t1

d. Calcola la frequenza di clock f = (t1-t0) / 1us

4. Se la frequenza misurata f è inferiore a 48 MHz - 3%, aumentare il registro REG_TRIM di 1

5. Ripetere i passaggi 3 e 4 finché la frequenza misurata non si trova entro 48 MHz +/- 3% o

REG_TRIM raggiunge già il valore massimo di 31 (che è improbabile dal momento del taglio

intervallo è definito per essere in grado di sintonizzare l'orologio con il bersaglio)

6. Scrivi la frequenza finale misurata f a REG_FREQUENCY

Di seguito è riportato il codice di esempio C per il ritaglio di clock interno, utilizzato dall'applicazione Gameduinuo 2:

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

#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);

return (t1 - t0) <>

}

#define REG_TRIM 0x10256C

#define REG_FREQUENCY 0x10240C

#define LOW_FREQ_BOUND 47040000UL

void GDClass :: tune (void)

{

char unsigned = 0;

uint32_t f;

for (byte i = 0; (i <31) &&="" ((f="measure_freq" ())="">

GDTR.wr (REG_TRIM, i);

GDTR.wr32 (REG_FREQUENCY, f);

}

Poiché REG_TRIM verrà reimpostato su 0 ogni volta che si verifica un reset dell'hardware, è necessario eseguirlo

la sequenza di taglio dell'orologio nella routine di inizializzazione del reset.