Dom > Novosti > Sadržaj

FT800-FT801 Unutrašnji sat

Nov 03, 2018

FT800-FT801 Unutrašnji sat


FTDI FT800 i FT801 video kontroleri nude nisko troškovno rešenje za ugrađene grafičke zahteve. Pored grafike, dodaci na ekranu na dodir i audio izlaz pružaju kompletan interfejs za ljudske mašine za spoljni svet.

Ova aplikaciona napomena obezbediće programsku sekvencu o tome kako da isečite unutrašnji sat čipa za veću preciznost tako da aplikacije mogu da rade bez spoljnog kristala.

Upotreba FTDI uređaja u životnoj podršci i / ili sigurnosnim aplikacijama u potpunosti je na riziku korisnika, a korisnik se slaže da odbrani, nadoknađuje i zadrži FTDI bezopasnu od bilo koje i sve štete, potraživanja, odela ili troškove koji nastaju usled takve upotrebe.


1. Uvod

FT800 / FT801 posluje kao SPI ili I²C periferni uređaj za glavni sistemski procesor, čime se obezbeđuje nisko trošak, ali potpuni, ljudski interfejs iskustvom uvođenjem grafike renderinga, osjetljivog na touch screen i audio mogućnosti. Kontroliše se preko SPI ili I2C interfejsa niskopropusnog propusnog opsega koji omogućava praktično bilo koji mikrokontroler koji se koristi.

FT800 / FT801 podržava i unutrašnji sat i eksterni sat

operacije. Unutrašnji sat je oscilator za opuštanje koji se može upotrijebiti registrom za veću preciznost, tako da za mnoge primjene spoljašnji kristal ili sat nisu potrebni.


2 kola sata

Tok kruga FT800 / FT801 uključuje ulazni izvor sata i PLL. Izbor sata se može odabrati

između unutrašnjeg oscilatora relaksacije i kristalnog oscilatora od 12MHz. PLL će množi ulaz

sat sa 4 (podrazumevano) da generiše nominalni 48 MHz sistemski sat, koji obezbeđuje sat za sve interne

registri, uspomene i procesore.

Satni oscilator interne relaksacije kreće se od 4.46MHz do 12.11MHz (neokreiran) i može biti

obrezane pisanjem u registar trimova (REG_TRIM). Nakon obrezivanja, sat može da dostigne 12MHz

tačnost podešavanja od +/- 2,5%. Ugrađena frekvencija može se razlikovati između +/- 3% u radu

temperature i napona.

FT800 / FT801 ima 2 izlaza koji se mogu koristiti za praćenje i izračunavanje sistemskog sata

frekvencija. PCLK out pin će izlaziti sa frekvencijom jednako fsys_clk / REG_PCLK

(REG_PCLK programiran na vrednost nula-nula). Na primjer, pretpostavimo da je REG_PCLK programiran

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

9.6MHz = 48MHz.

Alternativno, fclk_sys se može izračunati merenjem frekvencije takta na priključku AUDIO_L. The

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

fclk_sys / 512. Ako je izmerena frekvencija na pinu AUDIO_L 93,75 kHz, tada fclk_sys = 512 *

93.75kHz = 48MHz.

Tok kruga FT800 / FT801 je prikazan na slici 2-1. Za aplikacije koje koriste unutrašnju opuštenost

Samo sat, spoljni kristal nije potreban. U ovom slučaju X1 / CLKIN pin će biti vezan za GND

a X2 pin ne sme biti povezan, kao što je prikazano na slici 2-2.

image

Slika 2-1 FT800 / FT801 strujni krug

image

Slika 2-2 priključak pinova za unutrašnji sat

 

3 Sekvenca obrezivanja časova

Frekvenca oscilatora interne relaksacije određuje se pomoću RC vrijednosti kola oscilatora.

Resistor na čipu i kondenzator imaju prilično široku varijansu u procesu rezanja. Podesavanjem

