Id-dar > Aħbarijiet > Il-kontenut

Eżempju taż-Żmien

Apr 26, 2019

2.2.4 Eżempju tal-ħin: 480x272 f'60Hz

Għal aġġornament tad-displej f'60Hz, hemm 48000000/60 = 800000 arloġġi veloċi għal kull qafas.

L-issettjar tad-divisor tal-PCLK REG_PCLK għal 5 jagħti frekwenza PCLK ta '9.6 MHz u

800000/5 = 160000PCLKs għal kull qafas.

Għal display 480 x 272, il-perjodu orizzontali tipiku huwa 525 arloġġ, u l-perjodu vertikali huwa

286 linja. Ftit tiftix juri li daqs ta ’548 x 292 jagħti perjodu ta’ 160016 arloġġ,

viċin ħafna tal-mira. Allura b 'REG_HCYCLE = 548 u REG_VCYCLE = 292 id-displej

frekwenza hija kważi eżattament 60Hz. Is - settings l - oħra tar - reġistru jistgħu jiġu ssettjati direttament minn. \ T

skeda ta 'dejta bord tal-wiri.


2.2.5 Sekwenza tal-Inizjalizzazzjoni

Din it-taqsima tiddeskrivi s-sekwenza tal-inizjalizzazzjoni fix-xenarju differenti.

 Is-sekwenza tal-inizjalizzazzjoni matul il-boot up:

1. Uża l-arloġġ MCU SPI mhux iktar minn 11MHz

2. Ibgħat il-kmand Ospitanti “CLKEXT” lil FT800

3. Ibgħat il-kmand Ospitanti “ATTIV” biex tippermetti l-arloġġ lil FT800.

4. Ikkonfigura reġistri tal-ħin tal-vidjow, ħlief REG_PCLK

5. Ikteb l-ewwel lista tal-wiri

6. Ikteb REG_DLSWAP, FT800 swaps display list immedjatament

7. Ħalli l-kontroll tad-dawl ta 'wara għall-wiri

8. Ikteb REG_PCLK, il-video output jibda bl-ewwel lista ta 'wiri

9. Uża l-arloġġ MCU SPI mhux iktar minn 30MHz


MCU_SPI_CLK_Freq (<11mhz); uża="" l-arloġġ="" mcu="" spi="" inqas="" minn="">

host_command (CLKEXT); // tibgħat kmand lil "CLKEXT" lil FT800

host_command (ATTIV); // tibgħat kmand ospitanti "ATTIV" lil FT800

/ * Kkonfigura r-reġistri tal-wiri - dimostrazzjoni għal riżoluzzjoni 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);

/ * ikteb l-ewwel lista ta 'wiri * /

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); // display list swap

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

wr8 (REG_GPIO, 0x080 | Ft_Gpu_Hal_Rd8 (phost, REG_GPIO)); // jippermettu li juri l-bit

wr8 (REG_PCLK, 5); // wara li din il-wiri tidher fuq l-LCD

MCU_SPI_CLK_Freq (<30mhz); uża="" l-arloġġ="" mcu="" spi="" sa="">

Snippet tal-kodiċi 1 Sekwenza tal-inizjalizzazzjoni



 Is-Sekwenza tal-Inizjalizzazzjoni minn Power Down bl-użu tal-PD_N pin:

1. Sewqan il-labra PD_N għolja

2. Stenna għal mill-inqas 20ms

3. Eżegwixxi “Sekwenza ta’ Inizjalizzazzjoni matul il-Boot UP ”mill-passi 1 sa 9

 Is-Sekwenza tal-Inizjalizzazzjoni mill-Modalità Sleep:

1. Ibgħat il-kmand Ospitanti “ATTIV” biex tippermetti l-arloġġ lil FT800

2. Stenna għal mill-inqas 20ms

3. Eżegwixxi “Is-sekwenza ta’ l-Inizjalizzazzjoni matul Boot Up ”mill-passi 5 sa 8

 Is-sekwenza tal-inizjalizzazzjoni mill-mod stand-by:

Eżegwixxi l-passi kollha msemmija f '“Is-Sekwenza tal-Inizjalizzazzjoni mill-Modalità Sleep”

ħlief stennija għal mill - inqas 20ms fi stadju 2.

Nota: Irreferi għall-iskeda tad-dejta FT800 għal informazzjoni dwar modi ta 'enerġija. Segwi t-taqsima 2.3 għal

