Casa > Notícies > Contingut

Introducció a la biblioteca de l’emulador FT8xx

Apr 26, 2019

2 Introducció a la biblioteca de l'emulador FT8xx

2.1 Interfície de la biblioteca de l'emulador FT8xx

La interfície de la biblioteca de l'emulador FT8xx està escrita en C ++ i resideix en el nom "FT800EMU ::"

espai només. Dins de l’espai de nom "FT800EMU ::", hi ha dos mòduls "SPII2C" i

Interfície d'exposició "emulador". Aquí hi ha l’estructura:

image

Taula 1 - Estructura de la interfície de la biblioteca de l'emulador FT8xx

2.1.1 FT800EMU :: SPII2C.begin ()

 Prototip

void begin ();

 Descripció

Inicialitzeu el mòdul SPI / I2C de l’emulador

 Valor de devolució

Cap

 Paràmetre

Cap

2.1.2 FT800EMU :: SPII2C.end ()

 Prototip

void end ();

 Descripció

Desactiveu el mòdul SPI / I2C de l’emulador

 Valor de devolució

Cap

 Paràmetre

Cap


2.1.3 FT800EMU :: SPII2C.csLow ()

 Prototip

void csLow ();

 Descripció

Truqueu a aquesta API per iniciar una transferència SPI / I2C. És equivalent a baixar el pin de selecció del xip

el bus SPI / I2C al maquinari FT8xx. Per a mi

2C bus, aquesta funció és equivalent a començar a

missatge amb START.

 Valor de devolució

Cap

 Paràmetre

Cap


2.1.4 FT800EMU :: SPII2C.csHigh ()

 Prototip

void csHigh ();

 Descripció

Truqueu a aquesta API per finalitzar una transferència SPI / I2C. Per a un bus SPI, és equivalent a triar el xip

pin al SPI / I

Autobús 2C en maquinari FT8xx. Per a mi

2C bus, aquesta funció és equivalent a

finalitzeu un missatge amb un STOP.

 Valor de devolució

Cap

 Paràmetre

Cap


2.1.5 FT800EMU :: SPII2C.transfer ()

 Prototip

uint8_t transferència (dades uint8_t);

 Descripció

Trucar aquesta API és transferir un byte de / a l'emulador.

Les dades que s’enviaran s’especifiquen com a paràmetre, mentre que les dades que es rebran es donen com a

valor de retorn.

 Valor de devolució

Un byte de dades rebudes de l’emulador FT8xx si es tracta de transferència de lectura.

 Paràmetre

Un byte de dades enviat a l’emulador FT8xx. En cas de transferència de lectura SPI, aquest byte pot ser

qualsevol cosa.


2.1.6 FT800EMU :: Emulator.run ()

 Prototip

void run (const EmulatorParameters & params);

 Descripció

Trucar aquesta funció iniciarà l'emulador immediatament i el control de l'aplicació és

transferit a l’emulador. El comportament de l’emulador s’ha configurat a través del

Els paràmetres que es van passar a. Es cridarà el codi de l’aplicació a través de dos

funcions de devolució de trucades a l’estructura dels paràmetres. Aquesta API mai no tornarà, tret de l'emulador

és assassinat o el procés d’aplicació existeix.

 Valor de devolució

Cap

 Paràmetres

Comproveu el codi següent per obtenir més informació sobre la definició de paràmetres.


1) Definició de l'estructura de paràmetres

typedef struct

