Dom > Novice > Vsebine

Primer časa

Apr 26, 2019

2.2.4 Primer časa: 480 x 272 pri 60 Hz

Za posodobitev zaslona pri 60 Hz je na okvirju 48000000/60 = 800000 hitrih ur.

Nastavitev delilnika PCLK REG_PCLK na 5 daje frekvenco PCLK 9,6 MHz in

800000/5 = 160000PCLK na okvir.

Za zaslon 480 x 272 znaša tipično horizontalno obdobje 525 ur in navpično obdobje

286 vrstic. Malo iskanja kažejo, da velikost 548 x 292 pomeni čas 160016 ur,

zelo blizu cilja. Torej z REG_HCYCLE = 548 in REG_VCYCLE = 292 na zaslonu

frekvenca je skoraj točno 60Hz. Druge nastavitve registra lahko nastavite neposredno iz

podatkovni list prikazovalnika.


2.2.5 Zaporedje inicializacije

Ta razdelek opisuje zaporedje inicializacije v drugem scenariju.

 Inicializacijska sekvenca med zagonom:

1.Uporabite MCU SPI uro ne več kot 11MHz

2. Pošlji ukaz Host CLKEXT na FT800

3. Pošlji ukaz za gostitelja “ACTIVE”, da omogoči uro za FT800.

4. Konfigurirajte video časovne registre, razen REG_PCLK

5. Napišite prvi prikazni seznam

6. Napišite REG_DLSWAP, FT800 takoj zamenja prikazni seznam

7. Omogočite nadzor zadnje svetlobe za prikaz

8. Napišite REG_PCLK, video izhod se začne s prvim prikaznim seznamom

9. Uporabite MCU SPI uro ne več kot 30MHz


MCU_SPI_CLK_Freq (<11mhz); uporabite="" uro="" spi="" mcu="" manj="" kot="">

// pošlji ukaz "CLKEXT" na FT800

// pošlji ukaz za gostitelja "ACTIVE" na FT800

/ * Konfiguriranje prikaznih registrov - demonstracija za ločljivost WQVGA * /

wr16 (REG_HCYCLE, 548);

wr16 (REG_HOFFSET, 43);

wr16 (REG_HSYNC0, 0);

wr16 (REG_HSYNC1, 41);

wr16 (REG_VCYCLE, 292);

wr16 (REG_VOFFSET, 12);

wr16 (REG_VSYNC0, 0);

wr16 (REG_VSYNC1, 10);

wr8 (REG_SWIZZLE, 0);

wr8 (REG_PCLK_POL, 1);

wr8 (REG_CSPREAD, 1);

wr16 (REG_HSIZE, 480);

wr16 (REG_VSIZE, 272);

/ * pisanje prvega seznama prikazov * /

wr32 (RAM_DL + 0, CLEAR_COLOR_RGB (0,0,0));

wr32 (RAM_DL + 4, CLEAR (1,1,1));

wr32 (RAM_DL + 8, DISPLAY ());

wr8 (REG_DLSWAP, DLSWAP_FRAME); // prikaz zamenjave seznama

wr8 (REG_GPIO_DIR, 0x80 | Ft_Gpu_Hal_Rd8 (phost, REG_GPIO_DIR));

wr8 (REG_GPIO, 0x080 | Ft_Gpu_Hal_Rd8 (phost, REG_GPIO));

wr8 (REG_PCLK, 5); // ko je ta zaslon viden na LCD-prikazovalniku

MCU_SPI_CLK_Freq (<30mhz), uporabite="" uro="" spi="" mcu="" do="">

Odrezek kode 1 Zaporedje inicializacije



 Zaporedje inicializacije iz Power Down z uporabo pinov PD_N:

1. Visoko potisnite PD_N zatič

2. Počakajte vsaj 20 ms

3. Izvedite "Inicializacijsko zaporedje med zagonom" od korakov 1 do 9

 Zaporedje inicializacije iz načina mirovanja:

1. Pošlji ukaz za gostitelja “ACTIVE”, da omogoči uro za FT800

2. Počakajte vsaj 20 ms

3. Izvedite »Zaporedje inicializacije med zagonom« od korakov 5 do 8

 Zaporedje inicializacije iz stanja pripravljenosti:

Izvedite vse korake, omenjene v "Zaporedju inicializacije iz načina mirovanja"