immaniġġjar ta 'l-awdjo waqt it-tħaddim ta' l-enerġija u l-issettjar mill-ġdid.


2.3 Sintetizzatur tal-Ħoss

Kodiċi tal-kampjun biex tilgħab C8 fuq il-ksilofon:

wr8 (REG_VOL_SOUND, 0xFF); issettja l-volum għal massimu

wr16 (REG_SOUND, (0x6C < 8)="" |=""> // C8 Nota MIDI dwar il-ksilofon

wr8 (REG_PLAY, 1); // jilagħbu l-ħoss

Il-kodiċi snippet 2 tal-ħoss sintetizzatur jilgħab C8 fuq il-ksilofon


Kodiċi tal-kampjun biex tivverifika l-istat tal-logħob tal-ħoss:

Sound_status = rd8 (REG_PLAY); // 1-dramm għaddej, 0-play spiċċa

Snippet tal-kodiċi 3 sintetizzatur tal-ħoss jivverifika l-istat tal-logħob tal-ħoss



Kodiċi tal-kampjun biex iwaqqaf il-logħob tal-ħoss:

wr16 (REG_SOUND, 0x0); // kkonfigurat is-silenzju bħala ħoss li għandu jintlagħab

wr8 (REG_PLAY, 1); // play ħoss

Sound_status = rd8 (REG_PLAY); // 1-dramm għaddej, 0-play spiċċa

Snippet kodiċi 4 sintetizzatur tal-ħoss tieqaf tilgħab ħoss


Biex tevita ħoss pop awdjo fuq reset jew bidla fl-istat tal-enerġija, ixgħel ħoss "mute",

u stennih biex jitlesta (it-tlestija tal-ħsejjes hija meta REG_PLAY fih valur

ta '0). Dan jistabbilixxi l-valur tal-output għal livell 0. Mat-reboot, il-magna tal-awdjo tilgħab lura l-magna

ħoss "itfi" biex isuq l-output għal-livell ta 'nofs triq.

Nota: Irreferi għall-iskeda tad-dejta FT800 għal aktar informazzjoni dwar is-sintetizzatur tal-ħoss u l-awdjo

daqq.


2.4 Daqq ta 'l-awdjo

FT800 jappoġġja tliet tipi ta 'format awdjo: 4 Bit IMA ADPCM, 8 Bit Bit iffirmat, 8 Bit uLaw. Għall-format IMA ADPCM, jekk jogħġbok innota l-ordni tal-byte: fi ħdan byte wieħed, l-ewwel kampjun

(4 bits) għandhom jinstabu minn bit 0 sa bit 3, filwaqt li t-tieni kampjun (4 bits) għandhom jinstabu minn

daqsxejn 4 għal bit 7.

Biex id - data awdjo fil - FT800 RAM jkollha, l - FT800 jeħtieġ l - indirizz tal - bidu f '. \ T

REG_PLAYBACK_START għandu jkun allinjat ta '64 bit (8 Bytes). Barra minn hekk, it-tul tal-awdjo

id-dejta speċifikata minn REG_PLAYBACK_LENGTH hija meħtieġa li tkun allinjata 64-il bit (8 Bytes).

Biex titgħallem kif tilgħab id-data awdjo, jekk jogħġbok iċċekkja l-kodiċi tal-kampjun hawn taħt:

wr8 (REG_VOL_PB, 0xFF); // kkonfigurat il-volum tad-daqq ta 'l-awdjo

wr32 (REG_PLAYBACK_START, 0); // kkonfigurat l-indirizz tal-bidu tal-bafer tal-awdjo

wr32 (REG_PLAYBACK_LENGTH, 100 * 1024); // kkonfigurat it-tul tal-bafer tal-awdjo

wr16 (REG_PLAYBACK_FREQ, 44100); // kkonfigurat il-frekwenza tal-kampjunar tal-awdjo

wr8 (REG_PLAYBACK_FORMAT, ULAW_SAMPLES); // kkonfigurat il-format tal-awdjo

wr8 (REG_PLAYBACK_LOOP, 0); // kkonfigurat daqq darba jew kontinwu

wr8 (REG_PLAYBACK_PLAY, 1); // tibda d-daqq ta 'l-awdjo

Snippet tal-kodiċi 5 Daqq ta 'l-awdjo



AudioPlay_Status = rd8 (REG_PLAYBACK_PLAY); // 1 l-awdjo qiegħed għaddej,

Daqq ta '0 awdjo jkun lest

Snippet tal-kodiċi 6 Iċċekkja l-istat tad-daqq ta 'l-awdjo

wr32 (REG_PLAYBACK_LENGTH, 0); // kkonfigurat it-tul tad-daqq għal 0

wr8 (REG_PLAYBACK_PLAY, 1); // tibda d-daqq tal-awdjo

Snippet tal-kodiċi 7 Waqqaf id-daqq tal-awdjo


2.5 Rutini tal-grafika

Din it-taqsima tiddeskrivi karatteristiċi tal-grafika u tiġbor ftit eżempji.

2.5.1 Kif tibda

Dan l-eżempju qasir joħloq skrin bit-test "FTDI" fuqu, b'tikka ħamra.

image

Il-kodiċi li tiġbed l-iskrin huwa:

wr32 (RAM_DL + 0, CLEAR (1, 1, 1)); // skrin ċar

wr32 (RAM_DL + 4, BEGIN (BITMAPS)); // tibda tpinġi l-bitmaps

wr32 (RAM_DL + 8, VERTEX2II (220, 110, 31, 'F')); // ascii F fit-tipa 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)); // tbiddel il-kulur għal aħmar

wr32 (RAM_DL + 32, POINT_SIZE (320)); // id-daqs tal-punt issettjat għal 20 pixel f '

raġġ

wr32 (RAM_DL + 36, BEGIN (PUNTI)); // tibda tpinġi punti

wr32 (RAM_DL + 40, VERTEX2II (192, 133, 0, 0)); // punt aħmar

wr32 (RAM_DL + 44, END ());

wr32 (RAM_DL + 48, DISPLAY ()); // juri l-immaġini

Snippet tal-kodiċi 8 Kif tibda


Wara li l-kmandi tat-tpinġija t'hawn fuq jitgħabbew fil-lista tad-displej RAM, irreġistra

REG_DLSWAP huwa meħtieġ li jiġi ssettjat għal 0x02 sabiex il-lista l-ġdida tal-wiri tkun attiva

fuq il-qafas li jmiss jġedded.

Nota:

 Il-lista tal-wiri dejjem tibda fl-indirizz RAM_DL

 L-indirizz dejjem jiżdied b'4 (bytes) peress li kull kmand huwa wisa 'ta' 32 bit.

 Command CLEAR huwa rrakkomandat li jintuża qabel kwalunkwe disinn ieħor

operazzjoni, sabiex il-magna grafika FT800 titqiegħed fi stat magħruf.

 It-tmiem tal-lista tal-wiri huwa dejjem immarkat bil-kmand DISPLAY

2.5.2 Pjan koordinat

Il-figura t'hawn taħt turi l-pjan grafiku tal-koordinati u ż-żona viżibbli tiegħu.

Il-koordinati validi X u Y ivarjaw minn -1024 sa 1023 bi preċiżjoni tal-pixel, jiġifieri minn

-16384 sa 16383 fi preċiżjoni ta '1/16 pixel.


image

2.5.3 Disinn tad-disinn

Il-mudell ġenerali għat-tpinġija huwa:

 BIDU ma 'wieħed mit-tipi primittivi

 Daħħal punt wieħed jew aktar, li jispeċifikaw it-tqegħid tal-primittiv fuq

l-iskrin

 END biex timmarka t-tmiem tal-primittiv

(nota: F'ħafna eżempji l-kmand END mhuwiex elenkat espliċitament)

It-tipi primittivi li l-appoġġ tal-magna grafika huma:

 BITMAPS - matriċi ta 'pixel rettangolari, f'diversi formati tal-kulur

 PUNTI - punti anti-aliased, ir-raġġ tal-punt huwa 1-256 pixels

 LINJI - linji anti-aliased, b'wisa 'minn 0 sa 4095 1/16 ta' unitajiet ta 'pixel.

(il-wisa 'huwa miċ-ċentru tal-linja sal-konfini)

 LINE_STRIP - linji anti-alias, konnessi minn ras għal wara

 IR-RETTIKA - ir-rettangoli tal-kantunieri tondi, il-kurvatura tal-kantunieri tista 'tiġi aġġustata

tuża LINE_WIDTH.

 EDGE_STRIP_A / B / L / R - strixxi tat-tarf

Eżempji


Iġbed il-punti b'raġġ li jvarja minn 5 pixels sa 13-il pixel b'kuluri differenti:

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

dl (POINT_SIZE (5 * 16));

dl (BIDU (PUNTI));

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

Il-kmand VERTEX2F jagħti l-post taċ-ċentru taċ-ċirku.

Iġbed linji b'daqsijiet differenti minn 2 pixels sa 6 pixel b'kuluri differenti (wisa 'tal-linja

id-daqs huwa miċ-ċentru tal-linja sal-konfini):

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

dl (LINE_WIDTH (2 * 16));

dl (BIDU (LINJI));

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

Il-kmandi tal-VERTEX2F huma f'pari biex jiddefinixxu l-punt tal-bidu u tal-finitura tal-linja.



Iġbed rettangolu b'daqsijiet ta 'dimensjonijiet ta' 5x25, 10x38 u 15x50 (jintuża daqs tal-wisa 'tal-linja

għall-kurvatura tal-kantuniera, il-pixels LINE_WIDTH huma miżjuda fiż-żewġ direzzjonijiet flimkien ma '

dimensjoni tar-rettangolu):

image

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

dl (LINE_WIDTH (1 * 16));

dl (BIDU (IRTETTI));

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

Il-kmandi tal-VERTEX2F huma f'pari biex jiddefinixxu l-kantunieri ta 'fuq tax-xellug u tal-lemin ta'

ir-rettangolu.

image

image

image

image

2.5.4 Kitba ta 'listi ta' wiri

Il-kitba ta ’skrizzjonijiet ta’ lista ta ’wiri b’ wr32 () hija l-ħin u suxxettibbli għall-iżbalji, allura minflok a

funzjoni tista ’tintuża:

image

image

image

Il-kmand COLOR_RGB jibdel il-kulur tat-tpinġija kurrenti, li jagħti l-kulur lill-bitmap.

Il-kmand COLOR_A jibdel it-tpinġija kurrenti alfa, u jibdel it-trasparenza

tad-disinn: alfa ta '0 tfisser kompletament trasparenti u alfa ta' 255 hija kompletament

opak. Hawnhekk valur ta '150 jagħti effett parzjalment trasparenti.

image

2.5.7 VERTEX2II u VERTEX2F

Il-kmand VERTEX2II użat hawn fuq jippermetti biss koordinati pożittivi tal-iskrin. Jekk il-

bitmap huwa parzjalment barra mill-iskrin, pereżempju waqt scroll scroll, allura huwa meħtieġ li

speċifika l-koordinati tal-iskrin negattiv. Il-kmand VERTEX2F jippermetti negattiv

koordinati. Tippermetti wkoll koordinati frazzjonali, għax tispeċifika skrin (x, y) f '

unitajiet ta ’1/16 ta’ pixel.

Pereżempju, tiġbed l-istess bitmap fil-pożizzjoni tal-iskrin (-10, -10) bl-użu ta 'VERTEX2F:

image

image

image

2.5.9 Prestazzjoni

Il-grafika tal-magna m'għandha l-ebda bafer tal-qafas: tuża użi kompożitiva dinamika biex tibni kull wieħed

linja tal-wiri matul l-iskannjar. Minħabba dan, hemm ammont limitat ta ’żmien disponibbli għal

tfassal kull linja. Dan iż - żmien jiddependi fuq il - parametri ta 'l - iskennjar (REG_PCLK u

REG_HCYCLE) imma qatt mhu inqas minn 2048 ċikli ta ’l-arloġġ interni.

Xi limiti tal-prestazzjoni:

 It-tul tal-lista tal-wiri għandu jkun inqas minn istruzzjonijiet tal-2048, minħabba li

magna tal-grafika tieħu fetħiet tal-wirja tal-kmandijiet kull siegħa.

 Il-prestazzjoni tal-magna grafika li tbiddel il-pixel hija ta '4 pixels kull arloġġ, għal kwalunkwe

linja b’kmandijiet ta ’l-2048 tal-wiri għandha tkun il-prestazzjoni miġbuda tal-pixels

inqas minn 8192.

 Għal xi formati tal-bitmap, ir-rata tat-tpinġija hija 1 pixel kull arloġġ. Dawn huma

TEXT8X8, TEXTVGA u paletti.

 Għal pixel bilinear iffiltrat, ir-rata tat-tpinġija hija mnaqqsa għal ¼ pixel kull arloġġ.

Il-biċċa l-kbira tal-formati bitmap jiġbdu b'1 pixel kull arloġġ, u l-formati ta 'hawn fuq

(TEXT8X8, TEXTVGA u PALETTED) jiġbdu b'1 pixel kull 4 arloġġi.

image