Dom > Vijesti > Sadržaj

FT800-FT801 Unutarnje podrezivanje sata

Nov 03, 2018

FT800-FT801 Unutarnje podrezivanje sata


FTDI FT800 i FT801 video kontroleri nude nisku cijenu rješenja za ugrađene grafičke zahtjeve. Uz grafiku, dodirni zaslon i audio izlaz pružaju kompletno sučelje ljudskog stroja prema vanjskom svijetu.

Ova aplikacijska napomena dat će programsku sekvencu o tome kako smanjiti unutarnji sat čipa za veću točnost kako bi aplikacije mogle raditi bez vanjskog kristala.

Korištenje FTDI uređaja u životnim potporama i / ili sigurnosnim aplikacijama potpuno je na riziku korisnika, a korisnik se obvezuje obraniti, nadoknaditi i zadržati FTDI bez odštete od bilo kakvih i svih šteta, potraživanja, odštete ili troškova koji proizlaze iz takve uporabe.


1. Uvod

FT800 / FT801 funkcionira kao SPI ili I2C periferija na glavni procesor sustava, čime se postiže jeftin, ali potpuni doživljaj ljudskog sučelja uključivanjem grafičkog prikazivanja, senzora osjetljivog na dodir i audio sposobnosti. Kontrolirano je preko SPI ili I2C sučelja s malom širinom pojasa, čime se praktički koristi bilo koji mikrokontroler.

FT800 / FT801 podržava i unutarnji sat i vanjski sat

operacije. Unutarnji sat je oscilator za opuštanje koji se može ukloniti registrom za veću točnost, tako da za mnoge primjene nije potreban vanjski kristal ili sat.


2 krug sata

FT800 / FT801 satni krugovi uključuju ulazni sat i PLL. Može se odabrati izvor sata

između unutarnjeg oscilatora opuštanja i 12MHz kristalnog oscilatora. PLL će umnožiti ulaz

sat po 4 (zadano) generirati nominalni 48MHz sat sustava, koji opskrbljuju sat za sve unutarnje

registara, uspomena i procesora.

Interni sat oscilatora opuštanja kreće se od 4.46MHz do 12.11MHz (neprekidno) i može se

obrubljen pisanjem u trimregistru (REG_TRIM). Nakon obrezivanja sat može doseći 12 MHz na

točnost podešavanja od +/- 2,5%. Ugođena frekvencija može varirati unutar +/- 3% tijekom rada

temperatura i naponi.

FT800 / FT801 ima 2 izlaznu iglu koja se može koristiti za praćenje i izračunavanje sata sustava

frekvencija. PCLK izlazni pin će emitirati sat sa frekvencijom koja odgovara fsys_clk / REG_PCLK

(REG_PCLK programirano na vrijednost bez nulte vrijednosti). Na primjer, pretpostavimo da je REG_PCLK programiran

do 5, a izlazna frekvencija PCLK mjeri se na 9.6MHz, u ovom slučaju fclk_sys = 5 *

9.6MHz = 48MHz.

Alternativno, fclk_sys se može izračunati mjerenjem frekvencije sata na AUDIO_L pinu.

AUDIO_L pin emitira PWM signal za mono audio signal. Frekvencija PWM signala je

fclk_sys / 512. Ako je izmjerena frekvencija na AUDIO_L pin 93.75kHz, tada fclk_sys = 512 *

93.75kHz = 48MHz.

FT800 / FT801 satni krug prikazan je na slici 2-1. Za aplikacije koje koriste unutarnju relaksaciju

samo sat, vanjski kristal nije potreban. U ovom slučaju X1 / CLKIN pin mora biti vezan za GND

i X2 će ostati nepovezan, kao što je prikazano na slici 2-2.

image

Slika 2-1 FT800 / FT801 satni krug

image

Slika 2-2 Priključak za unutarnju satnu modu

 

3 Redoslijed preciziranja sata

Frekvencija oscilatora interne relaksacije određena je RC vrijednosti kruga oscilatora.

Na čipu otpornik i kondenzator imaju prilično široku varijancu tijekom prozora. Ugađanjem

učinkovitu RC vrijednost kroz registre, moguće je smanjiti frekvenciju sata za više

točnost.

3.1 Korisni registar Opis

Postoji niz registara uključenih u sekvence za rezanje sata. Ovo poglavlje opisuje