{

// Funció de microcontrolador anomenada abans de bucle.

void (* Setup) ();

// bucle continu de microcontrolador.

void (* Loop) ();

// Vegeu EmulatorFlags.

int Indicadors;

// mode emulador

FT8XXEMU_EmulatorMode Mode;

// Trucada després de l'actualització del teclat.

// La funció subministrada pot utilitzar Keyboard.isKeyDown (FT8XXEMU_KEY_F3)

// o FT8XXEMU_isKeyDown (FT8XXEMU_KEY_F3) funcions.

void (* Teclat) ();

// La pressió per defecte del ratolí, per defecte 0 (màxim).

// Vegeu REG_TOUCH_RZTRESH, etc.

uint32_t MousePressure;

// Freqüència externa. Vegeu CLK, etc.

uint32_t Freqüència externa;

// Reduir els fils del processador gràfic per nombre especificat, 0 per defecte

// Necessari quan es fa un treball molt pesat a la MCU o al coprocessador

uint32_t ReduceGraphicsThhreads;

// Funció de repòs per a l'ús de l'accelerador d'ús de fil MCU. Per defecte al sistema genèric

dormir

void (* MCUSleep) (int ms);

// Substitueix la ROM predefinida predeterminada amb una ROM personalitzada a partir d'un fitxer.

// NOTA: La cadena es copia i es pot distribuir després de la trucada a executar (...)

char * RomFilePath;

// Substitueix l’OTP integrat per defecte amb un OTP personalitzat des d’un fitxer.

// NOTA: La cadena es copia i es pot distribuir després de la trucada a executar (...)

char * OtpFilePath;

// Substitueix el ROM del coprocessador integrat.

// NOTA: La cadena es copia i es pot distribuir després de la trucada a executar (...)

char * CoprocessorRomFilePath;

// Mode gràfic sense controladors

// Establir aquesta devolució de trucada significa que no es crearà cap finestra

Els gràfics // renderitzats s'enviaran automàticament a aquesta funció.

// Per habilitar les funcions tàctils, les funcions

// Memory.setTouchScreenXY i Memory.resetTouchScreenXY han de ser

// trucada manualment des de l'aplicació amfitrió.

// La funcionalitat del teclat incorporat no és compatible i ha de ser

// implementat manualment quan s'utilitza aquest mode.

// El paràmetre de sortida és fals (0) quan la pantalla està desactivada.

// El contingut del punter de memòria intermèdia no està definit després d’aquest

// retorna la funció.

// Retorna false (0) quan l’aplicació ha de sortir, en cas contrari, torna true (1).

int (* gràfics) (int sortida, const argb8888 * buffer, uint32_t hsize, uint32_t

flagsize vsize, FT8XXEMU_FrameFlags);

// Gestor d'interrupcions

// void (* Interrupció) ();

// Callback d'excepció

void (* Exception) (missatge const char *);

// Sortida segura

void (* Close) ();

} FT8XXEMU_EmulatorParameters;

Figura 1: Definició de l’estructura “Paràmetres Emulatoris”


2) Marcar per configurar l'emulador

La mostra de codi enumerada que es mostra a continuació defineix la funció d’emulador amb la qual s’executarà. A

habilitar funcions específiques, podeu enumerar i assignar els valors de resultat a "O"

Camp "Banderes" a l’estructura de paràmetres "EmulatorParameters" anterior.

typedef enum

{

// permet utilitzar el teclat com a entrada (per defecte: activat)

FT8XXEMU_EmulatorEnableKeyboard = 0x01,

// permet l’àudio (per defecte: activat)

FT8XXEMU_EmulatorEnableAudio = 0x02,

// permet el coprocessador (per defecte: activat)

FT8XXEMU_EmulatorEnableCoprocessor = 0x04,

// habilita el ratolí com a tocar (per defecte: activat)

FT8XXEMU_EmulatorEnableMouse = 0x08,

// habilita els cursors de depuració (per defecte: activat)

FT8XXEMU_EmulatorEnableDebugShortkeys = 0x10,

// habilita el processador gràfic multithreading (predeterminat: activat)

FT8XXEMU_EmulatorEnableGraphicsMultithread = 0x20,

// permet degradar la qualitat dels gràfics dinàmics entrellaçant i deixant cadenes

(per defecte: activat)

FT8XXEMU_EmulatorEnableDynamicDegrade = 0x40,

// permet emular REG_PWM_DUTY desapareixent la visualització representada a negre

(predeterminat: desactivat)

FT8XXEMU_EmulatorEnableRegPwmDutyEmulation = 0x100,

// permet l’ús de la matriu de transformació tàctil (per defecte: activada)

FT8XXEMU_EmulatorEnableTouchTransformation = 0x200,

} FT8XXEMU_EmulatorFlags;

Figura 2: definició del camp de banderes


3) Configuració típica

Per obtenir un rendiment òptim, es recomana la configuració següent.

Les funcions de devolució de trucada "setup ()" i "loop ()" s'han de definir pel projecte d’usuari i ho faran

cridat per l’emulador. Es suposa que la funció "setup ()" s'executa una vegada per l’emulador per a la inicialització

propòsits. L'emulador cridarà periòdicament la funció "loop ()". Aquestes dues funcions asseguren

el projecte d'usuari es troba en el context de l'emulador. La manca d'assignació de "setup ()" i "loop ()"

a l’emulador no donarà cap entrada a l’emulador.

Normalment, la funció "setup ()" i "loop ()" en el projecte dels usuaris defineix la lògica principal i la pantalla

La llista s'enviarà a l’emulador mitjançant la interfície SPI / I2C.

#include "FT_Platform.h"

#ifdef MSVC_FT800EMU

#include

FT8XXEMU_EmulatorMode Ft_GpuEmu_Mode ();

extern "C" void setup ();

extern "C" bucle buit ();

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

{

FT8XXEMU_EmulatorParameters params;

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

params.Flags & = (~ FT8XXEMU_EmulatorEnableDynamicDegrade &

~ FT8XXEMU_EmulatorEnableRegPwmDutyEmulation);

params.Setup = setup;

params.Loop = bucle;

// params.Graphics = gràfics;

FT8XXEMU_run (FT8XXEMU_VERSION_API, & params);

retorn 0;

}

Figura 3: Inicieu l'emulador FT8xx