گھر > خبریں > مواد

مثال کے طور پر FT8xx ایمیمٹر FT8xx نمونہ ایپلی کیشنز میں کیسے استعمال کریں

Apr 26, 2019

3 FT8xx ایمولٹر لائبریری کا استعمال کرتے ہوئے

یہ باب FT8xx کے نمونے میں FT8xx ایمولیٹر کو استعمال کرنے کے لئے کس طرح ایک مثال فراہم کرے گا

درخواست صارفین کو FT8xx نمونے کی درخواست کے ساتھ خود کو واقف کرنے کے لئے حوصلہ افزائی کی جاتی ہے

(مندرجہ ذیل صفحے پر سیکشن نمونہ ایپ دیکھیں (+ EVE2)) اس باب کو شروع کرنے سے پہلے.

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

FT8xx ایمولٹر انٹرفیس درج ذیل فائلوں میں بیان کی گئی ہے:

"ft800emu_inttypes.h": مختلف پلیٹ فارمز کے لئے انوگر قسم کی تعریف.

"ft800emu_spi_i2c.h": SPI / I

2C انٹرفیس اعلان

"ft800emu_emulator.h": emulator شروع کرنے کے لئے انٹرفیس

3.1 FT800 emulator شروع کریں

FT800 ایمیوٹرٹر کا استعمال کرنے کے لئے، صارف کے منصوبے کو API کو کال کرنے کی ضرورت ہے

مخصوص پیرامیٹر کے ساتھ "FT800EMU :: Emulator.run". ایمولیٹر لائبریری شروع کی جائے گی

مناسب طریقے سے اور SPI / I کے ذریعہ تک رسائی حاصل کرنے کے لئے تیار ہے

2C انٹرفیس.

براہ کرم 3 شکل دیکھیں - FT8xx ایمولیٹر شروع کریں.

3.2 ایس پی آئی / I2C انٹرفیس کے ساتھ کام کرنا.

SPI / I2C انٹرفیس FT800 کا کنٹرول انٹرفیس ہے. FT800 ایمولیٹر لائبریری API کو فراہم کرتا ہے

ایک ہی انٹرفیس کو ضم. چونکہ FT800 نمونہ کی درخواست سی زبان میں تعمیر کی جاتی ہے، بجائے

C ++، ایک آسان سی اے پی اے پی واپر کالر کنونشن کو کم کرنے کے لئے ذیل میں متعارف کرایا جاتا ہے.


#ifdef __cplusplus

extern "C" {

#ختم کرو اگر

#ifdef MSVC_FT800EMU

#define BUFFER_OPTIMIZATION

#ختم کرو اگر

فاصلہ Ft_GpuEmu_SPII2C_begin ()؛

باطل کریں Ft_GpuEmu_SPII2C_cs لو ()؛

باطل کریں Ft_GpuEmu_SPII2C_csHigh ()؛

باطل کریں Ft_GpuEmu_SPII2C_end ()؛

باطل کریں Ft_GpuEmu_SPII2C_StartRead (uint32_t addr)؛

uint8_t Ft_GpuEmu_SPII2C_transfer (uint8_t ڈیٹا)؛

باطل کریں Ft_GpuEmu_SPII2C_StartWrite (uint32_t addr)؛

#ifdef __cplusplus

}

#ختم کرو اگر

شکل 4 - سی انٹرفیس API

یہ عمل ذیل میں ہے:

باطل کریں Ft_GpuEmu_SPII2C_begin ()

{

FT800EMU :: SPII2C.begin ()؛

}

باطل کریں Ft_GpuEmu_SPII2C_cs لون ()

{

FT800EMU :: SPII2C.csLow ()؛

}

باطل کریں Ft_GpuEmu_SPII2C_csHigh ()

{

FT800EMU :: SPII2C.csHigh ()؛

}

باطل کریں Ft_GpuEmu_SPII2C_end ()

{

FT800EMU :: SPII2C.end ()؛

}

uint8_t Ft_GpuEmu_SPII2C_transfer (uint8_t ڈیٹا)

{

واپسی FT800EMU :: SPII2C.transfer (ڈیٹا)؛

}

باطل کریں Ft_GpuEmu_SPII2C_StartRead (uint32_t addr)

{

Ft_GpuEmu_SPII2C_csLow ()؛

Ft_GpuEmu_SPII2C_transfer ((اضافی >> 16) اور 0xFF)؛

Ft_GpuEmu_SPII2C_transfer ((اضافی >> 8) اور 0xFF)؛

Ft_GpuEmu_SPII2C_transfer (اضافی & 0xFF)؛

Ft_GpuEmu_SPII2C_transfer (0)؛ // ڈمی پڑھیں بائٹ

}

