info@panadisplay.com
FT8xx Emulator Library Uvod

FT8xx Emulator Library Uvod

Apr 26, 2019

2 FT8xx Emulator Library Uvod

2.1 FT8xx interfejs biblioteke emulatora

Sučelje FT8xx Emulator knjižnice je napisano u C ++ i nalazi se u “FT800EMU ::” imenu

samo prostor. Unutar prostora naziva “FT800EMU ::” postoje dva modula “SPII2C” i

Interfejs “Emulator”. Evo strukture:

image

Tablica 1 - FT8xx struktura sučelja knjižnice emulatora

2.1.1 FT800EMU :: SPII2C.begin ()

 Prototip

void begin ();

 Opis

Inicijalizirajte SPI / I2C modul emulatora

 Povratna vrijednost

Nema

 Parametar

Nema

2.1.2 FT800EMU :: SPII2C.end ()

 Prototip

void end ();

 Opis

De-inicijalizirajte SPI / I2C modul emulatora

 Povratna vrijednost

Nema

 Parametar

Nema


2.1.3 FT800EMU :: SPII2C.csLow ()

 Prototip

void csLow ();

 Opis

Pozovite ovaj API da pokrenete jedan SPI / I2C transfer. To je ekvivalentno povlačenju pin-a za odabir čipa

SPI / I2C sabirnice u FT8xx hardveru. For I

2C bus, ova funkcija je ekvivalentna za pokretanje a

poruku sa START.

 Povratna vrijednost

Nema

 Parametar

Nema


2.1.4 FT800EMU :: SPII2C.csHigh ()

 Prototip

void csHigh ();

 Opis

Pozovite ovaj API da završite jedan SPI / I2C transfer. Za SPI magistralu, to je ekvivalentno izboru čipova

pin visoko na SPI / I

2C sabirnica u FT8xx hardveru. For I

2C bus, ova funkcija je ekvivalentna

završite poruku sa STOP.

 Povratna vrijednost

Nema

 Parametar

Nema


2.1.5 FT800EMU :: SPII2C.transfer ()

 Prototip

uint8_t transfer (uint8_t podaci);

 Opis

Pozivanje ovog API-ja je prijenos jednog bajta iz / u emulator.

Podaci koji se šalju se određuju kao parametar, dok se podaci koji se primaju daju kao

return value.

 Povratna vrijednost

Jedan bajt podataka primljenih od FT8xx emulatora ako se čita prijenos.

 Parametar

Jedan bajt podataka poslan na FT8xx emulator. U slučaju SPI čitanja, ovaj bajt može biti

ništa.


2.1.6 FT800EMU :: Emulator.run ()

 Prototip

void run (const EmulatorParameters & params);

 Opis

Pozivanje ove funkcije pokreće emulator odmah i kontrola aplikacije je

prenosi na emulator. Ponašanje emulatora je konfigurirano kroz

parametri koji su proslijeđeni. Kôd aplikacije će biti pozvan kroz dva

callback funkcije u strukturi parametara. Ovaj API se nikada neće vratiti, osim emulatora

je ubijen ili postoji proces prijave.

 Povratna vrijednost

Nema

 Parametri

Molimo provjerite sljedeći kod za detalje o definiranju parametara.


1) Definicija strukture parametara

typedef struct

{\ T

// Funkcija mikrokontrolera koja se zove prije petlje.

void (* Setup) ();

// Mikrokontroler kontinuirana petlja.

void (* Loop) ();

// Vidi EmulatorFlags.

int Flags;

// Emulator

FT8XXEMU_EmulatorMode Mode;

// Pozvan nakon ažuriranja tastature.

// Isporučena funkcija može koristiti Keyboard.isKeyDown (FT8XXEMU_KEY_F3)

// ili FT8XXEMU_isKeyDown (FT8XXEMU_KEY_F3) funkcije.

void (* Keyboard) ();

// Zadani pritisak miša, default 0 (maksimum).

// Pogledajte REG_TOUCH_RZTRESH, itd.

uint32_t MousePressure;

// Vanjska frekvencija. Vidi CLK, itd.

uint32_t ExternalFrequency;

// Smanjite niti grafičkog procesora specificiranim brojem, defaultom 0

// Neophodan je kada radite vrlo težak posao na MCU ili koprocesoru

uint32_t ReduceGraphicsThreads;

// Sleep funkcija za MCU navoj za upotrebu gasa. Podrazumevani generički sistem

spavati

void (* MCUSleep) (int ms);

// Zamjenjuje ugrađeni ROM s prilagođenim ROM-om iz datoteke.

// NAPOMENA: String se kopira i može se raskinuti nakon poziva za pokretanje (...)

char * RomFilePath;

// Zamjenjuje defaultni OTP sa prilagođenim OTP-om iz datoteke.

// NAPOMENA: String se kopira i može se raskinuti nakon poziva za pokretanje (...)

char * OtpFilePath;

// Zamjenjuje ugrađeni ROM koprocesora.

// NAPOMENA: String se kopira i može se raskinuti nakon poziva za pokretanje (...)

char * CoprocessorRomFilePath;

// Grafički pogon bez vozača

// Postavljanje ovog povratnog poziva znači da neće biti kreiran nijedan prozor i sve

// prikazana grafika će automatski biti poslana ovoj funkciji.

// Za omogućavanje funkcije dodira, funkcije

// Memory.setTouchScreenXY i Memory.resetTouchScreenXY moraju biti

// zove se ručno iz host aplikacije.

// Ugrađena funkcionalnost tastature nije podržana i mora biti

// implementira se ručno kada se koristi ovaj mod.

// Parametar izlaza je false (0) kada je ekran isključen.

// Sadržaj pokazivača međuspremnika je nedefiniran nakon toga

// funkcija se vraća.

// Vraća laž (0) kada aplikacija mora izaći, inače vrati true (1).

int (* Graphics) (int izlaz, const argb8888 * buffer, uint32_t hsize, uint32_t

vsize, FT8XXEMU_FrameFlags zastave);

// Interrupt handler

// void (* Interrupt) ();

// Izuzimanje povratnog poziva

void (* Izuzetak) (const char * poruka);

// Siguran izlaz

void (* Zatvori) ();

} FT8XXEMU_EmulatorParameters;

