info@panadisplay.com
Primjer vremena

Primjer vremena

Apr 26, 2019

2.2.4 Primjer mjerenja vremena: 480x272 na 60Hz

Za ažuriranje prikaza na 60Hz, postoji 48000000/60 = 800000 brzih satova po kadru.

Postavljanje PCLK djelitelja REG_PCLK na 5 daje PCLK frekvenciju od 9,6 MHz i

800000/5 = 160000KMK po kadru.

Za ekran od 480 x 272, tipični horizontalni period je 525 časova, a vertikalni period je

286 linija. Malo pretrage pokazuju da veličina od 548 x 292 daje period od 160016 časova,

vrlo blizu cilja. Tako da sa REG_HCYCLE = 548 i REG_VCYCLE = 292 displej

frekvencija je skoro tačno 60Hz. Ostale postavke registra mogu se postaviti direktno iz

tablični list displeja.


2.2.5 Redoslijed inicijalizacije

Ovaj odjeljak opisuje sekvencu inicijalizacije u drugom scenariju.

 Inicijalna sekvenca tokom podizanja sistema:

1. Koristite MCU SPI sat ne više od 11MHz

2. Pošalji naredbu Host CLKEXT na FT800

3. Pošalji naredbu Host "ACTIVE" da bi omogućila sat FT800.

4. Konfigurirajte vremenske registre videa, osim REG_PCLK

5. Napišite prvu listu prikaza

6. Napišite REG_DLSWAP, FT800 odmah zamjenjuje prikaz liste

7. Omogućite kontrolu pozadinskog svetla za prikaz

8. Napišite REG_PCLK, video izlaz počinje sa prvom listom prikaza

9. Koristite MCU SPI sat ne više od 30MHz


MCU_SPI_CLK_Freq (<11mhz); koristi="" mcu="" spi="" sat="" manji="" od="">

// poslati naredbu "CLKEXT" na FT800

// pošalji naredbu hosta "ACTIVE" na FT800

/ * Konfigurisanje registara prikaza - demonstracija WQVGA rezolucije * /

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

/ * napisati prvu listu prikaza * /

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

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); // nakon što je ovaj ekran vidljiv na LCD-u

MCU_SPI_CLK_Freq (<30mhz); koristite="" mcu="" spi="" takt="" do="">

Isječak koda 1 Redoslijed inicijalizacije



 Inicijalna sekvenca iz Power Down-a pomoću PD_N pin-a:

1. Vozite PD_N pin visoko

2. Pričekajte najmanje 20ms

3. Izvršite "sekvencu inicijalizacije za vrijeme pokretanja sustava" od koraka 1 do 9

 Inicijalna sekvenca iz stanja mirovanja:

1. Pošalji naredbu Host "ACTIVE" da bi omogućila sat na FT800

2. Pričekajte najmanje 20ms

3. Izvršite “sekvencu inicijalizacije za vrijeme podizanja sustava” od koraka 5 do 8

 Inicijalizacija iz stanja pripravnosti:

Izvršite sve korake navedene u „Inicijalizacijskom nizu iz stanja mirovanja“

osim čekanja najmanje 20ms u koraku 2.

Napomena: Informacije o režimima napajanja potražite na FT800 listu podataka. Slijedite odjeljak 2.3 za

upravljanje zvukom tokom isključivanja i resetovanja.


2.3 Sintetizator zvuka

Primer koda za reprodukciju C8 na ksilofonu:

wr8 (REG_VOL_SOUND, 0xFF); // podesite jačinu zvuka na maksimum

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

wr8 (REG_PLAY, 1); // reproducira zvuk

Snippet koda 2 zvučni sintisajzer igra C8 na ksilofonu


Primjer koda za provjeru statusa reprodukcije zvuka:

// 1-play se nastavlja, 0-play je završen

Sintetizator zvuka kodnog koda 3 provjerava status reprodukcije zvuka



Primjer koda za zaustavljanje reprodukcije zvuka:

wr16 (REG_SOUND, 0x0); // konfiguriranje tišine kao zvuka koji se reproducira

wr8 (REG_PLAY, 1); // reprodukcija zvuka

// 1-play se nastavlja, 0-play je završen

Sintetizator zvuka koda 4 prestaje reprodukciju zvuka


Da biste izbegli zvučni pop zvuk pri resetovanju ili promeni stanja napajanja, pokrenite "mute" zvuk,

i pričekajte da se dovrši (dovršenje reprodukcije zvuka je kada REG_PLAY sadrži vrijednost

od 0). Ovo podešava izlaznu vrednost na 0 nivo. Na restartu, audio motor reprodukuje

