Id-dar > Aħbarijiet > Il-kontenut

Eżempju dwar kif tuża l-emulator FT8xx fl-applikazzjoni tal-kampjun tal-FT8xx

Apr 26, 2019

3 Uża l-librerija ta 'l-Emulator FT8xx

Dan il-kapitolu se jipprovdi eżempju dwar kif tuża l-emulatur FT8xx fil-kampjun FT8xx

applikazzjoni. L-utenti huma mħeġġa jiffamiljarizzaw ruħhom ma ’l-applikazzjoni tal-kampjun FT8xx

(ara t-taqsima Sample App (+ EVE2) fil-paġna li ġejja) qabel tibda dan il-kapitlu.

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

L-interface ta 'l-emulatur FT8xx hija definita fil-fajls li ġejjin:

“Ft800emu_inttypes.h”: id-definizzjoni għal numru sħiħ għal pjattaformi differenti.

“Ft800emu_spi_i2c.h”: l-SPI / I

2C dikjarazzjoni tal-interface

“Ft800emu_emulator.h”: l-interface biex tistartja l-emulator

3.1 Ibda l-emulatur FT800

Biex isir użu mill-emulatur FT800, il-proġett ta ’l-utenti huwa meħtieġ li jċempel l-API

“FT800EMU :: Emulator.run” bil-parametru speċifiku. Il-librerija ta 'l-emulatur ser tibda

xieraq u lest biex jiġi aċċessat permezz ta ’SPI / I

Interface 2C.

Jekk jogħġbok ara l-Figura 3 - Ibda l-emulatur FT8xx.

3.2 Ħidma ma 'l-interface SPI / I2C.

L-interface SPI / I2C hija l-interface ta 'kontroll ta' FT800. Il-librerija tal-emulatur FT800 tipprovdi l-APIs lil

tissimula l-istess interface. Peress li l-applikazzjoni tal-kampjun FT800 hija mibnija f’lingwa C, minflok

C ++, tgeżwir C API sempliċi huwa introdott kif imniżżel hawn taħt biex titħaffef il-konvenzjoni tas-sejħa.


#ifdef __cplusplus

barra "C" {

#endif

#ifdef MSVC_FT800EMU

#definixxi BUFFER_OPTIMIZATION

#endif

null Ft_GpuEmu_SPII2C_begin ();

null Ft_GpuEmu_SPII2C_csLow ();

null Ft_GpuEmu_SPII2C_csHigh ();

null Ft_GpuEmu_SPII2C_end ();

null Ft_GpuEmu_SPII2C_StartRead (uint32_t addr);

uint8_t Ft_GpuEmu_SPII2C_transfer (dejta uint8_t);

null Ft_GpuEmu_SPII2C_StartWrite (uint32_t addr);

#ifdef __cplusplus

}

#endif

Figura 4 - L-API interface C

L-implimentazzjoni hija kif ġej:

null Ft_GpuEmu_SPII2C_begin ()

{

FT800EMU :: SPII2C.begin ();

}

null Ft_GpuEmu_SPII2C_csLow ()

{

FT800EMU :: SPII2C.csLow ();

}

null Ft_GpuEmu_SPII2C_csHigh ()

{

FT800EMU :: SPII2C.csHigh ();

}

null Ft_GpuEmu_SPII2C_end ()

{

FT800EMU :: SPII2C.end ();

}

uint8_t Ft_GpuEmu_SPII2C_transfer (dejta uint8_t)

{

ritorn FT800EMU :: SPII2C.transfer (data);

}

null Ft_GpuEmu_SPII2C_StartRead (uint32_t addr)

{

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); // Byte Aqra Dummy

}

null Ft_GpuEmu_SPII2C_StartWrite (uint32_t addr)

{

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

}

Figura 5 - L-implimentazzjoni ta 'C API

3.3 Adattament tal-Kampjun għall-Applikazzjoni

L-applikazzjoni tal-kampjun tal-FT800 tuża Saff ta 'Abstrazzjoni tal-Ħardwer (HAL) biex tagħmel l-applikazzjoni

loġika indipendenti mill-pjattaforma tal-hardware. Huwa definit f '“FT_Gpu_Hal.c” u l-utenti huma

jassumi li huma familjari miegħu qabel ma jimxu 'l quddiem.

Biex l-applikazzjoni tal-kampjun tiġi adattata fuq l-emulatur FT800, il-bidliet minimi huma meħtieġa: just

jimplimenta l-APIs definiti f '“FT_Gpu_Hal.c” kif ġej:

Ft_GpuEmu_SPII2C_end ();

}

ft_void_t Ft_Gpu_Hal_DeInit ()

{

}

/ * L-APIs għat-trasferiment tal-qari / kitba kontinwament biss b'sistema żgħira ta 'bafer * /

ft_void_t Ft_Gpu_Hal_StartTransfer (Ft_Gpu_Hal_Context_t * host, FT_GPU_TRANSFERDIR_T

rw, ft_uint32_t addr)

{

jekk (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, valur ft_uint8_t)

{

ritorn Ft_GpuEmu_SPII2C_transfer (valur);

}

ft_void_t Ft_Gpu_Hal_EndTransfer (Ft_Gpu_Hal_Context_t * host)

{

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)

{

// Mhux implimentat f'FT800EMU. Ebda karatteristika ta 'Ġestjoni tal-Enerġija f'Emulator.

}

ft_void_t Ft_Gpu_Hal_WrMem (Ft_Gpu_Hal_Context_t * host, ft_uint32_t addr, const

ft_uint8_t * buffer, ft_uint32_t tul)

{

ft_uint32_t SizeTransfered = 0;

Ft_Gpu_Hal_StartTransfer (host, FT_GPU_WRITE, addr);

filwaqt li (it-tul--) {

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, tul ft_uint32_t)

{

ft_uint32_t SizeTransfered = 0;

Ft_Gpu_Hal_StartTransfer (host, FT_GPU_READ, addr);

filwaqt li (it-tul--) {

* buffer = Ft_Gpu_Hal_Transfer8 (host, 0);

buffer ++;

}

Ft_Gpu_Hal_EndTransfer (host);

}

Figura 6 - Implimentazzjoni tas-Saff tal-Abstrazzjoni tal-Ħardwer fl-API emulator