Slika 1 - Definicija strukture „EmulatorParameters“


2) Oznake za konfiguraciju emulatora

Uzorak enumerate koda prikazan u nastavku definira funkciju emulatora s kojom se pokreće. To

omogućite specifične funkcije, možete “OR” ove nabrajati i dodijeliti vrijednosti rezultata

Polje “Flags” u strukturi parametara “EmulatorParameters” iznad.

typedef enum

{\ T

// omogućava da se tastatura koristi kao ulaz (podrazumevano: uključeno)

FT8XXEMU_EmulatorEnableKeyboard = 0x01,

// omogućava audio (podrazumevano: uključeno)

FT8XXEMU_EmulatorEnableAudio = 0x02,

// omogućava koprocesor (podrazumevano: uključeno)

FT8XXEMU_EmulatorEnableCoprocessor = 0x04,

// omogućava miš kao dodir (zadano: uključeno)

FT8XXEMU_EmulatorEnableMouse = 0x08,

// omogućavanje debug kratkih (zadano: uključeno)

FT8XXEMU_EmulatorEnableDebugShortkeys = 0x10,

// omogući grafički procesor multithreading (podrazumevano: uključeno)

FT8XXEMU_EmulatorEnableGraphicsMultithread = 0x20,

// omogućiti degradiranje dinamičke grafičke kvalitete prepletanjem i ispuštanjem okvira

(zadano: uključeno)

FT8XXEMU_EmulatorEnableDynamicDegrade = 0x40,

// omogućiti emuliranje REG_PWM_DUTY tako da blijedi prikazani prikaz u crno

(zadano: isključeno)

FT8XXEMU_EmulatorEnableRegPwmDutyEmulation = 0x100,

// omogućavanje upotrebe matrice transformacije dodira (zadano: uključeno)

FT8XXEMU_EmulatorEnableTouchTransformation = 0x200,

} FT8XXEMU_EmulatorFlags;

Slika 2 - Definicija polja zastavica


3) Tipična postavka

Za optimalne performanse preporučuju se niže navedene postavke.

Callback funkcije “setup ()” i “loop ()” će biti definisane od strane korisničkog projekta i one će biti

pozvani od strane emulatora. Funkcija "setup ()" pretpostavlja se da se pokrene jednom od emulatora za inicijalizaciju

svrhe. Funkcija "loop ()" će periodično biti pozvana od strane emulatora. Ove dve funkcije osiguravaju

korisnički projekt je u kontekstu emulatora. Neuspjeh dodjeljivanja "setup ()" i "loop ()"

emulatoru neće rezultirati nikakav ulaz u emulator.

Obično, funkcija “setup ()” i “loop ()” u projektu korisnika definira glavnu logiku i prikaz

lista će biti poslana emulatoru preko SPI / I2C interfejsa.

#include "FT_Platform.h"

#ifdef MSVC_FT800EMU

#include

FT8XXEMU_EmulatorMode Ft_GpuEmu_Mode ();

extern "C" void setup ();

extern "C" void loop ();

ft_int32_t main (ft_int32_t argc, ft_char8_t * argv [])

{\ T

FT8XXEMU_EmulatorParameters params;

FT8XXEMU_defaults (FT8XXEMU_VERSION_API, & parametri, Ft_GpuEmu_Mode ());

params.Flags & = (~ FT8XXEMU_EmulatorEnableDynamicDegrade &

~ FT8XXEMU_EmulatorEnableRegPwmDutyEmulation);

params.Setup = postavljanje;

params.Loop = petlja;

// params.Graphics = grafika;

FT8XXEMU_run (FT8XXEMU_VERSION_API, & param);

return 0;

}

Slika 3 - Pokrenite emulator FT8xx