باطل کریں Ft_GpuEmu_SPII2C_StartWrite (uint32_t addr)

{

Ft_GpuEmu_SPII2C_csLow ()؛

Ft_GpuEmu_SPII2C_transfer (((اضافی >> 16) اور 0xFF) | 0x80)؛

Ft_GpuEmu_SPII2C_transfer ((اضافی >> 8) اور 0xFF)؛

Ft_GpuEmu_SPII2C_transfer (اضافی & 0xFF)؛

}

شکل 5 - سی اے کے عمل درآمد

3.3 نمونہ ایپلیکیشن موافقت

FT800 نمونہ ایپلی کیشنز کو درخواست دینے کے لئے ہارڈویئر ابھارکشن پرت (HAL) کو ملازمت دیتا ہے

ہارڈویئر پلیٹ فارم سے منطقی منطق. یہ "FT_Gpu_Hal.c" میں بیان کیا گیا ہے اور صارفین ہیں

آگے بڑھنے سے پہلے اس سے واقف ہونے کا فرض کیا گیا تھا.

FT800 emulator پر نمونہ کی درخواست کو اپنانے کے لئے، کم از کم تبدیلیوں کی ضرورت ہے: صرف

مندرجہ بالا "FT_Gpu_Hal.c" میں وضاحت کردہ APIs کو لاگو کریں:

Ft_GpuEmu_SPII2C_end ()؛

}

ft_void_t Ft_Gpu_Hal_DeInit ()

{

}

/ * صرف چھوٹے بفر کے نظام کے ساتھ مسلسل مسلسل پڑھنے / تحریری لکھنے کے لئے API * /

ft_void_t Ft_Gpu_Hal_StartTransfer (Ft_Gpu_Hal_Context_t * میزبان، FT_GPU_TRANSFERDIR_T

RW، ft_uint32_t addr)

{

اگر (FT_GPU_READ == rw) {

Ft_GpuEmu_SPII2C_StartRead (اضافی)؛

میزبان - حیثیت = FT_GPU_HAL_READING؛

} else {

Ft_GpuEmu_SPII2C_StartWrite (addr)؛

میزبان - حیثیت = FT_GPU_HAL_WRITING؛

}

}

ft_uint8_t Ft_Gpu_Hal_Transfer8 (Ft_Gpu_Hal_Context_t * میزبان، ft_uint8_t قیمت)

{

واپسی FI_GPUEmu_SPII2C_transfer (قیمت)؛

}

ft_void_t Ft_Gpu_Hal_EndTransfer (Ft_Gpu_Hal_Context_t * میزبان)

{

Ft_GpuEmu_SPII2C_csHigh ()؛

میزبان - حیثیت = FT_GPU_HAL_OPENED؛

}

ft_void_t Ft_Gpu_Host کمانڈ (Ft_Gpu_Hal_Context_t * میزبان، ft_uint8_t cmd)

{

// FT800EMU میں لاگو نہیں کیا گیا. ایمولٹر میں کوئی پاور مینجمنٹ کی خصوصیت نہیں ہے.

}

ft_void_t Ft_Gpu_Hal_WrMem (Ft_Gpu_Hal_Context_t * میزبان، ft_uint32_t addr، const

ft_uint8_t * بفر، ft_uint32_t لمبائی)

{

ft_uint32_t سائز = منتقلی = 0؛

Ft_Gpu_Hal_StartTransfer (میزبان، FT_GPU_WITE، اضافی)؛

جبکہ (لمبائی -) {

Ft_Gpu_Hal_Transfer8 (میزبان، * بفر)؛

بفر ++؛

}

Ft_Gpu_Hal_EndTransfer (میزبان)؛

}

ft_void_t Ft_Gpu_Hal_RdMem (Ft_Gpu_Hal_Context_t * میزبان، ft_uint32_t addr، ft_uint8_t

* بفر، ft_uint32_t لمبائی)

{

ft_uint32_t سائز = منتقلی = 0؛

Ft_Gpu_Hal_StartTransfer (میزبان، FT_GPU_READ، اضافی)؛

جبکہ (لمبائی -) {

* بفر = Ft_Gpu_Hal_Transfer8 (میزبان، 0)؛

بفر ++؛

}

Ft_Gpu_Hal_EndTransfer (میزبان)؛

}

شناخت 6 - ایمولیٹر API میں ہارڈویئر خلاصہ پرت پر عمل درآمد