"unmute" zvuk da bi se izlaz doveo do pola nivoa.

Napomena: Više informacija o sintetizatoru zvuka i zvuku potražite na FT800 listu podataka

reprodukcija.


2.4 Audio reprodukcija

FT800 podržava tri tipa audio formata: 4 Bit IMA ADPCM, 8 Bit potpisan PCM, 8 Bit uLaw. Za IMA ADPCM format, imajte na umu red bajta: unutar jednog bajta, prvi uzorak

(4 bita) treba locirati od bita 0 do bita 3, dok drugi uzorak (4 bita) treba locirati od

bit 4 do bit 7.

Za reprodukciju audio podataka u FT800 RAM-u, FT800 zahteva početnu adresu u

REG_PLAYBACK_START da bude poravnat sa 64 bita (8 bajtova). Pored toga, dužina zvuka

podaci navedeni u REG_PLAYBACK_LENGTH moraju biti poravnati sa 64 bita (8 bajtova).

Da biste saznali kako reproducirati audio podatke, provjerite primjer koda u nastavku:

wr8 (REG_VOL_PB, 0xFF); // konfiguriranje audio reprodukcije

wr32 (REG_PLAYBACK_START, 0); // konfiguriranje početne adrese audio bafera

wr32 (REG_PLAYBACK_LENGTH, 100 * 1024); // konfiguriranje duljine audio bafera

wr16 (REG_PLAYBACK_FREQ, 44100); // konfiguriranje frekvencije uzorkovanja zvuka

wr8 (REG_PLAYBACK_FORMAT, ULAW_SAMPLES); // konfiguriranje audio formata

wr8 (REG_PLAYBACK_LOOP, 0); // konfiguriranje jednom ili kontinuirana reprodukcija

wr8 (REG_PLAYBACK_PLAY, 1); // pokretanje audio reprodukcije

Isječak koda 5 Reprodukcija zvuka



AudioPlay_Status = rd8 (REG_PLAYBACK_PLAY); // 1-audio reprodukcija se dešava,

0-audio reprodukcija je završena

Isječak koda 6 Provjerite status reprodukcije zvuka

wr32 (REG_PLAYBACK_LENGTH, 0); // konfigurirati dužinu reprodukcije na 0

wr8 (REG_PLAYBACK_PLAY, 1); // startuj audio reprodukciju

Isječak koda 7 Zaustavite reprodukciju zvuka


2.5 Rutine grafike

Ovaj odeljak opisuje grafičke funkcije i beleži nekoliko primera.

2.5.1 Početak rada

Ovaj kratki primer kreira ekran sa tekstom "FTDI" na njemu, sa crvenom tačkom.

image

Kod za crtanje ekrana je:

wr32 (RAM_DL + 0, CLEAR (1, 1, 1)); // Clear screen

wr32 (RAM_DL + 4, BEGIN (BITMAPS)); // počinje crtanje bitmapa

wr32 (RAM_DL + 8, VERTEX2II (220, 110, 31, 'F')); // ascii F u fontu 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)); // mijenjaju boju u crvenu

wr32 (RAM_DL + 32, POINT_SIZE (320)); // zadana veličina točke do 20 piksela

radijus

wr32 (RAM_DL + 36, BEGIN (POINTS)); // startuju točke crtanja

wr32 (RAM_DL + 40, VERTEX2II (192, 133, 0, 0)); // crvena tačka

wr32 (RAM_DL + 44, END ());

wr32 (RAM_DL + 48, DISPLAY ()); // prikazuje sliku

Isječak koda 8 Getting Started


Nakon što se gornje naredbe za crtanje učitaju u RAM-ov popis prikaza, registrirajte

REG_DLSWAP mora biti postavljen na 0x02 da bi nova lista prikaza bila aktivna

na sljedećem osvježavanju okvira.

Bilješka:

 Lista prikaza se uvijek pokreće na adresi RAM_DL

• Adresa se uvijek povećava za 4 (bajtova) jer svaka naredba ima 32-bitnu širinu.

 Preporučuje se naredba CLEAR da se koristi prije bilo kojeg drugog crteža

operacije, kako bi se FT800 grafički pogon stavio u poznato stanje.

• Kraj liste prikaza se uvek označava komandom DISPLAY

2.5.2 Koordinatna ravnina

Slika ispod prikazuje koordinatnu ravninu grafike i njenu vidljivu površinu.