razen čakanja vsaj 20 ms v 2. koraku.

Opomba: Za informacije o načinih porabe si oglejte podatkovni list FT800. Sledite točki 2.3 za

upravljanje zvoka med izklopom in ponastavitvijo operacij.


2.3 Sintetizator zvoka

Vzorec kode za predvajanje C8 na ksilofonu:

wr8 (REG_VOL_SOUND, 0xFF); // nastavite glasnost na največ

wr16 (REG_SOUND, (0x6C < 8)="" |=""> // C8 MIDI opomba o ksilofonu

wr8 (REG_PLAY, 1); // predvaja zvok

Koda kode 2 sintetizator zvoka predvaja C8 na ksilofonu


Vzorčna koda za preverjanje stanja predvajanja zvoka:

Sound_status = rd8 (REG_PLAY); // 1-play se nadaljuje, 0-play je končano

Sintetizator zvoka kode 3 preveri stanje predvajanja zvoka



Vzorec kode za zaustavitev predvajanja zvoka:

wr16 (REG_SOUND, 0x0); // konfigurira tišino kot zvok, ki se predvaja

wr8 (REG_PLAY, 1); // predvajanje zvoka

Sound_status = rd8 (REG_PLAY); // 1-play se nadaljuje, 0-play je končano

Sintetizator zvočnih zapisov 4 preneha predvajati zvok


Da bi se izognili zvočnemu zvoku pri ponastavitvi ali spremembi stanja napajanja, sprožite zvok »utišanja«

in počakajte, da se dokonča (dokončanje predvajanja zvoka je, ko REG_PLAY vsebuje vrednost

0). To nastavi izhodno vrednost na 0 stopnjo. Ob ponovnem zagonu se avdio posnetek predvaja

Zvok "unmute" za vklop izhoda na polovično raven.

Opomba: Za več informacij o sintetizatorju zvoka in zvoku si oglejte podatkovni list FT800

predvajanje.


2.4 Predvajanje zvoka

FT800 podpira tri vrste avdio formata: 4-bitni IMA ADPCM, 8-bitni podpisani PCM, 8-bitni uLaw. Za obliko IMA ADPCM upoštevajte vrstni red bajtov: v enem bajtu, prvi vzorec

(4 bitov) se poišče od bita 0 do bita 3, drugi vzorec (4 bitov) pa se najde od

bit 4 do bit 7.

Če želite predvajati zvočne podatke v FT800 RAM, FT800 zahteva začetni naslov v

REG_PLAYBACK_START je 64-bitno (8 bajtov) poravnano. Poleg tega je dolžina zvoka

Podatki, ki jih določa REG_PLAYBACK_LENGTH, morajo biti 64 bitni (8 bajtov) poravnani.

Če želite izvedeti, kako predvajati zvočne podatke, preverite spodnjo vzorčno kodo:

wr8 (REG_VOL_PB, 0xFF); // nastavitev glasnosti predvajanja zvoka

wr32 (REG_PLAYBACK_START, 0); // konfiguriranje začetnega naslova avdio vmesnika

wr32 (REG_PLAYBACK_LENGTH, 100 * 1024);

wr16 (REG_PLAYBACK_FREQ, 44100); // nastavitev frekvence avdio vzorčenja

wr8 (REG_PLAYBACK_FORMAT, ULAW_SAMPLES); // konfiguriranje oblike zvoka

wr8 (REG_PLAYBACK_LOOP, 0), / konfiguriranje enkrat ali neprekinjeno predvajanje

wr8 (REG_PLAYBACK_PLAY, 1); // začetek predvajanja zvoka

Odrezek kode 5 Predvajanje zvoka



AudioPlay_Status = rd8 (REG_PLAYBACK_PLAY); // predvaja se 1 avdio,

Predvajanje 0-audio je končano

Odrezek kode 6 Preverite stanje predvajanja zvoka

wr32 (REG_PLAYBACK_LENGTH, 0); // nastavite dolžino predvajanja na 0

wr8 (REG_PLAYBACK_PLAY, 1); // začetek predvajanja zvoka

Odrezek kode 7 Zaustavite predvajanje zvoka


2.5 Grafični postopki

Ta razdelek opisuje grafične funkcije in zajema nekaj primerov.

2.5.1 Začetek

Ta kratek primer ustvari zaslon z besedilom "FTDI" na njem z rdečo piko.

image

Koda za risanje zaslona je:

wr32 (RAM_DL + 0, CLEAR (1, 1, 1)); // počisti zaslon

wr32 (RAM_DL + 4, BEGIN (BITMAPS)); // začetek risanja bitnih slik

wr32 (RAM_DL + 8, VERTEX2II (220, 110, 31, 'F')); // ascii F v pisavi 31

wr32 (RAM_DL + 12, VERTEX2II (244, 110, 31, 'T')); // ascii T

wr32 (RAM_DL + 16, VERTEX2II (270, 110, 31, 'D')); // ascii D

wr32 (RAM_DL + 20, VERTEX2II (299, 110, 31, 'I')); // ascii I

wr32 (RAM_DL + 24, END ());

wr32 (RAM_DL + 28, COLOR_RGB (160, 22, 22)); // spremeni barvo v rdečo

wr32 (RAM_DL + 32, POINT_SIZE (320)); // velikost nastavljene točke na 20 pik v

polmer

wr32 (RAM_DL + 36, BEGIN (TOČKE)); // začetek risarskih točk

wr32 (RAM_DL + 40, VERTEX2II (192, 133, 0, 0)); // rdeča točka

wr32 (RAM_DL + 44, END ());

wr32 (RAM_DL + 48, DISPLAY ()); // prikaže sliko

Odrezek kode 8 Kako začeti


Ko se zgornji ukazi za risanje naložijo v seznam RAM, se registrira

Če želite, da je novi prikazni seznam aktiven, morate nastaviti REG_DLSWAP na 0x02

ob naslednjem osveževanju okvira.

Opomba:

 Prikazni seznam se vedno začne na naslovu RAM_DL

 Naslov se vedno poveča za 4 (bajtov), saj ima vsak ukaz 32-bitno širino.

 Ukaz CLEAR je priporočljivo uporabiti pred katero koli drugo risbo

operacijo, da bi postavili grafični motor FT800 v znano stanje.

 Konec seznama prikaza je vedno označen z ukazom DISPLAY

2.5.2 Koordinatna ravnina

Spodnja slika prikazuje grafično koordinatno ravnino in njeno vidno območje.

Veljavne koordinate X in Y segajo od -1024 do 1023 v natančnosti pikslov, tj

-16384 do 16383 v natančnosti 1/16 slikovnih pik.


image

2.5.3 Risba vzorca

Splošni vzorec za risanje je:

 BEGIN z enim od primitivnih tipov

 Vnesite eno ali več vozlišč, na katerih je določena umestitev primitivne točke

na zaslonu

 END, ki označuje konec primitivnega

(Opomba: V mnogih primerih ukaz END ni izrecno naveden)

Osnovni tipi, ki jih podpira grafični pogon:

 BITMAPS - pravokotne pikselne matrike v različnih barvnih formatih

 TOČKE - anti-aliased točke, polmer točke je 1-256 slikovnih pik

 LINIJE - anti-aliased linije, s širino od 0 do 4095 1/16 enot slikovnih pik.

(širina je od središča črte do meje)

 LINE_STRIP - linije brez povezave, povezane z glavo na rep

 RECTS - pravokotniki okroglega kota, prilagoditev ukrivljenosti vogalov

z uporabo LINE_WIDTH.

 EDGE_STRIP_A / B / L / R robni trakovi

Primeri


Risanje točk z različnim polmerom od 5 pikslov do 13 slikovnih pik z različnimi barvami

dl (COLOR_RGB (128, 0, 0));

dl (POINT_SIZE (5 * 16));

dl (BEGIN (TOČKE));

dl (VERTEX2F (30 * 16, 17 * 16));

dl (COLOR_RGB (0, 128, 0));

dl (POINT_SIZE (8 * 16));

dl (VERTEX2F (90 * 16, 17 * 16));

dl (COLOR_RGB (0, 0, 128));

dl (POINT_SIZE (10 * 16));

dl (VERTEX2F (30 * 16, 51 * 16));

dl (COLOR_RGB (128, 128, 0));

dl (POINT_SIZE (13 * 16));

dl (VERTEX2F (90 * 16, 51 * 16));

image

Ukaz VERTEX2F podaja lokacijo središča kroga.

Narišite črte različnih velikosti od 2 do 6 slikovnih pik z različnimi barvami (širina črte

velikost je od središča črte do meje):

dl (COLOR_RGB (128, 0, 0));

dl (LINE_WIDTH (2 * 16));

dl (BEGIN (LINES));

dl (VERTEX2F (30x16,38x16));

dl (VERTEX2F (30 * 16,63 * 16));

dl (COLOR_RGB (0, 128, 0));

dl (LINE_WIDTH (4 * 16));

dl (VERTEX2F (60 * 16, 25 * 16));

dl (VERTEX2F (60 * 16,63 * 16));

dl (COLOR_RGB (128, 128, 0));

dl (LINE_WIDTH (6 * 16));

dl (VERTEX2F (90 * 16, 13 * 16));

dl (VERTEX2F (90 * 16, 63 * 16));

Ukazi VERTEX2F so v parih določili začetno in končno točko linije.



Narišite pravokotnik z velikostjo 5x25, 10x38 in 15x50 dimenzij (velikost črte se uporablja

za ukrivljenost kota se LINE_WIDTH točk doda v obe smeri poleg

dimenzija pravokotnika):

image

dl (COLOR_RGB (128, 0, 0));

dl (LINE_WIDTH (1 * 16));

dl (BEGIN (RECTS));

dl (VERTEX2F (28 * 16, 38 * 16));

dl (VERTEX2F (33 * 16,63 * 16));

dl (COLOR_RGB (0, 128, 0));

dl (LINE_WIDTH (5 * 16));

dl (VERTEX2F (50 * 16, 25 * 16));

dl (VERTEX2F (60 * 16,63 * 16));

dl (COLOR_RGB (128, 128, 0));

dl (LINE_WIDTH (10 * 16));

dl (VERTEX2F (83 * 16, 13 * 16));

dl (VERTEX2F (98 * 16, 63 * 16));

Ukazi VERTEX2F so v parih določili zgornji levi in spodnji desni kot

pravokotnika.

image

image

image

image

2.5.4 Pisanje prikaznih seznamov

Pisanje zapisov v seznamu prikaza z wr32 () je zamudno in nagnjeno k napakam, zato namesto tega a

lahko uporabite:

image

image

image

Ukaz COLOR_RGB spremeni trenutno barvo risbe, ki barva bitno sliko.

Ukaz COLOR_A spremeni trenutno alfa risbo in spremeni preglednost

risbe: alfa 0 pomeni popolnoma pregledno in alfa 255 je v celoti

neprozorna. Tukaj je vrednost 150 delno prosojni učinek.

image

2.5.7 VERTEX2II in VERTEX2F

Zgoraj uporabljen ukaz VERTEX2II omogoča le pozitivne koordinate zaslona. Če je

bitna slika je delno izključena iz zaslona, na primer med pomikanjem zaslona, potem je to potrebno

določite negativne koordinate zaslona. Ukaz VERTEX2F omogoča negativno

koordinate. Omogoča tudi delne koordinate, ker določa zaslon (x, y) v

enot 1/16 piksla.

Na primer, risanje iste bitne slike na položaju zaslona (-10, -10) z uporabo VERTEX2F:

image

image

image

2.5.9 Uspešnost

Grafični mehanizem nima vmesnega pomnilnika: uporablja dinamično kompozicijo za vsakokratno gradnjo

med pregledovanjem. Zaradi tega je na voljo omejen čas

pripravi vsako vrstico. Ta čas je odvisen od parametrov iskanja (REG_PCLK in

REG_HCYCLE), vendar nikoli ni manj kot 2048 notranjih ciklov ur.

Nekatere omejitve uspešnosti:

 Dolžina prikaza seznama mora biti manjša od 2048 navodil, ker

grafični motor pridobi seznam ukazov enega na uro.

• Zmogljivost slikovnih signalov grafičnega motorja je 4 pik na uro, za vsako

v vrstici z 2048 prikaznimi ukazi mora biti prikazana skupna zmogljivost slikovnih pik

manj kot 8192.

 Pri nekaterih bitnih slikah je hitrost risanja 1 slikovna pika na uro. To so

TEXT8X8, TEXTVGA in PALETTED.

 Pri bilinearnih filtriranih slikovnih pika se hitrost risanja zmanjša na el slikovnih pik na uro.

Večina bitnih slik oblikuje 1 slikovno piko na uro in zgornje formate

(TEXT8X8, TEXTVGA in PALETTED) narišejo 1 sliko vsake 4 ure.

image