הבית > חֲדָשׁוֹת > תוכן

דוגמה כיצד להשתמש אמולטור FT8xx ביישום דוגמאות FT8xx

Apr 26, 2019

3 באמצעות ספריית אמולטור FT8xx

פרק זה יספק דוגמה כיצד להשתמש באמולטור FT8xx במדגם FT8xx

יישום. משתמשים מוזמנים להכיר את יישום המדגם FT8xx

(ראה סעיף לדוגמה (+ EVE2) בעמוד הבא) לפני תחילת פרק זה.

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

ממשק אמולטור FT8xx מוגדר בקבצים הבאים:

"Ft800emu_inttypes.h": ההגדרה עבור סוג שלם עבור פלטפורמות שונות.

"Ft800emu_spi_i2c.h": SPI / I

הצהרת ממשק

"Ft800emu_emulator.h": ממשק כדי להתחיל את אמולטור

3.1 הפעל את אמולטור FT800

כדי לעשות שימוש אמולטור FT800, הפרויקט של המשתמשים נדרש להתקשר API

"FT800EMU :: Emulator.run" עם הפרמטר הספציפי. הספרייה אמולטור יופעל

כראוי ומוכן לקבל גישה באמצעות SPI / I

ממשק.

ראה איור 3 - התחל אמולטור FT8xx.

3.2 עבודה עם ממשק SPI / I2C.

ממשק SPI / I2C הוא ממשק הבקרה של FT800. FT800 אמולטור הספרייה מספקת את APIs ל

לדמות את אותו ממשק. מאז יישום מדגם FT800 בנויה שפת C, במקום

C + +, אחד פשוט C עטיפה API הוא הציג להלן כדי להקל על האמנה קורא.


#ifdef __cplusplus

extern "C" {

#endif

#ifdef MSVC_FT800EMU

#define BUFFER_OPTIMIZATION

#endif

בטל Ft_GpuEmu_SPII2C_begin ();

בטל Ft_GpuEmu_SPII2C_csLow ();

בטל Ft_GpuEmu_SPII2C_cs High ();

בטל 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

}

#endif

איור 4 - ממשק API לממשק C

היישום הוא כדלקמן:

בטל Ft_GpuEmu_SPII2C_begin ()

{

FT800EMU :: SPII2C.begin ();

}

בטל Ft_GpuEmu_SPII2C_cs נמוך ()

{

FT800EMU :: SPII2C.csLow ();

}

בטל Ft_GpuEmu_SPII2C_cs גובה ()

{

FT800EMU :: SPII2C.csHigh ();

}

בטל Ft_GpuEmu_SPII2C_end ()

{

FT800EMU :: SPII2C.end ();

}

uint8_t Ft_GpuEmu_SPII2C_transfer (נתוני uint8_t)

{

Return FT800EMU :: SPII2C.transfer (נתונים);

}

בטל 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); // דמה לקרוא בייט

}

בטל 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);

}

איור 5 - יישום API C

3.3 התאמת יישומים לדוגמה

היישום מדגם FT800 מעסיק שכבת הפשטת חומרה (HAL) כדי להפוך את היישום

לוגיקה עצמאית מפלטפורמת החומרה. זה מוגדר "FT_Gpu_Hal.c" והמשתמשים הם

הניחו שהוא מכיר אותו לפני שהוא מתקדם.

כדי להתאים את היישום לדוגמה על אמולטור FT800, השינויים המינימליים נדרשים: רק

ליישם את ממשקי ה- API המוגדרים ב- "FT_Gpu_Hal.c" להלן:

Ft_GpuEmu_SPII2C_end ();

}

ft_void_t Ft_Gpu_Hal_DeInit ()

{

}

/ * APIs לקריאה / כתיבה העברה ברציפות רק עם מערכת חיץ קטן * /

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 (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 * ערך מארח, ft_uint8_t)

{

Return Ft_GpuEmu_SPII2C_transfer (ערך);

}

ft_void_t Ft_Gpu_Hal_EndTransfer (Ft_Gpu_Hal_Context_t * מארח)

{

Ft_GpuEmu_SPII2C_cs גובה ();

host -> status = FT_GPU_HAL_OPENED;

}

ft_void_t Ft_Gpu_HostCommand (Ft_Gpu_Hal_Context_t * מארח, ft_uint8_t cmd)

{

// לא מיושם ב- FT800EMU. אין תכונה ניהול צריכת חשמל ב אמולטור.

}

ft_void_t Ft_Gpu_Hal_WrMem (Ft_Gpu_Hal_Context_t * host, ft_uint32_t addr, const

ft_uint8_t * חיץ, אורך ft_uint32_t)

{

ft_uint32_t SizeTransfered = 0;

(FT_GPU_WRITE, Addr);

בעוד (אורך--) {

Ft_Gpu_Hal_Transfer8 (מארח, * מאגר);

מאגר + +;

}

Ft_Gpu_Hal_EndTransfer (מארח);

}

ft_void_t Ft_Gpu_Hal_RdMem (Ft_Gpu_Hal_Context_t * host, ft_uint32_t addr, ft_uint8_t

* חיץ, אורך ft_uint32_t)

{

ft_uint32_t SizeTransfered = 0;

(FT_GPU_READ, Addr);

בעוד (אורך--) {

* buffer = Ft_Gpu_Hal_Transfer8 (host, 0);

מאגר + +;

}

Ft_Gpu_Hal_EndTransfer (מארח);

}

איור 6 - יישום שכבת הפשטת חומרה ב- API של אמולטור