Važeće X i Y koordinate se kreću od -1024 do 1023 piksela preciznosti, tj

-16384 do 16383 u preciznosti od 1/16 piksela.


image

2.5.3 Crtež crteža

Opći uzorak za crtanje je:

• BEGIN sa jednim od primitivnih tipova

 Unesite jedan ili više vrhova, koji određuju položaj primitiva

ekranu

 END da označi kraj primitivnog

(napomena: U mnogim primjerima naredba END nije izričito navedena)

Primitivni tipovi koje podržavaju grafički motori su:

 BITMAPS - pravougaoni pikselni nizovi, u različitim formatima boja

 POINTS - anti-aliased tačke, radijus tačke je 1-256 piksela

 LINIJE - anti-aliased linije, sa širinom od 0 do 4095 1/16 jedinica piksela.

(širina je od centra linije do granice)

 LINE_STRIP - anti-aliased linije, spojene head-to-tail

 RECTS - pravokutnici okruglog oblika, zakrivljenost uglova se može podešavati

koristeći LINE_WIDTH.

 EDGE_STRIP_A / B / L / R rubne trake

Primjeri


Crtanje tačaka promjenjivog radijusa od 5 piksela do 13 piksela različitih boja:

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

dl (POINT_SIZE (5 * 16));

dl (BEGIN (POINTS));

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

Naredba VERTEX2F daje lokaciju centra kruga.

Nacrtajte linije različitih veličina od 2 piksela do 6 piksela različitih boja (širina linije

veličina je od centra linije do granice):

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

dl (LINE_WIDTH (2 * 16));

dl (BEGIN (LINIJE));

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

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

VERTEX2F naredbe su u paru za definiranje početne i završne točke linije.



Crtajte pravougaonik dimenzija 5x25, 10x38 i 15x50 (koristi se širina linije)

za zakrivljenost ugla, LINE_WIDTH pikseli se dodaju u oba smjera pored

dimenzija pravokutnika):

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

Komande VERTEX2F su u paru za definiranje gornjih lijevih i donjih desnih uglova

pravokutnik.

image

image

image

image

2.5.4 Pisanje lista prikaza

Pisanje unosa liste prikaza sa wr32 () je dugotrajno i podložno greškama, pa umjesto toga a

funkcija se može koristiti:

image

image

image

Naredba COLOR_RGB mijenja trenutnu boju crteža, koja boji bitmapu.

Naredba COLOR_A mijenja trenutni alfa crtež, mijenjajući transparentnost

crteža: alfa od 0 znači potpuno transparentan i alfa od 255 je u potpunosti

opaque. Ovde vrednost 150 daje delimično transparentan efekat.

image

2.5.7 VERTEX2II i VERTEX2F

Naredba VERTEX2II koja se koristi iznad dozvoljava samo pozitivne ekranske koordinate. Ako je

bitmapa je delimično isključena sa ekrana, na primer tokom pomeranja ekrana, onda je to potrebno

odredite negativne koordinate ekrana. Komanda VERTEX2F dozvoljava negativ

koordinate. Takođe dozvoljava i djelomične koordinate, jer specificira ekran (x, y) u

jedinica od 1/16 piksela.

Na primjer, crtanje iste bitmape na poziciji ekrana (-10, -10) pomoću VERTEX2F:

image

image

image

2.5.9 Performanse

Grafički motor nema bafer okvira: on koristi dinamičku kompoziciju za svaki od njih

prikaz linije tokom skeniranja. Zbog toga postoji ograničena količina vremena na raspolaganju

nacrtajte svaku liniju. Ovo vrijeme ovisi o parametrima skeniranja (REG_PCLK i

REG_HCYCLE) ali nikada nije manje od 2048 unutrašnjih ciklusa sata.

Neka ograničenja performansi:

 Dužina prikaza liste mora biti manja od 2048 instrukcija, jer

grafički mehanizam dohvaća listu naredbi po jedan sat.

 Grafički prikaz performansi motora za snimanje piksela je 4 piksela po satu, za bilo koji

linija sa 2048 komandama prikaza mora biti ukupna izvedba piksela

manje od 8192.

 Za neke bitmap formate, brzina crtanja je 1 piksela po satu. Ovo su

TEXT8X8, TEXTVGA i PALETTED.

 Za bilinearne filtrirane piksele, brzina crtanja je smanjena na el piksela po satu.

Većina bitmap formata crta na 1 piksel po satu, a gore navedeni formati

(TEXT8X8, TEXTVGA i PALETTED) crtanje na 1 piksel na svakih 4 sata.

image