Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of FT810 by
FT_Gpu_Hal.h
00001 /*! 00002 * \file FT_GPU_HAL.h 00003 * 00004 00005 Curt added Load_raw 7/22/16 00006 00007 00008 00009 * \author FTDI 00010 * \date 2013.04.24 00011 * 00012 * Copyright 2013 Future Technology Devices International Limited 00013 * 00014 * Project: FT813 or EVE compatible silicon 00015 * File Description: 00016 * This file defines the generic APIs of host access layer for the FT813 or EVE compatible silicon. 00017 * Application shall access FT813 or EVE resources over these APIs. In addition, there are 00018 * some helper functions defined for FT813 coprocessor engine as well as host commands. 00019 * Rivision History: 00020 * ported to mbed by Peter Drescher, DC2PD 2014 00021 * 00022 */ 00023 00024 #ifndef FT_GPU_HAL_H 00025 #define FT_GPU_HAL_H 00026 00027 #include "mbed.h" 00028 #include "FT_DataTypes.h" 00029 00030 typedef enum { 00031 FT_GPU_I2C_MODE = 0, 00032 FT_GPU_SPI_MODE, 00033 00034 FT_GPU_MODE_COUNT, 00035 FT_GPU_MODE_UNKNOWN = FT_GPU_MODE_COUNT 00036 } FT_GPU_HAL_MODE_E; 00037 00038 typedef enum { 00039 OPENED, 00040 READING, 00041 WRITING, 00042 CLOSED, 00043 STATUS_COUNT, 00044 STATUS_ERROR = STATUS_COUNT 00045 } FT_GPU_HAL_STATUS_E; 00046 00047 typedef struct { 00048 ft_uint8_t reserved; 00049 } Ft_Gpu_App_Context_t; 00050 00051 typedef struct { 00052 /* Total number channels for libmpsse */ 00053 ft_uint32_t TotalChannelNum; 00054 } Ft_Gpu_HalInit_t; 00055 00056 typedef enum { 00057 FT_GPU_READ = 0, 00058 FT_GPU_WRITE, 00059 } FT_GPU_TRANSFERDIR_T; 00060 00061 00062 typedef struct { 00063 ft_uint32_t length; //IN and OUT 00064 ft_uint32_t address; 00065 ft_uint8_t *buffer; 00066 } Ft_Gpu_App_Transfer_t; 00067 00068 typedef struct { 00069 char name[50]; 00070 uint32_t addr; 00071 uint32_t size; 00072 uint16_t fmt; 00073 uint16_t w; 00074 uint16_t h; 00075 } Ft_Gpu_App_Bitmap_t; 00076 00077 class FT813 00078 { 00079 public: 00080 FT813(PinName mosi, 00081 PinName miso, 00082 PinName sck, 00083 PinName ss, 00084 PinName intr, 00085 PinName pd); 00086 00087 private: 00088 SPI _spi; 00089 DigitalOut _ss; 00090 DigitalOut _pd; 00091 InterruptIn _f800_isr; 00092 ft_uint16_t _count; 00093 ft_uint32_t _address; 00094 ft_uint32_t _addresses[64]; 00095 ft_uint16_t _bitmap_count; 00096 ft_uint32_t _orientation; 00097 ft_uint16_t _bitmapCount; 00098 ft_uint32_t _bitmapAddress; 00099 00100 Ft_Gpu_App_Bitmap_t _bitmaps[64]; 00101 00102 //uint32_t screenshot[800*480]; 00103 00104 00105 public: 00106 /* Global used for buffer optimization */ 00107 //Ft_Gpu_Hal_Context_t host,*phost; 00108 Ft_Gpu_App_Context_t app_header; 00109 ft_uint16_t cmd_fifo_wp; //coprocessor fifo write pointer 00110 ft_uint16_t dl_buff_wp; //display command memory write pointer 00111 FT_GPU_HAL_STATUS_E status; //OUT 00112 ft_void_t* hal_handle; //IN/OUT 00113 ft_uint32_t CmdBuffer_Index; 00114 ft_uint32_t DlBuffer_Index; 00115 ft_int16_t DispWidth; 00116 ft_int16_t DispHeight; 00117 ft_int16_t DispHCycle; 00118 ft_int16_t DispHOffset; 00119 ft_int16_t DispHSync0; 00120 ft_int16_t DispHSync1; 00121 ft_int16_t DispVCycle; 00122 ft_int16_t DispVOffset; 00123 ft_int16_t DispVSync0; 00124 ft_int16_t DispVSync1; 00125 ft_uint8_t DispPCLK; 00126 ft_char8_t DispSwizzle; 00127 ft_char8_t DispPCLKPol; 00128 00129 00130 ft_void_t BootupConfig(void); 00131 ft_bool_t Bootup(void); 00132 00133 00134 /*The basic APIs Level 1*/ 00135 ft_bool_t Init(); 00136 ft_bool_t Open(); 00137 00138 /*The APIs for reading/writing transfer continuously only with small buffer system*/ 00139 ft_void_t StartTransfer(FT_GPU_TRANSFERDIR_T rw,ft_uint32_t addr); 00140 ft_uint8_t Transfer8(ft_uint8_t value); 00141 ft_uint16_t Transfer16(ft_uint16_t value); 00142 ft_uint32_t Transfer32(ft_uint32_t value); 00143 ft_void_t EndTransfer(); 00144 00145 /*Read & Write APIs for both burst and single transfer,depending on buffer size*/ 00146 ft_void_t Read(Ft_Gpu_App_Transfer_t *transfer); 00147 ft_void_t Write(Ft_Gpu_App_Transfer_t *transfer); 00148 00149 ft_void_t Close(); 00150 ft_void_t DeInit(); 00151 00152 /*Helper function APIs Read*/ 00153 ft_uint8_t Rd8(ft_uint32_t addr); 00154 ft_uint16_t Rd16(ft_uint32_t addr); 00155 ft_uint32_t Rd32(ft_uint32_t addr); 00156 00157 /*Helper function APIs Write*/ 00158 ft_void_t Wr8(ft_uint32_t addr, ft_uint8_t v); 00159 ft_void_t Wr16(ft_uint32_t addr, ft_uint16_t v); 00160 ft_void_t Wr32(ft_uint32_t addr, ft_uint32_t v); 00161 00162 /*******************************************************************************/ 00163 /*******************************************************************************/ 00164 /*APIs for coprocessor Fifo read/write and space management*/ 00165 ft_void_t Updatecmdfifo(ft_uint16_t count); 00166 ft_void_t WrCmd32(ft_uint32_t cmd); 00167 ft_void_t WrCmdBuf(ft_uint8_t *buffer,ft_uint16_t count); 00168 ft_void_t WaitCmdfifo_empty(); 00169 ft_void_t ResetCmdFifo(); 00170 ft_void_t CheckCmdBuffer(ft_uint16_t count); 00171 ft_void_t ResetDLBuffer(); 00172 00173 ft_void_t StartCmdTransfer(FT_GPU_TRANSFERDIR_T rw, ft_uint16_t count); 00174 ft_void_t Powercycle(ft_bool_t up); 00175 00176 00177 /*******************************************************************************/ 00178 /*******************************************************************************/ 00179 /*APIs for Host Commands*/ 00180 typedef enum { 00181 FT_GPU_INTERNAL_OSC = 0x48, //default 00182 FT_GPU_EXTERNAL_OSC = 0x44, 00183 } FT_GPU_PLL_SOURCE_T; 00184 typedef enum { 00185 FT_GPU_PLL_48M = 0x62, //default 00186 FT_GPU_PLL_36M = 0x61, 00187 FT_GPU_PLL_24M = 0x64, 00188 } FT_GPU_PLL_FREQ_T; 00189 00190 typedef enum { 00191 FT_GPU_ACTIVE_M = 0x00, 00192 FT_GPU_STANDBY_M = 0x41,//default 00193 FT_GPU_SLEEP_M = 0x42, 00194 FT_GPU_POWERDOWN_M = 0x50, 00195 } FT_GPU_POWER_MODE_T; 00196 00197 #define FT_GPU_CORE_RESET (0x68) 00198 00199 ft_int32_t hal_strlen(const ft_char8_t *s); 00200 ft_void_t Sleep(ft_uint16_t ms); 00201 ft_void_t ClockSelect(FT_GPU_PLL_SOURCE_T pllsource); 00202 ft_void_t PLL_FreqSelect(FT_GPU_PLL_FREQ_T freq); 00203 ft_void_t PowerModeSwitch(FT_GPU_POWER_MODE_T pwrmode); 00204 ft_void_t CoreReset(); 00205 //ft_void_t Ft_Gpu_Hal_StartTransfer( ,FT_GPU_TRANSFERDIR_T rw,ft_uint32_t addr); 00206 ft_void_t WrMem(ft_uint32_t addr, const ft_uint8_t *buffer, ft_uint32_t length); 00207 ft_void_t WrMemFromFlash(ft_uint32_t addr,const ft_prog_uchar8_t *buffer, ft_uint32_t length); 00208 ft_void_t WrCmdBufFromFlash(FT_PROGMEM ft_prog_uchar8_t *buffer,ft_uint16_t count); 00209 ft_void_t RdMem(ft_uint32_t addr, ft_uint8_t *buffer, ft_uint32_t length); 00210 ft_void_t WaitLogo_Finish(); 00211 ft_uint8_t TransferString(const ft_char8_t *string); 00212 ft_void_t HostCommand(ft_uint8_t cmd); 00213 ft_int32_t Dec2Ascii(ft_char8_t *pSrc,ft_int32_t value); 00214 00215 00216 ft_void_t DLstart(); 00217 ft_void_t Swap(); 00218 ft_void_t ColdStart(); 00219 ft_void_t Interrupt(ft_uint32_t ms); 00220 ft_void_t Append(ft_uint32_t ptr, ft_uint32_t num); 00221 ft_void_t RegRead(ft_uint32_t ptr, ft_uint32_t result); 00222 ft_void_t MemWrite(ft_uint32_t ptr, ft_uint32_t num); 00223 ft_void_t Inflate(ft_uint32_t ptr); 00224 ft_void_t LoadImage(ft_uint32_t ptr, ft_uint32_t options); 00225 ft_void_t MediaFifo(ft_uint32_t ptr, ft_uint32_t size); 00226 ft_void_t PlayVideo(ft_uint32_t opts); 00227 ft_void_t VideoStart(); 00228 ft_void_t VideoFrame(ft_uint32_t dst, ft_uint32_t ptr); 00229 ft_void_t Memcrc(ft_uint32_t ptr, ft_uint32_t num, ft_uint32_t result); 00230 ft_void_t MemZero(ft_uint32_t ptr, ft_uint32_t num); 00231 ft_void_t MemSet(ft_uint32_t ptr, ft_uint32_t value, ft_uint32_t num); 00232 ft_void_t Memcpy(ft_uint32_t dest, ft_uint32_t src, ft_uint32_t num); 00233 ft_void_t Button(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00234 ft_void_t Clock(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t h, ft_uint16_t m, ft_uint16_t s, ft_uint16_t ms); 00235 ft_void_t FgColor(ft_uint32_t c); 00236 ft_void_t BgColor(ft_uint32_t c); 00237 ft_void_t GradColor(ft_uint32_t c); 00238 ft_void_t Gauge(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t major, ft_uint16_t minor, ft_uint16_t val, ft_uint16_t range); 00239 ft_void_t Gradient(ft_int16_t x0, ft_int16_t y0, ft_uint32_t rgb0, ft_int16_t x1, ft_int16_t y1, ft_uint32_t rgb1); 00240 ft_void_t Keys(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00241 ft_void_t Progress(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t range); 00242 ft_void_t Scrollbar(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t size, ft_uint16_t range); 00243 ft_void_t Slider(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_uint16_t options, ft_uint16_t val, ft_uint16_t range); 00244 ft_void_t Dial(ft_int16_t x, ft_int16_t y, ft_int16_t r, ft_uint16_t options, ft_uint16_t val); 00245 ft_void_t Toggle(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t font, ft_uint16_t options, ft_uint16_t state, const ft_char8_t* s); 00246 ft_void_t Text(ft_int16_t x, ft_int16_t y, ft_int16_t font, ft_uint16_t options, const ft_char8_t* s); 00247 ft_void_t SetBase(ft_uint32_t base); 00248 ft_void_t Number(ft_int16_t x, ft_int16_t y, ft_int16_t font, ft_uint16_t options, ft_int32_t n); 00249 ft_void_t LoadIdentity(); 00250 ft_void_t SetMatrix(); 00251 ft_void_t GetMatrix(ft_int32_t a, ft_int32_t b, ft_int32_t c, ft_int32_t d, ft_int32_t e, ft_int32_t f); 00252 ft_void_t GetPtr(ft_uint32_t result); 00253 ft_void_t GetProps(ft_uint32_t ptr, ft_uint32_t w, ft_uint32_t h); 00254 ft_void_t Scale(ft_int32_t sx, ft_int32_t sy); 00255 ft_void_t Rotate(ft_int32_t a); 00256 ft_void_t Translate(ft_int32_t tx, ft_int32_t ty); 00257 ft_void_t Calibrate(ft_uint32_t result); 00258 ft_void_t SetRotate(ft_uint32_t r); 00259 ft_void_t Spinner(ft_int16_t x, ft_int16_t y, ft_uint16_t style, ft_uint16_t scale); 00260 ft_void_t ScreenSaver(); 00261 ft_void_t Sketch(ft_int16_t x, ft_int16_t y, ft_uint16_t w, ft_uint16_t h, ft_uint32_t ptr, ft_uint16_t format); 00262 ft_void_t Stop(); 00263 ft_void_t SetFont(ft_uint32_t font, ft_uint32_t ptr); 00264 ft_void_t SetFont2(ft_uint32_t font, ft_uint32_t ptr, ft_uint32_t firstchar); 00265 ft_void_t SetScratch(ft_uint32_t handle); 00266 ft_void_t RomFont(ft_uint32_t font, ft_uint32_t rom_slot); 00267 ft_void_t Track(ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h, ft_int16_t tag); 00268 ft_void_t Snapshot(ft_uint32_t ptr); 00269 ft_void_t Snapshot2(ft_uint32_t fmt, ft_uint32_t ptr, ft_int16_t x, ft_int16_t y, ft_int16_t w, ft_int16_t h); 00270 ft_void_t SetBitmap(ft_int32_t addr, ft_int16_t fmt, ft_uint16_t width, ft_uint16_t height); 00271 ft_void_t Logo(); 00272 00273 ft_void_t Bitmap_Transform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00274 00275 00276 ft_void_t SendCmd(ft_uint32_t cmd); 00277 ft_void_t SendStr(const ft_char8_t *s); 00278 ft_void_t StartFunc(ft_uint16_t count); 00279 // ft_void_t EndFunc(ft_uint16_t count); 00280 ft_void_t EndFunc(); 00281 00282 ft_void_t TouchTransform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00283 ft_void_t BitmapTransform(ft_int32_t x0, ft_int32_t y0, ft_int32_t x1, ft_int32_t y1, ft_int32_t x2, ft_int32_t y2, ft_int32_t tx0, ft_int32_t ty0, ft_int32_t tx1, ft_int32_t ty1, ft_int32_t tx2, ft_int32_t ty2, ft_uint16_t result); 00284 ft_void_t MemCrc(ft_uint32_t ptr, ft_uint32_t num, ft_uint32_t result); 00285 00286 ft_uint16_t fifo_Freespace(); 00287 00288 ft_void_t DL(ft_uint32_t cmd); 00289 ft_void_t WrDlCmd_Buffer(ft_uint32_t cmd); 00290 ft_void_t Flush_DL_Buffer(); 00291 ft_void_t Flush_Co_Buffer(); 00292 ft_void_t fadeout(); 00293 ft_void_t fadein(); 00294 ft_void_t DLSwap(ft_uint8_t DL_Swap_Type); 00295 00296 ft_void_t Point(ft_int16_t x, ft_int16_t y, ft_uint16_t size); 00297 ft_void_t Line(ft_int16_t x0, ft_int16_t y0, ft_int16_t x1, ft_int16_t y1, ft_int16_t width); 00298 ft_void_t Rect(ft_int16_t x0, ft_int16_t y0, ft_int16_t x1, ft_int16_t y1, ft_int16_t corner); 00299 ft_void_t RectWH(ft_int16_t x0, ft_int16_t y0, ft_int16_t w, ft_int16_t h, ft_int16_t corner); 00300 ft_uint8_t LoadJpg(char* filename, ft_int16_t* x_size, ft_int16_t* y_size); 00301 ft_uint8_t LoadPng(char* filename, ft_int16_t* x_size, ft_int16_t* y_size); 00302 //Curt added Load_raw 7/22/16 00303 int LoadRaw(char* filename); 00304 int LoadRawFile(ft_uint32_t address, char* filename); 00305 00306 void FillBitmap(ft_int16_t bitmap_number); 00307 void ClearBitmapCount(void); 00308 ft_uint32_t ReadBigInt32(unsigned char* data, ft_uint32_t offset); 00309 00310 ft_uint8_t Jpg(char *jpg_filename, int x, int y); 00311 ft_uint8_t Png(char *png_filename, int x, int y); 00312 ft_uint8_t Png(char *png_filename, int x, int y, ft_int32_t address); 00313 00314 ft_uint8_t JpgSplash(char *jpg_filename, ft_uint8_t r, ft_uint8_t g, ft_uint8_t b); 00315 00316 ft_uint16_t CoProFIFO_FreeSpace(void); 00317 void Wait4CoProFIFO(ft_uint32_t room); 00318 void Wait4CoProFIFOEmpty(void); 00319 ft_uint8_t CheckIfCoProFIFOEmpty(void); 00320 ft_uint32_t WriteBlockRAM(ft_uint32_t Add, const ft_uint8_t *buff, ft_uint32_t count); 00321 00322 00323 ft_void_t Sound_ON(); 00324 ft_void_t Sound_OFF(); 00325 00326 // int Load_jpg(char* filename, ft_int16_t* x_size, ft_int16_t* y_size,ft_uint32_t address); 00327 00328 ft_void_t Calibrate(); 00329 ft_uint8_t read_calibrate_reg(ft_uint8_t i); 00330 ft_uint32_t read_calibrate_reg32(ft_uint8_t i); 00331 ft_void_t read_calibrate(ft_uint8_t data[24]); 00332 ft_void_t write_calibrate(ft_uint8_t data[24]); 00333 ft_void_t write_calibrate32(ft_uint32_t data[6]); 00334 00335 ft_uint32_t color_rgb(ft_uint8_t red,ft_uint8_t green, ft_uint8_t blue); 00336 ft_uint32_t clear_color_rgb(ft_uint8_t red,ft_uint8_t green, ft_uint8_t blue); 00337 00338 void SetBacklight(ft_uint16_t brightness); 00339 00340 void Tag(ft_uint8_t s); 00341 void ClearTag(ft_uint8_t s); 00342 void TagMask(ft_uint8_t mask); 00343 void BitmapLayoutH(ft_uint8_t linestride, ft_uint8_t height); 00344 void BitmapSizeH(ft_uint8_t width, ft_uint8_t height); 00345 00346 ft_void_t SetLoadAddress(ft_uint32_t address); 00347 ft_void_t SetBitmapCount(ft_uint8_t count); 00348 ft_uint32_t GetBitmapAddress(ft_uint8_t count); 00349 void SetThemeDefaultColor(void); 00350 void SetThemeColor(ft_uint32_t c); 00351 void ShowCalibrationInCode(void); 00352 void SetOrientation(ft_uint8_t orientation); 00353 void ShowBitmap(ft_uint8_t bitmap, ft_int16_t fmt, ft_uint16_t x, ft_uint16_t y, ft_uint16_t width, ft_uint16_t height); 00354 void ShowBitmapAtAddress(ft_uint32_t addr, ft_int16_t fmt, ft_uint16_t x, ft_uint16_t y, ft_uint16_t width, ft_uint16_t height); 00355 int GetImageIndexFromName(char *name); 00356 int ResetInflateFileBitmap(void); 00357 uint32_t GetRamUsage(void); 00358 uint16_t GetRamNoOfBitmaps(void); 00359 int LoadInflateFileBitmap(char *name, uint16_t fmt, uint16_t w, uint16_t h); 00360 int ShowBitmapByName(char *name, uint16_t w, uint16_t h); 00361 uint16_t GetTouchedTag(void); 00362 uint16_t GetTouchedTag(uint8_t point_number); 00363 uint8_t GetTag(void); 00364 uint16_t GetTagX(void); 00365 uint16_t GetTagY(void); 00366 uint8_t GetTouchTag(void); 00367 uint16_t GetTouchTagX(void); 00368 uint16_t GetTouchTagY(void); 00369 uint16_t GetTouchConfig(void); 00370 void SetTouchConfig(uint16_t TouchConfigVal); 00371 00372 void screenShot(void); 00373 00374 int LoadRawFile(ft_uint32_t address, const char *filename); 00375 int LoadInflateFile(ft_uint32_t address, const char *filename); 00376 int LoadImageFile(ft_uint32_t address, const char *filename); 00377 ft_void_t SetEndAddressForSize(ft_uint32_t addr); 00378 00379 ft_void_t Wr8s(ft_uint32_t addr, ft_uint8_t *buffer, ft_uint8_t length); 00380 00381 }; // end of class 00382 00383 #endif /*FT_GPU_HAL_H*/
Generated on Tue Jul 19 2022 11:45:29 by
1.7.2
