info@panadisplay.com
Primjer kako koristiti FT8xx emulator u FT8xx primjeru aplikacije

Primjer kako koristiti FT8xx emulator u FT8xx primjeru aplikacije

Apr 26, 2019

3 Korištenje FT8xx biblioteke emulatora

Ovo poglavlje će dati primjer kako koristiti FT8xx emulator u FT8xx uzorku

aplikacija. Korisnici se ohrabruju da se upoznaju sa FT8xx aplikacijom

(pogledajte odjeljak Primjer aplikacije (+ EVE2) na sljedećoj stranici) prije pokretanja ovog poglavlja.

http://www.ftdichip.com/Support/SoftwareExamples/FT800_Projects.htm

Sučelje emulatora FT8xx definirano je u sljedećim datotekama:

“Ft800emu_inttypes.h”: definicija za cijeli broj za različite platforme.

“Ft800emu_spi_i2c.h”: SPI / I

Deklaracija 2C sučelja

“Ft800emu_emulator.h”: interfejs za pokretanje emulatora

3.1 Pokrenite FT800 emulator

Da bi se koristio FT800 emulator, korisnikov projekt je potreban da pozove API

“FT800EMU :: Emulator.run” sa specifičnim parametrom. Pokrenut će se biblioteka emulatora

ispravno i spremno za pristup kroz SPI / I

2C interface.

Pogledajte Slika 3 - Pokrenite FT8xx emulator.

3.2 Rad sa SPI / I2C interfejsom.

SPI / I2C sučelje je kontrolno sučelje FT800. FT800 emulatorska biblioteka pruža API-je

simulira isti interfejs. Budući da je FT800 uzorak aplikacija izgrađena u C jeziku, umjesto

C ++, jedan jednostavan C API omotač je uveden kao ispod kako bi olakšao konvenciju pozivanja.


#ifdef __cplusplus

extern "C" {

#endif

#ifdef MSVC_FT800EMU

#define BUFFER_OPTIMIZATION

#endif

void Ft_GpuEmu_SPII2C_begin ();

void Ft_GpuEmu_SPII2C_csLow ();

void Ft_GpuEmu_SPII2C_csHigh ();

void Ft_GpuEmu_SPII2C_end ();

void Ft_GpuEmu_SPII2C_StartRead (uint32_t addr);

uint8_t Ft_GpuEmu_SPII2C_transfer (uint8_t podaci);

void Ft_GpuEmu_SPII2C_StartWrite (uint32_t addr);

#ifdef __cplusplus

}

#endif

Slika 4 - API C interfejsa

Implementacija je kako slijedi:

void Ft_GpuEmu_SPII2C_begin ()

{\ T

FT800EMU :: SPII2C.begin ();

}

void Ft_GpuEmu_SPII2C_csLow ()

{\ T

FT800EMU :: SPII2C.csLow ();

}

void Ft_GpuEmu_SPII2C_csHigh ()

{\ T

FT800EMU :: SPII2C.csHigh ();

}

void Ft_GpuEmu_SPII2C_end ()

{\ T

FT800EMU :: SPII2C.end ();

}

uint8_t Ft_GpuEmu_SPII2C_transfer (podaci uint8_t)

{\ T

return FT800EMU :: SPII2C.transfer (data);

}

void Ft_GpuEmu_SPII2C_StartRead (uint32_t addr)

{\ T

Ft_GpuEmu_SPII2C_csLow ();

Ft_GpuEmu_SPII2C_transfer ((addr >> 16) & 0xFF);

Ft_GpuEmu_SPII2C_transfer ((addr >> 8) & 0xFF);

Ft_GpuEmu_SPII2C_transfer (addr & 0xFF);

Ft_GpuEmu_SPII2C_transfer (0); // Dummy Read Byte

}

void Ft_GpuEmu_SPII2C_StartWrite (uint32_t addr)

{\ T

Ft_GpuEmu_SPII2C_csLow ();

Ft_GpuEmu_SPII2C_transfer (((addr >> 16) & 0xFF) | 0x80);

Ft_GpuEmu_SPII2C_transfer ((addr >> 8) & 0xFF);

Ft_GpuEmu_SPII2C_transfer (addr & 0xFF);

}

Slika 5 - Implementacija C API-ja

3.3 Uzorak za adaptaciju aplikacije

Primjer FT800 koristi sloj apstrakcije hardvera (HAL) za izradu aplikacije

logika nezavisna od hardverske platforme. Definiše se u “FT_Gpu_Hal.c” i korisnici su

pretpostavlja se da je upoznat s njim prije nego što krene naprijed.

Da biste prilagodili primjerak aplikacije na emulatoru FT800, potrebne su minimalne promjene: samo

implementirati API-je definirane u “FT_Gpu_Hal.c” kako slijedi:

Ft_GpuEmu_SPII2C_end ();

}

ft_void_t Ft_Gpu_Hal_DeInit ()

{\ T

}

/ * API-ji za čitanje / pisanje prijenosa kontinuirano samo s malim buffer sustavom * /

ft_void_t Ft_Gpu_Hal_StartTransfer (Ft_Gpu_Hal_Context_t * host, FT_GPU_TRANSFERDIR_T

rw, ft_uint32_t addr)

{\ T

ako (FT_GPU_READ == rw) {

Ft_GpuEmu_SPII2C_StartRead (addr);

host-> status = FT_GPU_HAL_READING;

} else {

Ft_GpuEmu_SPII2C_StartWrite (addr);

host-> status = FT_GPU_HAL_WRITING;

}

}

ft_uint8_t Ft_Gpu_Hal_Transfer8 (Ft_Gpu_Hal_Context_t * host, ft_uint8_t vrijednost)

{\ T

return Ft_GpuEmu_SPII2C_transfer (vrijednost);

}

ft_void_t Ft_Gpu_Hal_EndTransfer (Ft_Gpu_Hal_Context_t * host)

{\ T

Ft_GpuEmu_SPII2C_csHigh ();

host-> status = FT_GPU_HAL_OPENED;

}

ft_void_t Ft_Gpu_HostCommand (Ft_Gpu_Hal_Context_t * host, ft_uint8_t cmd)

{\ T

// Nije implementirano u FT800EMU. Nema funkcije upravljanja energijom u emulatoru.

}

ft_void_t Ft_Gpu_Hal_WrMem (Ft_Gpu_Hal_Context_t * host, ft_uint32_t addr, const

ft_uint8_t * bafer, ft_uint32_t dužina)

{\ T

ft_uint32_t SizeTransffered = 0;

Ft_Gpu_Hal_StartTransfer (host, FT_GPU_WRITE, addr);

dok (dužina--) {

Ft_Gpu_Hal_Transfer8 (host, * buffer);

buffer ++;

}

Ft_Gpu_Hal_EndTransfer (host);

}

ft_void_t Ft_Gpu_Hal_RdMem (Ft_Gpu_Hal_Context_t * host, ft_uint32_t addr, ft_uint8_t

* bafer, ft_uint32_t dužina)

{\ T

ft_uint32_t SizeTransffered = 0;

Ft_Gpu_Hal_StartTransfer (host, FT_GPU_READ, addr);

dok (dužina--) {

* buffer = Ft_Gpu_Hal_Transfer8 (host, 0);

buffer ++;

}

Ft_Gpu_Hal_EndTransfer (host);

}

Slika 6 - Implementacija sloja apstrakcije hardvera u emulatorskom API-ju