detaljno je funkcija tih registara.

REG_TRIM

Registracijski registar REG_TRIM ima 5 validnih bitova Trim [4: 0], što omogućuje ukupno 32 postavke trimova. Zadano

je 0. Kada povećavate vrijednost registarske vrijednosti, efektivna RC vrijednost oscilatora se smanjuje, tj

da se frekvencija sata povećava u skladu s tim.

REG_CLOCK

Ovaj 32-bitni registar broji broj glavnih ciklusa FT800 / FT801 od resetiranja. Čitanjem

ovaj registar, domaćin MCU može izračunati glavnu frekvenciju sata na temelju točnog vremena u

MCU.

REG_FREQUENCY

Ovaj 32-bitni registar pohranjuje vrijednost trenutne frekvencije glavnog sata. Softver se mora ažurirati

ovaj registar nakon što je obrezivanje sata dovršeno.

3.2 Metoda rezanja

Tijekom napajanja na inicijalizaciji, softver može smanjiti unutarnji sat oscilatora opuštanja na

željenu vrijednost. Ciljana vrijednost je 12MHz, tako da će glavni sat raditi na 48MHz.

Nakon što je čip prebačen u aktivni način, unutarnji sat, PLL, će se pokrenuti i sustav

glavni sat će biti dostupan. REG_CLOCK će početi bilježiti svaki glavni ciklus sata. Čitanjem

REG_CLOCK dvaput u definiranom intervalu (npr. 1us temeljen na MCU satu ili timeru), glavnom satu

može se izračunati frekvencija. Ako je izmjerena frekvencija niža od cilja, povećajte

vrijednost REG_TRIM. Ponovite ovu operaciju dok izmjerena frekvencija ne bude unutar +/- 3% od

ciljna frekvencija.

3.3 Detaljne sekvence

Sljedeći koraci pružaju detaljan programski slijed za smanjivanje unutarnjeg sata.

1. Nakon resetiranja hardvera (uključite ili prebacite PD_N pin), FT800 / FT801 ulazi u STANDBY

način. Interno vrijeme oscilatora opuštanja odabire se kao izvor sata PLL-a.

I unutarnji sat i PLL su uključeni, ali glavni sat prema jezgri logike je

ugašen.

2. Postavite čip na ACTIVE način rada dummy read operation preko sučelja domaćina

(SPI ili I2C).

3. Izmjerite trenutnu frekvenciju sata

a. Pročitajte REG_CLOCK kao t0

b. Odgoda 1a

c. Pročitajte REG_CLOCK kao t1

d. Izračunajte frekvenciju sata f = (t1-t0) / 1us

4. Ako je izmjerena frekvencija f manja od 48MHz do 3%, povećajte REG_TRIM registar za 1

5. Ponovite korake 3 i 4 sve dok izmjerena frekvencija ne bude unutar 48MHz +/- 3%, ili

REG_TRIM već doseže maksimalnu vrijednost od 31 (što je malo vjerojatno od obrezivanja

raspon je definiran da bi mogao ugađati sat na cilj)

6. Napišite konačnu mjerenu frekvenciju f na REG_FREQUENCY

Ispod je uzorak C koda za unutarnje podrezivanje satova, koji koristi Gameduinuo 2 aplikacija:

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

#define REG_CLOCK 0x102408

uint32_t GDClass :: measure_freq (praznina)

{

nepotpisano dugo t0 = GDTR.rd32 (REG_CLOCK);

delayMicroseconds (15625);

nepotpisana dugo t1 = GDTR.rd32 (REG_CLOCK);

povratak (t1 - t0) <>

}

#define REG_TRIM 0x10256C

#define REG_FREQUENCY 0x10240C

#define LOW_FREQ_BOUND 47040000UL

void GDClass :: podešavanje (praznina)

{

nepotpisani char i = 0;

uint32_t f;

za (bajt i = 0; (i <31) &&="" ((f="mjera_freq" ())="">

GDTR.wr (REG_TRIM, i);

GDTR.wr32 (REG_FREQUENCY, f);

}

Budući da se REG_TRIM vraća na 0 svaki put kad se ponovi hardversko poništavanje, potrebno ga je izvršiti

redoslijed podrezivanja sata u resetiranoj rutini inicijalizacije.