efektivna vrednost RC kroz registre, moguće je smanjiti frekvenciju takta za više

tačnost.

3.1 Korisni registarski opis

Postoji niz registara koji su uključeni u sekvence obrezivanja časova. Ovaj odeljak opisuje

detaljno funkciju ovih registara.

REG_TRIM

Trim registar REG_TRIM ima 5 važećih bitova Trim [4: 0], što omogućava ukupno 32 podešavanja trim. Default

je 0. Kada povećate vrednost trim registra, efektivna vrednost RC oscilatora se smanjuje, tako da

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

REG_CLOCK

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

ovaj registar, domaćinski MCU može izračunati glavnu frekvenciju takta na osnovu preciznog tajmera u

MCU.

REG_FREQUENCY

Ovaj 32-bitni registar čuva vrijednost trenutne glavne frekvencije takta. Softver treba ažurirati

ovaj registar jednom završi obradu sata.

3.2 Obrada metoda

Tokom inicijalizacije, softver može da oslabi unutrašnji oscilatorski sat relaksacije

željenu vrednost. Ciljna vrednost je 12MHz, tako da će glavni sat izaći na 48MHz.

Nakon što se čip stavlja u aktivni režim, interni sat, PLL, će se pokrenuti i sistem

glavni sat će biti dostupan. REG_CLOCK će početi da prebrojava svaki glavni ciklus takta. Čitanjem

REG_CLOCK dva puta u definisanom intervalu (tj. 1us baziran na MCU satu ili tajmeru), glavni sat

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

vrijednost REG_TRIM. Ponovite ovu operaciju sve dok izmerena frekvencija nije u granicama od +/- 3%

ciljna frekvencija.

3.3 Detaljne sekvence

Sledeći koraci obezbeđuju detaljnu programersku sekvencu kako bi smanjili interni sat.

1. Nakon resetovanja hardvera (uključivanje ili uključivanje PD_N pin), FT800 / FT801 ulazi u STANDBY

mod. Satni oscilatorski sat za oporavak je odabran kao izvor sata PLL.

Uključeni su i unutrašnji sat i PLL, ali glavni sat u osnovnoj logici je

ugašeno.

2. Postavite čip u ACTIVE način rada tako što ćete obaviti proceduru štampe čitanja preko interfejsa hosta

(SPI ili I2C).

3. Izmerite trenutnu frekvenciju takta

a. Pročitajte REG_CLOCK kao t0

b. Kašnjenje 1us

c. Pročitajte REG_CLOCK kao t1

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

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

5. Ponovite korake 3 i 4 sve dok se izmerena frekvencija ne nalazi na 48MHz +/- 3%, ili na

REG_TRIM već dostigne maksimalnu vrednost od 31 (što je malo verovatno nakon obrezivanja

opseg je definisan da bi mogao da podesi sat do cilja)

6. Napišite zadnju mjerenu frekvenciju f REG_FREQUENCY

Ispod je uzorak C kôda za unutrašnju obradu sata, koji koristi aplikacija Gameduinuo 2:

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

#define REG_CLOCK 0x102408

uint32_t GDClass :: measure_freq (void)

{

unsigned long t0 = GDTR.rd32 (REG_CLOCK);

delayMicroseconds (15625);

nepodpisano dugo t1 = GDTR.rd32 (REG_CLOCK);

povratak (t1 - t0) <>

}

#define REG_TRIM 0x10256C

#define REG_FREQUENCY 0x10240C

#define LOW_FREQ_BOUND 47040000UL

prazan GDClass :: melodija (void)

{

unsigned char i = 0;

uint32_t f;

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

GDTR.wr (REG_TRIM, i);

GDTR.wr32 (REG_FREQUENCY, f);

}

Budući da će REG_TRIM biti resetovan na 0 svaki put kada se resetuje hardver, potrebno je izvršiti

sekvencu sekvence sata u rutini za inicijalizaciju reseta.